PyPI запретил добавлять файлы в релизы старше 14 дней
Сет Ларсон, приглашённый специалист по безопасности 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
Комментарии
Войдите, чтобы комментировать.