TGViewer
Python/ django Python/ django @pythonl · 58.6K subscribers
Post #4346 8.92K
👩‍💻 В PyPI внедрил новую систему проверки подлинности пакетов

Разработчики репозитория Python-пакетов PyPI (Python Package Index) сообщили о введении нового механизма цифровой аттестации для проверки подлинности загружаемых пакетов.

Этот механизм заменил прежнюю систему верификации с помощью PGP-подписей. Основное отличие заключается в том, что теперь публикацию пакета подтверждает не сам разработчик, а третья сторона (каталог пакетов), основываясь на проверке через внешнего провайдера OpenID Connect. Это может включать проверку соответствия публикуемого пакета с исходным репозиторием на платформах вроде GitHub или GitLab.

Новая система решает проблемы, присущие старому методу верификации через PGP-подпись, который уже считался устаревшим. Основная трудность заключалась в проверке принадлежности открытых PGP-ключей их владельцам. Из 1069 PGP-ключей, использовавшихся с 2020 года для подписания пакетов в PyPI, 29% ключей вообще не были найдены на крупных публичных серверах ключей, а 35% оказались невозможными для подтверждения в процессе аудита. При этом подтвержденные 36% ключей покрывали всего 0.3% от общего числа подписанных файлов.

В рамках новой системы цифровые подписи формируются с использованием временных эфемерных ключей, создаваемых на основании полномочий, подтвержденных провайдером OpenID Connect.

Когда разработчик создает ключ для подписи, он проходит идентификацию через провайдера, который удостоверяет его связь с основным проектом. Эта инфраструктура основана на системах Sigstore и in-toto Attestation Framework.

Одним из преимуществ аттестации является отсутствие зависимости от постоянных PGP-ключей.

Если закрытый ключ теряется или подвергается атаке, все созданные с его помощью подписи становятся ненадежными. Аттестация же связывает подпись с временным токеном, который подтверждает права разработчика в момент загрузки пакета и его соответствие основному репозиторию кода.

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

Для мониторинга подлинности ключей и обнаружения потенциальных угроз в проектах, создающих пакеты, и самом PyPI используется централизованный публичный журнал. Чтобы обеспечить целостность данных и предотвратить изменение информации задним числом, в нем применяется структура «дерева Меркла» (Merkle Tree), где каждая ветвь проверяет все подчиненные ветви и узлы посредством древовидной схемы хеширования.

Кроме того, стоит упомянуть обнаруженный в каталоге PyPI вредоносный пакет под названием «fabrice», который использовал технику тайпсквоттинга – назначение схожего имени, различающегося несколькими символами (например, exampl вместо example, djangoo вместо django, pyhton вместо python и так далее), чтобы замаскироваться под популярную библиотеку «fabric».

Эта библиотека насчитывает около 201 миллиона загрузок (около 7 миллионов за последний месяц). Вредоносный пакет оставался незамеченным с 2021 года и успел набрать более 37 тысяч загрузок.

Пакет «fabrice» имитировал основную функциональность оригинальной библиотеки, но также содержал код для поиска и передачи ключей доступа к AWS (Amazon Web Services), установки бэкдоров и выполнения определенных скриптов.

Активизация вредоносных компонентов происходила как в операционной системе Linux, так и в Windows. В случае с Linux, файлы, связанные с вредоносной активностью, загружались в каталог ~/.local/bin/vscode.

@pythonl
  • 👍 17
  • ❤ 11
  • 🔥 4
  • 😱 4
More from @pythonl
  1. Oct 8, 2026🦙 Ollaya: запуск моделей принятия решений в стиле Ollama. Скачиваете модель, поднимаете л…
  2. Oct 7, 2026Python 3.15 почти готов: вышел RC3, финальный релиз 9 октября Python 3.15.0rc3 вышел 2 окт…
  3. Oct 6, 2026🐍 Python Workers в Cloudflare вышли в GA Cloudflare официально сделала Python полноценным…
  4. Oct 6, 2026🎇Главная идея DevSecOps: безопасность перестаёт тормозить разработку. Вместо проверок «по…
  5. Oct 6, 2026🐍 Какая зависимость держит ваш Django на старой версии? django-upgrade-report читает зави…
  6. Oct 5, 2026🖥 Python-дайджест недели: PyPy 8 с Python 3.12, отладка None и фреймворки для агентов PyP…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →