PyPI выпускает рекомендации по предотвращению атак, связанных с путаницей в анализаторе ZIP, на установщики пакетов Python

0
Python Package

Индекс пакетов Python (PyPI) объявил о новых ограничениях, направленных на снижение вероятности атак, связанных с путаницей в анализаторе ZIP, которые могут использовать различия в том, как установщики и инспекторы пакетов Python обрабатывают архивы ZIP.

Этот шаг был предпринят в ответ на уязвимости, обнаруженные в таких инструментах, как установщик uv, который демонстрирует иное поведение при извлечении по сравнению с установщиками на основе Python, использующими стандартный библиотечный модуль zipfile.

Защита экосистем питонов

Теперь PyPI отклоняет ZIP-архивы, созданные для эксплуатации этих атак с использованием путаницы, при этом нет никаких доказательств их предыдущей эксплуатации на платформе.

Кроме того, PyPI прекращает поддержку дистрибутивов wheel с некорректными файлами RECORD, призывая сообщество соблюдать более строгие стандарты.

Эта инициатива решает присущие формату ZIP сложности, изначально разработанному в 1989 году для размещения больших архивов на нескольких устройствах хранения, что позволяет добавлять записи без полной перезаписи, что вносит неоднозначность в результаты извлечения.

Python wheels, по сути являющиеся замаскированными архивами ZIP , следуют спецификации формата двоичного распространения, в которой описаны процессы установки, но обработка, специфичная для ZIP, оставляется на усмотрение разработчиков.

Спецификация предлагает распаковку в сайт-пакеты с использованием стандартных инструментов распаковки с сохранением путей, но не накладывает никаких ограничений на функции ZIP, что потенциально позволяет неявно обнаружить неопределенности.

В дополнение к этому файл RECORD в каталоге .dist-info диска wheel содержит список включенных файлов с необязательными контрольными суммами, и установщики должны сверить с ним содержимое архива, в результате чего установка будет прервана в случае обнаружения несоответствий.

Однако многие установщики пропускают эту проверку, просто извлекая файлы (например, unzip) и настраивая ЗАПИСЬ после установки для функциональности удаления.

Такое слабое применение правил исторически допускало нестандартное использование ZIP-архивов без каких-либо последствий, создавая риски, при которых злоумышленники могли пронести вредоносные файлы мимо проверок, используя различия в синтаксических анализаторах.

Защитные меры PyPI

Чтобы противостоять этим угрозам, PyPI применяет строгие проверки загрузки дисков и ZIP-архивов, включая отклонение архивов с недопустимым фреймингом записей, дублирующими именами файлов в заголовках локального файла и центрального каталога, несовпадающими заголовками, конечными данными, несколькими заголовками конца центрального каталога или неверными значениями локатора.

Эти шаги гарантируют, что извлечение будет соответствовать центральному каталогу, что является лучшим методом предотвращения атак, приводящих к путанице, когда анализаторы могут по-разному интерпретировать архивы в зависимости от локальных и центральных заголовков.

PyPI уже использует функцию обнаружения сжатых бомб во время загрузок, что еще больше усиливает безопасность.

Начиная с этого момента специалисты по обслуживанию будут получать по электронной почте предупреждения о загрузках, содержимое ZIP-файлов которых отличается от метаданных RECORD; по истечении шестимесячного льготного периода, заканчивающегося 1 февраля 2026 года, такие загрузки будут полностью отклонены.

Такой поэтапный подход побуждает установщиков внедрять перекрестную проверку RECORD, согласующуюся с надежной обработкой ZIP-файлов модуля CPython zipfile.

Анализ 15 000 самых популярных пакетов Python по количеству загрузок выявил минимальные проблемы: из 13 468 проектов по публикации Wheel-Publishing в 13 460 не обнаружено проблем с записями или архивами ZIP, и лишь в нескольких из них обнаружены отсутствующие файлы, несоответствия или дубликаты.

Такой низкий уровень заболеваемости подтверждает уверенность PyPI в возможности внедрения изменений без масштабных сбоев, хотя и за пределами этой группы встречаются более редкие проблемы.

Согласно отчету , PyPI не рекомендует пользователям предпринимать немедленных действий в связи с этими мерами, но рекомендует обновлять инструменты установщика для повышения уровня безопасности.

Специалисты по обслуживанию проектов, сталкивающиеся с ошибками загрузки, должны усовершенствовать процессы сборки или сообщать о проблемах с инструментами, в то время как разработчикам установщиков настоятельно рекомендуется придерживаться стандартов ZIP, уделять первоочередное внимание проверкам центрального каталога и применять проверку RECORD для оповещения о неисправных дисках.

В совокупности эти меры укрепляют экосистему пакетов Python, защищая ее от развивающихся угроз на базе ZIP, способствуя стандартизации и устойчивости.

About The Author

Добавить комментарий