W popularnym pakiecie gem , który ma łącznie 113 milionów pobrań, wstrzyknięcie złośliwego kodu (CVE-2019-15224), który ładował wykonawcze komendy i wysyłał informacje na zewnętrzny host. Atak miał miejsce poprzez konto dewelopera rest-client w repozytorium rubygems.org, po czym przestępcy opublikowali 13 i 14 sierpnia wersje 1.6.10-1.6.13, które zawierały złośliwe zmiany. Do zablokowania złośliwych wersji zdążyło je pobrać około tysiąca użytkowników (atakerzy, aby nie przyciągać uwagi, wydali aktualizacje starych wersji).
Złośliwa zmiana nadpisuje metodę „#authenticate” w klasie
Identity, co prowadzi do tego, że każde wywołanie metody powoduje wysłanie podanego podczas próby uwierzytelnienia adresu e-mail i hasła na hosta przestępców. Dzięki temu przechwytywane są dane logowania użytkowników usług korzystających z klasy Identity, które zainstalowały podatną wersję biblioteki rest-client, która jako zależność w wielu popularnych pakietach Ruby, w tym ast (64 mln pobrań), oauth (32 mln), fastlane (18 mln) i kubeclient (3.7 mln).
Ponadto do kodu dodano backdoor, który umożliwia wykonanie dowolnego kodu Ruby przez funkcję eval. Kod jest przesyłany przez Cookie, opatrzone kluczem przestępcy. Aby informować przestępców o zainstalowaniu złośliwego pakietu, na zewnętrzny host wysyłany jest URL systemu ofiary oraz zestaw informacji o środowisku, takich jak zapisane hasła do baz danych i usług chmurowych. Z użyciem wspomnianego złośliwego kodu zarejestrowano próby ładowania skryptów do wydobywania kryptowalut.
Po przeanalizowaniu złośliwego kodu stwierdzono, że podobne zmiany występują także w w Ruby Gems, które nie zostały przechwycone, a specjalnie przygotowane przez przestępców na podstawie innych popularnych bibliotek o podobnych nazwach, w których myślnik został zastąpiony podkreślnikiem lub odwrotnie (na przykład na podstawie utworzono złośliwy pakiet cron_parser, a na podstawie utworzono złośliwy pakiet doge-coin). Problematyczne pakiety:
- : 4.2.2, 4.2.1
- : 0.0.6, 0.0.7
- : 1.18.0
- : 1.0.2
- : 0.5.5
- : 4.3.3
- : 0.0.3
- : 0.2.8
- : 1.0.1
- : 1.0.12, 1.0.13, 0.1.4
Pierwszy złośliwy pakiet z tej listy został opublikowany 12 maja, ale większość pojawiła się w lipcu. Łącznie wskazane pakiety zostały pobrane około 2500 razy.
Źródło: opennet.ru
