RubyGems, standardowy menedżer pakietów języka programowania Ruby, tymczasowo wyłączył rejestrację nowych kont po tym, co opisano jako poważny złośliwy atak obejmujący setki pakietów.
Osobom próbującym utworzyć nowe konto RubyGems wyświetlany jest teraz komunikat, że rejestracja nowych kont została tymczasowo wyłączona. Posunięcie to wygląda na środek obronny, podczas gdy RubyGems i jego partnerzy ds. bezpieczeństwa pracują nad opanowaniem incydentu.
Pełny zakres ataku wciąż się rozwija, a tożsamość aktora zagrożeń nie jest obecnie znana. Mend.io, który wspiera bezpieczeństwo RubyGems, poinformował, że więcej szczegółów zostanie ujawnionych po opanowaniu incydentu.
Co się stało?
Według Macieja Mensfelda, starszego menedżera produktu ds. bezpieczeństwa łańcucha dostaw oprogramowania w Mend.io, RubyGems mierzy się z szeroko zakrojoną kampanią złośliwej aktywności. Mensfeld powiedział, że rejestracje zostały wstrzymane, a zaangażowane były setki pakietów, z których część podobno zawierała exploity.
Późniejszy publiczny wpis Mensfelda wskazywał, że z RubyGems usunięto ponad 120 złośliwych pakietów, a kampania wydawała się celować w sam RubyGems, wykorzystując techniki takie jak cross-site scripting i eksfiltracja danych, a nie tylko atakując użytkowników końcowych.
Jest to ważne, ponieważ sugeruje, że atak mógł nie ograniczać się do publikowania złośliwych pakietów do instalacji przez programistów. Zamiast tego atakujący mogli próbować nadużyć ekosystemu pakietów i samej platformy.
Dlaczego RubyGems ma znaczenie
RubyGems to kluczowy element ekosystemu Ruby. Programiści używają go do instalowania, publikowania i zarządzania pakietami Ruby, w tym bibliotekami wykorzystywanymi w aplikacjach webowych, skryptach automatyzacji, narzędziach DevOps i systemach produkcyjnych.
Gdy celem staje się menedżer pakietów, ryzyko wykracza daleko poza jedno konto programisty. Złośliwy pakiet może potencjalnie dotrzeć do:
- stacji roboczych programistów
- potoków CI/CD
- serwerów budowania
- środowisk aplikacji
- wdrożeń w chmurze
- systemów produkcyjnych
Dlatego ataki na ekosystemy pakietów są tak poważne. Mogą zamienić zaufanie do zależności open source w kanał dystrybucji malware, kradzieży poświadczeń lub dalszego przejęcia.
Rosnące zagrożenie dla łańcuchów dostaw open source
Incydent z RubyGems wpisuje się w szerszy trend: atakujący coraz częściej wybierają na cel repozytoria pakietów open source, ponieważ oferują one skalę i zaufanie.
Zamiast atakować bezpośrednio jedną firmę, cyberprzestępcy mogą przejąć pakiet lub się pod niego podszyć, przesłać złośliwe zależności, nadużyć typosquattingu albo zaatakować opiekunów. Jeśli się uda, złośliwy kod może zostać automatycznie pobrany do wielu środowisk na dalszych etapach łańcucha.
Ostatnie kampanie w ekosystemach takich jak npm, PyPI i RubyGems wykorzystywały techniki, w tym:
- przesyłanie złośliwych pakietów
- dependency confusion
- typosquatting
- brandjacking
- malware kradnące poświadczenia
- fałszywe narzędzia programistyczne
- złośliwe skrypty instalacyjne
- eksfiltrację danych ze środowisk budowania
W poprzednich incydentach bezpieczeństwa RubyGems złośliwe pakiety usuwano, a powiązane konta zamykano po wykryciu podejrzanego zachowania. RubyGems wcześniej podkreślał też znaczenie monitorowania ekosystemu i skoordynowanej reakcji po zidentyfikowaniu złośliwych pakietów.
Dlaczego atakujący celują w programistów
Programiści są cennymi celami, ponieważ ich systemy często zawierają poświadczenia i tokeny dostępu, które mogą odblokować znacznie więcej niż kod źródłowy.
Przejęte środowisko programisty lub CI/CD może ujawnić:
- tokeny GitHub lub GitLab
- poświadczenia do publikowania w RubyGems
- klucze chmurowe
- klucze SSH
- tokeny API
- poświadczenia baz danych
- sekrety CI/CD
- dostęp do wdrożeń produkcyjnych
Po kradzieży te poświadczenia mogą posłużyć do publikowania kolejnych złośliwych pakietów, przejmowania repozytoriów, uzyskiwania dostępu do infrastruktury lub wspierania kampanii ransomware i kradzieży danych.
Google ostrzegło, że poświadczenia skradzione w atakach na łańcuch dostaw oprogramowania są monetyzowane dzięki współpracy z grupami ransomware i wymuszeń danych, co czyni te incydenty częścią znacznie większej gospodarki cyberprzestępczej.
Co programiści powinni zrobić już teraz
Programiści Ruby i organizacje korzystające z RubyGems powinni potraktować ten incydent jako przypomnienie o przeglądzie higieny zależności i poświadczeń.
Zalecane działania obejmują:
- unikanie instalowania nowo opublikowanych lub nieznanych gemów, dopóki nie będzie więcej szczegółów
- przegląd ostatnio dodanych gemów i aktualizacji zależności
- sprawdzenie logów CI/CD pod kątem nieoczekiwanych instalacji pakietów lub wykonywania skryptów
- przypinanie wersji zależności tam, gdzie to możliwe
- dokładne sprawdzanie nazw pakietów, aby uniknąć typosquattingu
- audyt kluczy API RubyGems i ich rotację tam, gdzie to właściwe
- wymuszanie MFA na kontach RubyGems i systemów kontroli wersji
- unikanie przechowywania długotrwałych sekretów w lokalnych środowiskach programistów
- stosowanie skanowania sekretów w repozytoriach i logach budowania
- monitorowanie nieoczekiwanych połączeń sieciowych podczas budowania
- przegląd pakietów pod kątem podejrzanych hooków instalacyjnych lub zaciemnionego kodu
Organizacje powinny też rozważyć użycie wewnętrznych luster pakietów, list dozwolonych zależności i narzędzi do analizy składu oprogramowania (SCA), aby ograniczyć narażenie na złośliwe pakiety.
Co powinni sprawdzić opiekunowie pakietów
Opiekunowie projektów open source również powinni natychmiast podjąć środki ostrożności.
Opiekunowie powinni:
- potwierdzić, że MFA na koncie RubyGems jest włączone
- zmienić tokeny publikowania, jeśli wykryto podejrzaną aktywność
- przejrzeć ostatnio opublikowane wersje pod kątem nieoczekiwanych zmian
- sprawdzić uprawnienia współpracowników
- zweryfikować automatyzację wydań i sekrety CI/CD
- monitorować fałszywe pakiety o podobnych nazwach
- szybko publikować komunikaty bezpieczeństwa w razie podejrzenia przejęcia
Opiekunowie pakietów są coraz częściej celem, ponieważ jeden zaufany pakiet może dać atakującym dostęp do tysięcy użytkowników na dalszych etapach łańcucha.
Podsumowanie
Wstrzymanie rejestracji w RubyGems pokazuje, jak poważne stały się zagrożenia dla łańcucha dostaw open source. Repozytoria pakietów nie są już tylko wygodnymi platformami dla programistów — są krytyczną infrastrukturą nowoczesnego dostarczania oprogramowania.
Choć pełne szczegóły tego incydentu dopiero się wyłaniają, przekaz jest jasny: atakujący nadal celują w warstwę zaufania w tworzeniu oprogramowania.
Dla programistów, zespołów bezpieczeństwa i opiekunów pakietów jest to właściwy moment na przegląd zależności, rotację wrażliwych poświadczeń, wymuszenie MFA i uważne monitorowanie środowisk budowania.
Ekosystemy open source pozostają niezbędne, ale należy je traktować z taką samą dyscypliną bezpieczeństwa jak infrastrukturę produkcyjną.