Исследователь под ником neskafe3v1 признался, что взломал 14 библиотек в Packagist, некоторые из которых насчитывают сотни миллионов установок. Взломщик рассказал СМИ, что таким необычным способом он пытается найти работу.

Напомню, что Packagist — это не пакетный менеджер, но хостинг PHP-пакетов. Это дефолтный хостинг Composer, и каждый месяц Composer используется для загрузки более 2 миллиардов пакетов. По сути, Packagist представляет собой один из крупнейших хостинговых сервисов в экосистеме PHP в целом.

Издание Bleeping Computer, с которым связался neskafe3v1, сообщает, исследователь успел скомпрометировать следующие пакеты:

Название пакета Количество установок
acmephp/acmephp 124 860
acmephp/core 419 258
acmephp/ssl 531 692
doctrine/doctrine-cache-bundle 73 490 057
doctrine/doctrine-module 5 516 721
doctrine/doctrine-mongo-odm-module 516 441
doctrine/doctrine-orm-module 5 103 306
doctrine/instantiator 526 809 061
growthbook/growthbook 97 568
jdorn/file-system-cache 32 660
jdorn/sql-formatter 94 593 846
khanamiryan/qrcode-detector-decoder 20 421 500
object-calisthenics/phpcs-calisthenics-rules 2 196 380
tga/simhash-php (aka tgalopin/simhashphp) 30 555

 

Исследователь предоставил журналистам доказательства того, что в понедельник, 1 мая 2023 года, страницы Packagist для перечисленных выше пакетов были изменены, и стали указывать на  фейковый репозиторий самого neskafe3v1, вместо нужных репозиториев на GitHub.

Например, как показано на скриншоте выше: на странице пакета acmephp ссылка на GitHub была изменена на репозиторий исследователя (вместо github.com/acmephp/acmephp).

Издание объясняет, что процесс публикации пакетов в Packagist несколько отличается от публикации в других опенсорсных репозиториях, таких как npm или PyPI. Так, разработчик просто создает учетную запись на Packagist.org и «прикрепляет» ссылку на свой репозиторий на GitHub для определенного пакета. После этого сканер Packagist посещает этот репозиторий и собирает все данные для отображения пакета на странице Packagist.

Когда разработчик запускает Composer с помощью команд install или update, его экземпляр Composer сначала ищет пакеты локально, а затем по умолчанию ищет нужную библиотеку в Packagist и получает URL для нужного пакета на GitHub. После этого содержимое пакета загружается из репозитория на GitHub, указанного на странице пакета в Packagist.

Таким образом, получается, что изменив страницы в Packagist для конкретных пакетов, исследователь, по сути, вмешался в процесс установки, используемый в средах Composer. То есть разработчики получали контент из репозиториев neskafe3v1 на GitHub, а не из настоящих репозиториев проектов.

Для своей демонстрации neskafe3v1 просто изменил файл composer.json в перечисленных пакетах, добавив в него сообщение: «Pwned by neskafe3v1. Ищу работу на позицию Application Security, Penetration Tester, Cyber Security Specialis».

Это было проделано через форк исходного репозитория и изменение поля description в файле composer.json, а изменения в итоге были зафиксированы в форкнутом репозитории. Отмечается, что neskafe3v1 не стал мержить изменения в исходные репозитории, так как для этого потребовался бы дополнительный доступ и, возможно, проверка со стороны сопровождающих.

Исследователь отказался раскрыть журналистам точную технику захвата пакетов, но отметил, что это не какая-то 0-day уязвимость, а достаточно известный способ. Издание предполагает, что neskafe3v1 каким-то образом получил доступ к учетным записям сопровождающих и после подменил URL-адреса на свои форки.

«Как видите, я ищу работу, поэтому я опубликую отчет после того, как меня наймет какая-нибудь компания. Пока я не преуспел, так что говорить не о чем», — рассказал neskafe3v1 журналистам Bleeping Computer, назвав свои действия «рекламой самого себя как сотрудника».

Разработчики Packagist сообщают, что neskafe3v1 не уведомлял их о своем «эксперименте», но они не обнаружили какого-либо вредоносного воздействия на платформу в результате произошедшего. Также они подтвердили, что захват пакетов действительно произошел в результате компрометации учетных записей их сопровождающих.

«Насколько нам известно, произошедшее не использовалось в каких-либо вредоносных целях и ограничилось несколькими старыми учетными записями с небезопасными паролями и отключенной двухфакторной аутентификацией, — сообщил изданию Нильс Адерман из Packagist.org, который также является одним из первых разработчиков Composer. — Похоже, все четыре учетные записи использовали пароли, ранее “утекшие” в ходе других инцидентов на других платформах. Пожалуйста, не используйте одни и те же пароли повторно».

В настоящее время администраторы Packagist уже обнаружили все скомпрометированные аккаунты, отключили доступ к ним и восстановили прежние значения URL-адресов на страницах пакетов.

В блоге администраторы просят исследователей ответственно сообщать о найденных ошибках и уязвимостях:

«Если вы являетесь ИБ-исследователем, вам известно об уязвимости Packagist.org или вы хотели бы провести исследование на Packagist.org, мы просим вас скоординировать это с нами, чтобы избежать негативного воздействия на пользователей и ответственно раскрыть информацию об уязвимостях».

 

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    2 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии