Вопрос или проблема
Я получаю следующее предупреждение от AWS Inspector на машине с Ubuntu:
CVE-2024-6345 – setuptools, ID находки setuptools:
arn:aws:inspector2:eu-west-1:355370908234:finding/348da83463e3a933ffccae7dcffeb1cc
Уязвимость в модуле package_index пакета pypa/setuptools
версий до 69.1.1 позволяет выполнять удаленный код через его
функции загрузки. Эти функции, которые используются для загрузки
пакетов из URL, предоставленных пользователями или полученных из
серверов индекса пакетов, подвержены внедрению кода. Если эти
функции открыты для пользовательского ввода, такого как URL
пакетов, они могут выполнять произвольные команды на системе. Проблема
устранена в версии 70.0.
Насколько я понимаю, теперь мне нужно установить версию 70. Я предполагаю, что это связано с предустановленной системной версией python/pip на моей машине. Как правильно обновить setuptools
для системной установки python на Ubuntu?
Запуск этого:
sudo -H pip3 install --upgrade setuptools
выдает известную ошибку externally-managed-environment
:
ошибка: externally-managed-environment
× Эта среда управляется извне ╰─> Чтобы установить пакеты Python
системно, попробуйте apt install
python3-xyz, где xyz — это пакет, который вы пытаетесь
установить…Смотрите /usr/share/doc/python3.12/README.venv для получения дополнительной информации.
примечание: Если вы считаете, что это ошибка, пожалуйста, свяжитесь с поставщиком вашей установки Python
или дистрибутивом ОС. Вы можете переопределить это, рискуя сломать вашу установку Python или ОС,
передав –break-system-packages. подсказка: Смотрите PEP 668 для детальной спецификации.
Эта команда:
$ sudo apt install python3-setuptools
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
python3-setuptools уже является самой новой версией (68.1.2-2ubuntu1.1).
python3-setuptools установлен вручную.
0 обновлено, 0 ново установлено, 0 к удалению и 2 не обновлено.
не устанавливает v70, говорит, что 68 — это самая последняя версия. Однако на pypi указано, что самая последняя версия setuptools — 75, мне интересно, почему apt-пакет так сильно отстает?
Я мог бы использовать опцию --break-system-packages
, чтобы установить setuptools
напрямую через pip
, а не через apt
, но я хотел бы этого избежать
Debian/Ubuntu внедряют исправления безопасности в свои упакованные версии, но они не обновляют их иначе, чтобы избежать потенциально разрушающих изменений.
Список изменений для python-setuptools_69.1.2-2ubuntu1.1 говорит, что исправление вашей проблемы уже включено.
* ОБНОВЛЕНИЕ БЕЗОПАСНОСТИ: удаленное выполнение кода через функции загрузки пакетов
- debian/patches/CVE-2024-6345.patch: модернизировать и исправить обработку VCS,
чтобы предотвратить внедрение кода в setuptools/package_index.py и
setuptools/tests/test_packageindex.py. Также обновить setup.cfg, чтобы
включить новые тестовые зависимости.
- CVE-2024-6345
Вы можете увидеть список изменений в /usr/share/doc/python3-setuptools/changelog.Debian.gz
или через ссылку “Просмотреть файл изменений” на странице пакета на Launchpad.
Ответ или решение
Как обновить системную установку Python (setuptools) в Ubuntu
Обновление Python-пакетов, таких как setuptools
, в Ubuntu может вызывать затруднения из-за особенностей в управлении пакетами. В вашем случае вы столкнулись с уязвимостью CVE-2024-6345, упомянутой AWS Inspector, которая была устранена в версии 70.0 setuptools
. Давайте разберем, как безопасно и эффективно обновить этот пакет.
1. Понимание проблемы
Вы уже установили последний доступный через apt
вариант python3-setuptools
(68.1.2-2ubuntu1.1), что не решает проблему, поскольку актуальная версия пакета в PyPI — 75. Упомянутая вами ошибка externally-managed-environment
при использовании pip указывает на то, что система управляет средой Python, и это может привести к конфликтам и нестабильности.
2. Установка обновленной версии setuptools
Для обновления setuptools
до версии 70.0 или более новой по сравнению с версией в apt
, вам необходимо воспользоваться следующими подходами:
2.1. Использование apt
для обновления системы
Перед началом любых действий убедитесь, что ваша система актуальна. Запустите:
sudo apt update
sudo apt upgrade
Если обновления не решают проблему, рассмотрите возможность применения обновления через pip
. Однако делать это следует осторожно, избегая потенциальных конфликтов:
2.2. Установка через pip
с использованием флага --user
Если вы действительно хотите использовать pip для обновления setuptools
, вы можете установить пакет локально для вашего пользователя, что не повлияет на системные библиотеки:
pip install --user --upgrade setuptools
Этот подход позволит вам использовать последнюю версию setuptools
, избегая конфликтов с системными пакетами.
2.3. Создание виртуального окружения
Другим более безопасным вариантом является использование виртуального окружения:
-
Установите
python3-venv
, если он не установлен:sudo apt install python3-venv
-
Создайте новое виртуальное окружение:
python3 -m venv myenv
-
Активируйте его:
source myenv/bin/activate
-
Обновите
setuptools
в этом окружении:pip install --upgrade setuptools
Это позволит вам иметь независимую версию setuptools
без риска повредить системные компоненты.
3. Проверка версии setuptools
После обновления вам следует проверить актуальную версию setuptools
, чтобы убедиться, что изменения вступили в силу:
pip show setuptools
Этот вывод даст вам информацию о текущей версии пакета.
Заключение
Нахождение и устранение уязвимостей, таких как CVE-2024-6345, является важной частью управления безопасностью систем. Учитывая, что стандартные репозитории Ubuntu могут не всегда предлагать самые свежие версии пакетов, рекомендуется использовать виртуальные окружения для разработки и тестирования, а также следить за безопасностью устанавливаемых пакетов. Если вы беспокоитесь о стабильности вашей системы, избегайте использования флага --break-system-packages
и придерживайтесь предложенных выше безопасных методов обновления.