Python Package Index (PyPI) запустил новую систему Project Archival, которая позволяет разработчикам архивировать свои проекты, четко обозначая, что обновлений больше не будет. Это поможет пользователям принимать осознанные решения о зависимостях, избегая устаревшего или потенциально небезопасного кода.
Архивированные проекты останутся доступными для скачивания, но на их страницах появится предупреждающее уведомление о статусе поддержки. Это особенно важно для безопасности цепочки поставок: часто злоумышленники перехватывают заброшенные проекты и внедряют в них вредоносные обновления, которые спустя годы могут навредить тысячам пользователей.
Баннер об архивировании проекта (PyPI)
Помимо защиты пользователей, новая функция снижает нагрузку на разработчиков, устраняя лишние запросы в поддержку и уточняющие вопросы о статусе проекта. По даннымTrailofBits, новая функция позволяет владельцам проектов самостоятельно помечать их как архивированные. PyPI рекомендует выпускать финальную версию перед архивированием, где можно указать причины такого решения, однако это остается на усмотрение разработчиков.
Функция архивирования в настройках проекта (PyPI)
Если работа над проектом возобновится, архив можно снять в любой момент. Для реализации функции используется модель LifecycleStatus, изначально разработанная для карантина проектов. В системе предусмотрена возможность переключения между различными статусами, а PyPI планирует в будущем добавить дополнительные метки вроде “deprecated” (устаревший), “feature-complete” (полнофункциональный) и “unmaintained” (неподдерживаемый). Это поможет пользователям быстрее ориентироваться в состоянии зависимостей.
В архивированных проектах появится баннер, предупреждающий разработчиков о необходимости искать активные альтернативы, что позволит избежать зависимости от пакетов, которые больше не поддерживаются, и снизит вероятность атак через устаревшие библиотеки.
Одним из рисков в экосистеме open source является практика захвата старых проектов. Злоумышленники берут под контроль заброшенные библиотеки и внедряют вредоносный код в последующие обновления. Подобное уже случалось с рядом популярных пакетов, что приводило к компрометации тысяч систем. Иногда разработчики удаляют проекты полностью, что также создает угрозу, например, Revival Hijack – метод атаки, когда хакер занимает освободившееся имя пакета и загружает вредоносный клон.