Каталогът PyPI внедри нова система за проверка на автентичността на пакетите

Разработчиците на Python пакети PyPI (Python Package Index) обявиха внедряването на механизъм за цифрова атестация за удостоверяване на автентичността на публикуваните пакети, който заменя верификацията с PGP подписи. Основната разлика на атестацията е, че публикуването на пакет се удостоверява не от разработчика, а от трета страна (каталог на пакетите) след потвърждение на достоверността на публикацията чрез външен доставчик OpenID Connect (например, след проверка, че публикуваният пакет съответства на свързания с него репозиторий в GitHub или GitLab).

Системата за атестация отстранява недостатъците, присъщи на механизма за верификация с PGP подписи, който преди това беше обявен за остарял в PyPI. Това решение беше прието поради проблеми с удостоверяването на принадлежността на разработчиците към отворените PGP ключове, използвани за удостоверяване на цифровите подписи — от 1069 PGP ключа, използвани от 2020 година за формиране на подписи в PyPI, 29% от отворените ключове липсваха в големи публични сървъри ключове, а 35% от ключовете не можаха да бъдат потвърдени по време на одита. При това потвърдените 36% PGP ключове обхващаха едва 0.3% от всички подписани файлове.

В новата система използваните за заверяване на пакети подписи се генерират с помощта на краткоживеещи ефермерни ключове, генерирани на базата на пълномощия, потвърдени от доставчиците на OpenID Connect. В момента на генериране на ключовете, необходими за създаване на цифровата подпис, разработчикът се идентифицира чрез доставчик на OpenID, който потвърджава връзката му с основния проект. Инфраструктурата за цифрова атестация е изградена с помощта на системата Sigstore и инструментариума in-toto Attestation Framework.

Сред предимствата на атестацията е отсъствието на привързаност към постоянни PGP-ключове — загубата или компрометиране на частния ключ разрушава доверието в подписите, създадени въз основа на него, докато при атестация подписът се формира с привързаност към токена, потвърдващ правомощията в момента на качването на пакета и връзката между пакета и основния репозиторий с кода. Например, при публикуването на пакет, подготвен чрез GitHub Action, атестацията определя проверима и потвърдена връзка между качения файл в PyPI, репозитория, процеса на работа и хеша на комита, на базата на който е формиран пакетът.

Каталогът 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.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster