Administratorzy repozytorium pakietów Packagist ujawnili szczegóły ataku, w wyniku którego kontrolę nad nimi przejęły konta opiekunów 14 bibliotek PHP, w tym popularnych pakietów, takich jak instantiator (łącznie 526 milionów instalacji, 8 milionów instalacji miesięcznie, 323 pakiety zależne), sql-formatter (łącznie 94 miliony instalacji, 800 109 instalacji miesięcznie, 73 pakietów zależnych), doctrine-cache-bundle (łącznie 500 miliony instalacji, 348 20 instalacji miesięcznie, 400 pakietów zależnych) i rcode-detector-decoder (łącznie 66 milionów instalacji, XNUMX XNUMX instalacji miesięcznie, XNUMX pakietów zależnych).
Po włamaniu się na konta atakujący zmodyfikował plik composer.json, dodając w polu opisu projektu informację, że szuka pracy związanej z bezpieczeństwem informacji. Aby dokonać zmiany w pliku composer.json, atakujący zastąpił adresy URL oryginalnych repozytoriów linkami do zmodyfikowanych forków (Packagist udostępnia metadane tylko z linkami do projektów utrzymywanych w GitHub; podczas instalacji za pomocą polecenia „composer install” lub „composer update” pakiety są pobierane bezpośrednio z GitHub). Na przykład w przypadku pakietu acmephp powiązane repozytorium zostało zmienione z acmephp/acmephp na neskafe3v1/acmephp.
Najwyraźniej atak nie został przeprowadzony w celu popełnienia złośliwych działań, ale jako demonstracja niedopuszczalności nieostrożnego podejścia do używania powtarzających się danych uwierzytelniających na różnych stronach. Jednocześnie, wbrew ustalonej praktyce „etycznego hakowania”, atakujący nie powiadomił wcześniej deweloperów bibliotek i administratorów repozytoriów o eksperymencie. Później atakujący powiedział, że po tym, jak uda mu się zdobyć pracę, opublikuje szczegółowy raport na temat metod użytych w ataku.
Według danych opublikowanych przez administratorów Packagist, wszystkie konta, które zarządzały naruszonymi pakietami, używały łatwych do odgadnięcia haseł bez włączonego uwierzytelniania dwuskładnikowego. Twierdzi się, że zhakowane konta używały haseł, które były używane nie tylko w Packagist, ale także w innych usługach, których bazy haseł zostały wcześniej naruszone i udostępnione publicznie. Inną opcją uzyskania dostępu mogło być przechwycenie adresów e-mail właścicieli kont, które były powiązane z wygasłymi domenami.
Zagrożone pakiety:
- acmephp/acmephp (124,860 XNUMX instalacji na całe życie)
- acmephp/core (419,258)
- acmephp/ssl (531,692)
- doktryna/doctrine-cache-bundle (73,490,057)
- doktryna/moduł-doktryny (5,516,721)
- doktryna/doktryna-mongo-odm-module (516,441)
- doktryna/doktryna-orm-module (5,103,306)
- doktryna/instancjator (526,809,061)
- książka wzrostu/książka wzrostu (97,568
- jdorn/pamięć podręczna systemu plików (32,660)
- jdorn/sql-formatter (94,593,846)
- Khanamiryan/qrcode detektor-dekoder (20,421,500 XNUMX XNUMX)
- obiekt-kalisteniczny/zasady-kalisteniczne-phpcs (2,196,380)
- tga/simhash-php, tgalopin/simhashphp (30,555)
Źródło: opennet.ru
