PyPI запретил добавлять файлы в релизы старше 14 дней

· Безопасность
Индекс пакетов Python вводит ограничение: новые файлы нельзя загружать в релизы, которым больше двух недель. Мера призвана защитить старые версии от «отравления» при компрометации токенов и рабочих процессов.

cover.svg

Сет Ларсон, приглашённый специалист по безопасности Python Software Foundation, объявил, что Python Package Index (PyPI) теперь отклоняет загрузку новых файлов в релизы, опубликованные более 14 дней назад. Ограничение должно предотвратить «отравление» старых релизов в случае, если токены публикации или CI-процессы проекта окажутся скомпрометированы.

Почему это понадобилось

Сама идея обсуждалась ещё с января 2024 года — в рамках работы над PEP 740 (цифровые аттестации). Разговор возобновился в марте 2026 года, после компрометации популярных пакетов LiteLLM и Telnyx. Причиной взлома стала «изменяемая ссылка» (mutable reference) в том, как эти проекты использовали GitHub Action для Trivy: закрепление на подвижном теге позволило подменить исполняемый код. LWN подробно писал об инциденте с LiteLLM в марте.

Почему тянули с решением

Первоначально обсуждение застопорилось: некоторые проекты сознательно полагались на возможность дозагрузки файлов в уже опубликованные релизы. Так они добавляли поддержку новых версий Python к старым выпускам — например, выкладывали свежее колесо (wheel) для только что вышедшей версии интерпретатора, не поднимая номер релиза.

Чтобы оценить, насколько болезненным окажется запрет, базу PyPI прогнали по проектам, публиковавшим новые файлы в старые релизы, — с разбивкой по числу дней, прошедших с момента выпуска. Затем отдельно проверили колёса cp314 (для Python 3.14) среди 15 000 самых популярных пакетов. Выяснилось, что лишь 56 проектов из 15 000 выкладывали совместимое с 3.14 колесо позже, чем через 14 дней после релиза. Иными словами, реальных сценариев, которые сломает нововведение, оказалось исчезающе мало — и выигрыш в безопасности их перевешивает.

Впрочем, не все считают порог удачным. В комментариях под анонсом прозвучало ироничное предложение: раз уж речь о безопасности, окно стоило бы сократить не до 14 дней, а до полутора часов — хотя бы для того, чтобы сопровождающие дистрибутивов не оставались с сюрпризом, когда мейнтейнер по-тихому подменяет архив вскоре после релиза из-за «найденной в последний момент ошибки», не меняя при этом номер версии.


Источник: LWN.net

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.