#python #linux #pip #dependencies #conda
#python #linux #pip #зависимости #conda
Вопрос:
Давайте предположим сценарий, в котором проверка безопасности выявила высокую уязвимость в определенной системной библиотеке Linux.
Как найти все пакеты python (из многих установленных с помощью pip
и conda
), которым требуется эта системная библиотека?
Другими словами, pipdeptree
, но возвращая системные библиотеки.
- Подробная информация. В качестве формы снижения рисков мы собираемся временно удалить затронутые пакеты python, чтобы избавиться от уязвимой системной библиотеки. Мы можем быть уверены, что системная библиотека не требуется для корректной работы базовой операционной системы, поскольку уязвимость отсутствует в базовом образе, содержащем только операционную систему. Мы не можем оставить уязвимую библиотеку установленной, а просто отключить / заблокировать — проверка безопасности во время сборки должна проходить чисто (т. Е. Без Установленной библиотеки).
Комментарии:
1. Просто сделайте
chmod a-r <path-to-lib>
2. Хорошая идея для предотвращения доступа (возможно, выполнение тоже подойдет?) в системную библиотеку. Это было бы эффективно с точки зрения безопасности, но все равно может не позволить нам пройти проверку безопасности (которая выполняется на уровне контейнера Docker после создания образа, но до его запуска).
3. Проблема с
chmod
решением заключается в том, что сканер безопасности будет запускать контейнер от имени пользователя root, поэтому, даже если мы удалили все три разрешения (chmod -r-w-x
), сканер от имени пользователя root все равно сохранит доступ кcat
содержимому файла и, таким образом, сможет найти уязвимость, даже если обычные пользователи заблокированы от доступа.доступ к библиотеке.4. переименуйте библиотеку.
5. Вопрос о поиске всех системных зависимостей пакета python по-прежнему остается без ответа, но я нашел безопасное решение в моей конкретной ситуации, используя исправленную версию system lib, установленную conda.
Ответ №1:
Оказалось, что у этого конкретного пакета был conda
устанавливаемый пакет python с тем же именем и в зависимости от уязвимой системной библиотеки, в которой системная зависимость уже была исправлена.
Итак, первым шагом было обновление пакета python с помощью conda
, который также обновил системный двоичный файл в conda-
определенной папке ( /opt/conda/bin/<package>
):
conda install -y <package>
Однако та же библиотека в расположении на уровне пользователя ( /usr/bin/
) все еще была уязвима, поэтому мне пришлось перезаписать ее conda
исправленной версией (я проверил разницу в исходном репозитории библиотеки, чтобы убедиться, что исправление было незначительным):
rm /usr/bin/<package> amp;amp; ln -s /opt/conda/bin/<package> /usr/bin/<package>
Более того, поскольку начальная проверка безопасности была запущена также до того, как можно было выполнить исправление conda, мне пришлось добавить CVE в белый список (но только для этого образа docker, охваченного начальной проверкой, а не для окончательного изображения, отсканированного после исправления).