13.04.2024

Перехвачен контроль над 14 PHP-библиотками в репозитории Packagist

Администраторы репозитория пакетов Packagist раскрыли сведения об атаке, в результате которой был захвачен контроль над учётными записями сопровождающих 14 PHP-библиотек, в числе которых такие популярные пакеты, как instantiator (526 млн установок всего, 8 млн установок за месяц, 323 зависимых пакета), sql-formatter (94 млн установок всего, 800 тысяч за месяц, 109 зависимых пакетов), doctrine-cache-bundle (73 млн установок всего, 500 тысяч за месяц, 348 зависимых пакетов) и rcode-detector-decoder (20 млн установок всего, 400 тысяч за месяц, 66 зависимых пакетов).

После компрометации учётных записей атакующий изменил файл composer.json, добавив в поле с описанием проекта информацию том, что он ищет работу, связанную с информационной безопасностью. Для внесения изменения в файл composer.json атакующий заменил URL оригинальных репозиториев ссылками на модифицированные форки (в Packagist предоставляются только метаданные со ссылками на проекты, развиваемые на GitHub, при выполнении установки командой «composer install» или «composer update» пакеты загружаются напрямую с GitHub). Например, для пакета acmephp привязанный репозиторий был заменён с acmephp/acmephp на neskafe3v1/acmephp.

Судя по всему атака была произведена не для совершения вредоносных действий, а в качестве демонстрации недопустимости беспечного отношения к использованию повторяющихся учётных данных на разных сайтах. При этом атакующий вопреки сложившейся практике «этических взломов» заранее не уведомил разработчиков библиотек и администраторов репозитория о проводимом эксперименте. Позднее атакующий сообщил, что после того как ему удастся получить работу он опубликует детальный отчёт об использованных в атаке методах.

По опубликованным администраторами Packagist данным, во всех учётных записях, управлявших скомпрометированными пакетами, использовались простые для подбора пароли без включения двухфакторной аутентификации. Утверждается, что во взломанных учётных записях использовались пароли, применявшиеся не только в Packagist, но и в других сервисах, базы паролей которых были ранее скомпрометированы и попали в публичный доступ. Как вариант получения доступа также мог использоваться захват email владельцев учётных записей, которые были привязаны к просроченным доменам.

Скомпрометированные пакеты:

  • 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, tgalopin/simhashphp (30,555)

Источник: https://www.opennet.ru/opennews/art.shtml?num=59075 Источник.