Piątek, 13 maja. W tym samym tygodniu co Mini Shai-Hulud przez TanStack, Mistral i UiPath, TeamPCP w Jenkins i 500 złośliwych pakietów które zmusiły RubyGems do wyłączenia rejestracji nowych kont — Socket opublikował analizę kampanii która jest inna od wszystkich poprzednich.
Atakujący opublikował ponad 150 gemów Ruby. Żaden z nich nie był przeznaczony do infekcji deweloperów.
Socket: "Pakiety nie wydają się zaprojektowane do masowej kompromitacji deweloperów. Wiele z nich ma znikome lub zerowe statystyki pobrań, a payloady są powtarzalne, hałaśliwe i niezwykle samowystarczalne."
GemStuffer używał RubyGems nie jako kanału dystrybucji złośliwego oprogramowania — ale jako infrastruktury do exfiltracji. Rejestru pakietów jako martwej skrzynki na skradzione dane.
Mechanizm który odwraca schemat
Standardowy atak na rejestr pakietów wygląda tak: atakujący publikuje złośliwy pakiet → deweloper go pobiera → kod wykonuje się w środowisku dewelopera → atakujący uzyskuje dostęp do maszyny lub poświadczeń.
GemStuffer odwraca ten kierunek. Pakiet nie czeka na pobranie — pakiet sam jest ładunkiem końcowym.
Pełna sekwencja zapisana przez Socket: skrypt pobiera strony z brytyjskich portali samorządowych (specyficznie mgCalendarMonthView.aspx — interfejs demokratycznych usług rad miejskich), pakuje surowe odpowiedzi HTTP do archiwum .gem, wstrzykuje zakodowany na stałe klucz API RubyGems do /tmp, i publikuje ten gem z powrotem do rejestru. Skradzione dane siedzą teraz w publicznym rejestrze pakietów — dostępne dla atakującego przez standardowe API pobierania gemów, nieodróżnialne od tysięcy innych pakietów.
Infrastruktura eksfiltracji to sam rejestr. Bez własnych serwerów C2, bez podejrzanych domen, bez połączeń sieciowych które wyglądają niestandardowo. Ruch do rubygems.org jest oczekiwany i przepuszczany przez każdy filtr.
Dlaczego portale rad miejskich
To jest pytanie na które Socket nie ma pełnej odpowiedzi — i uczciwie to przyznaje.
Scrapowane strony to interfejsy "democratic services" brytyjskich rad miejskich: kalendarze posiedzeń, agendy, protokoły głosowań, informacje o radnych. Dane są publiczne. Każdy może je przeczytać wchodząc na stronę rady.
Możliwe wyjaśnienia: rekonesans i mapowanie struktury samorządu lokalnego (kto jest radnym, kiedy odbywają się posiedzenia, jakie tematy są głosowane), testy mechanizmu exfiltracji przez rejestr przed użyciem go do zbierania niepublicznych danych, lub element szerszej operacji wywiadowczej której GemStuffer jest tylko jednym komponentem.
Dark Reading ujmuje pytanie precyzyjnie: "W tym przypadku pierwotna ofiara jest niejasna, podobnie jak pełny zakres działania. Na co organizacje muszą zwrócić uwagę, to czego atakujący może planować dalej i jak mogą się przygotować."
To jest rzadkie przyznanie w analizie bezpieczeństwa: widzimy mechanizm, rozumiemy jak działa, nie wiemy jeszcze co osiąga w szerszym kontekście.
Czwarta platforma w jednym tygodniu
npm przez TanStack. PyPI przez PyTorch Lightning. Packagist przez intercom-php. Teraz RubyGems.
Ale GemStuffer jest jakościowo inny niż trzy poprzednie — i to rozróżnienie jest ważne. Shai-Hulud, TanStack, intercom-php to były ataki na deweloperów przez rejestr: infekuj paczkę, poczekaj aż ktoś ją pobierze, skradnij poświadczenia. Standardowy model zagrożenia dla rejestrów pakietów.
GemStuffer pokazuje że rejestr może być używany jako infrastruktura przez kogoś kto w ogóle nie celuje w deweloperów. Sam rejestr — jego mechanizm publikowania i pobierania, jego globalny CDN, jego reputacja jako zaufanej platformy — jest narzędziem exfiltracji.
TeamPCP używał GitHub jako dynamicznego C2 przez commits — atakujący szuka w publicznych commitach zakodowanych adresów serwerów sterujących. Shai-Hulud publikował wykradzione poświadczenia jako publiczne repozytoria GitHub — dane dostępne dla każdego kto zna właściwy search string. GemStuffer dodaje trzeci wariant: rejestr pakietów jako trwały, anonimowy magazyn skrapianych danych z dowolnego źródła.
Zaufana platforma jako infrastruktura ataku — wzorzec który cyberflux opisuje od miesięcy — ma teraz trzy osobne implementacje w ekosystemie open source.
Co RubyGems robi
RubyGems w odpowiedzi na tydzień ataków — GemStuffer plus osobna fala 500+ złośliwych pakietów od botów — tymczasowo wyłączył rejestrację nowych kont. Koordynuje z Fastly wdrożenie WAF i zaostrzenie rate limiting przy tworzeniu kont. Wszystkie złośliwe pakiety zostały usunięte.
Zamknięcie rejestracji jest właściwą odpowiedzią operacyjną w kryzysie — ale pokazuje też skalę problemu. Rejestr który musi wyłączyć możliwość zakładania nowych kont żeby powstrzymać nadużycie swojej infrastruktury jest rejestrem który atakujący zdołał przekształcić w narzędzie przeciwko własnym celom.
Podsumowanie
GemStuffer nie jest atakiem supply chain w tradycyjnym sensie. Jest demonstracją że każda zaufana platforma z API do publikowania i pobierania danych — rejestr pakietów, platforma hostingowa modeli, serwis CI/CD — może być używana jako infrastruktura dla atakującego który nie ma nic wspólnego z użytkownikami tej platformy.
Celem nie byli deweloperzy Ruby. Celem były portale rad miejskich Wielkiej Brytanii, a RubyGems był po prostu wygodnym miejscem do przechowania rezultatów.
Następne pytanie — "co jest planowane dalej i jak się przygotować" — pozostaje bez odpowiedzi. To jest rzadkość w raportach bezpieczeństwa. I jest dobrym powodem żeby śledzić tę historię gdy rozwiną się kolejne szczegóły.
Źródła
Socket — pierwotna analiza techniczna z pełnym łańcuchem exfiltracji i kodem: https://socket.dev/blog/gemstuffer
The Hacker News — omówienie z kontekstem wyłączenia rejestracji RubyGems: https://thehackernews.com/2026/05/gemstuffer-abuses-150-rubygems-to.html
Dark Reading — analiza "czego nie wiemy" i pytanie o cel operacji: https://www.darkreading.com/application-security/attackers-weaponize-rubygems-data-dead-drops
SecurityWeek — kontekst wyłączenia rejestracji RubyGems i skali ataku: https://www.securityweek.com/rubygems-suspends-new-signups-after-hundreds-of-malicious-packages-are-uploaded/















































































































Nie nowy atak, tylko naprawiony błąd. Co łatka Gemini CLI mówi o tym, że tryb –yolo w potoku CI/CD to nie jest dobry pomysł