Менеджеры зависимостей усилили защиту после инцидента eMudhra
Hex, Composer, pnpm, uv и rebar3 обновили проверки зависимостей, токенов и сертификатов. Изменения затронули также sbt и GitHub Actions.
В конце октября сразу несколько инструментов управления зависимостями и сборки получили обновления безопасности. Изменения затронули проверку зафиксированных пакетов, защиту учётных данных, безопасную распаковку архивов и доверие к сертификатам после инцидента с eMudhra.

Hex расширил контроль зафиксированных зависимостей
Выпущенный 23 октября Hex 2.6 позволяет отдельно разрешать конкретные предупреждения безопасности, причины отзыва пакета или обход минимального периода ожидания. Такое исключение действует только для указанного условия и не отключает остальные ограничения политики.
Команда mix hex.audit --policy проверяет уже зафиксированные зависимости. Настройка policy_enforce_lock: true включает проверку при получении и обновлении пакетов. Если зависимость нарушает политику, Hex остановит процесс до записи lock-файла и загрузки пакетов. При этом минимальный возраст релиза такой проверкой не учитывается.
Изменился и механизм аутентификации в CI. Ключ организации теперь обменивается на токен, действующий не более 30 минут, а на диске сохраняется только этот токен. Обмен необходимо выполнять перед загрузкой зависимостей. Старые пользовательские ключи для репозиториев организаций перестанут работать 21 января 2027 года.
Composer исправил утечки и добавил задержку новых релизов
Стабильный Composer 2.11.0 вышел 29 октября. В релиз вошли исправления из предварительной версии, опубликованной 22 октября, а также дополнительные меры защиты от утечек.
Composer получил механизм задержки установки недавно опубликованных версий. По умолчанию он отключён, а срок ожидания задаёт команда. На Packagist возраст версии определяется временем её публикации в индексе — автор пакета изменить это значение не может. Задержка применяется при выборе версий, но установка по готовому lock-файлу сохраняет закреплённые зависимости. Под неё попадают и исправления уязвимостей, поэтому для срочного обновления ожидание можно однократно отключить.
Инструмент больше не отправляет заголовки с учётными данными на чужие серверы с похожим доменным именем. Запрет загрузки без шифрования теперь распространяется также на некорректно оформленные адреса и вложенные адреса в Git-зависимостях, которые могли использоваться для обхода проверки.
При создании запускающих обёрток Composer экранирует данные пакета и отклоняет пути с управляющими символами оболочки. Это препятствует выполнению дополнительных команд через подменённые пути или строки с указанием интерпретатора.
Разработчикам также нужно проверить существующие lock-файлы. Токены частных репозиториев могли попасть в composer.lock из глобальной конфигурации и затем оказаться в истории проекта. После обновления файл следует перезаписать. Если токен уже стал доступен посторонним, его необходимо отозвать и заменить.
Обновления pnpm и sbt
В pnpm 11.28.9, выпущенном 27 октября, исправили аварийное завершение при обработке специально сформированного ответа реестра. Кроме того, аудит с настроенными исключениями больше не возвращает успешный код, если уязвимости заданного уровня всё ещё остаются. Теперь проверка завершается ошибкой, которую CI может использовать для остановки сборки.
В системе сборки sbt 28 октября повторно исправили уязвимость распаковки. Подготовленный ZIP- или JAR-архив мог записать файлы за пределами выбранного каталога. Исправления вошли в стабильные версии 1.13.1 и 2.0.12.
Lock-файлы стали доступны для GitHub Actions
С 28 октября lock-файлы Actions доступны всем пользователям. Они закрепляют коммиты подключённых компонентов сборки, включая зависимости, которые эти компоненты вызывают самостоятельно.
В сценарии при этом можно сохранить читаемый тег версии. Механизм включается для отдельных сценариев, а обязательное использование задаётся политикой репозитория или организации. Вызов сценария из другого репозитория требуется закреплять полным хешем коммита. Его внутренние зависимости фиксируются собственным lock-файлом в исходном репозитории.
pnpm, uv и rebar3 обновили корневые сертификаты
Обновления затронули встроенные среды инструментов. В автономных сборках pnpm 11.28.8 и 10.34.8 обновили Node.js и прекратили доверять скомпрометированным сертификатам eMudhra. Обновлять нужно именно автономную сборку pnpm, отдельно от системного Node.js.
В uv 0.13.5 обновлены управляемые сборки CPython 3.11 и новее. Они включают pip 26.2.2 с исправленным набором сертификатов, в том числе для создания виртуальных окружений. После обновления uv нужно выполнить uv python upgrade. Окружения с закреплённой патч-версией Python автоматически не перейдут на новую сборку, а в уже существующих виртуальных окружениях pip потребуется обновить отдельно.
Менеджер пакетов для Erlang rebar3 3.28.0 отказался от Certifi в пользу системного хранилища корневых сертификатов. После обновления следует проверить системный набор доверенных сертификатов. На устройствах без такого хранилища можно явно указать файл с сертификатами.
Сообщить о проблеме в публикации
Обращение принято Обращение будет рассмотрено. По результатам проверки публикация может быть исправлена, дополнена, временно скрыта или удалена.