Cybersecurity-onderzoekers hebben een nieuwe software supply chain-aanval met de codenaam SleeperGem gemarkeerd, gericht op het Ruby-ecosysteem nadat drie kwaadaardige edelstenen op RubyGems waren gepubliceerd met als einddoel het leveren van extra ladingen.
De schurkenstaten staan hieronder vermeld –
“Elke kwaadaardige release is een lader”, zei StepSecurity in een analyse. “Het haalt een tweede fase op van een door een aanvaller gecontroleerde Forgejo-host, controleert of het in een build-systeem draait en slaat dit over als dat zo is, en op een ontwikkelaarsmachine laat het een native daemon vallen en installeert het persistentie.”
Eén aspect van de aanval dat meteen opvalt is dat “git_credential_manager” de officiële Microsoft Git Credential Manager nabootst, terwijl de andere twee al jaren inactief waren voordat ze de kwaadaardige updates ontvingen. “Dendreo” is voor het laatst bijgewerkt op 24 oktober 2020 en “fastlane-plugin-run_tests_firebase_testlab” bleef inactief sinds 9 maart 2019, voorafgaand aan de nieuwe versies.
Een ander bepalend kenmerk van de activiteit is dat de releases rechtstreeks in het register werden gepubliceerd zonder enige overeenkomende commit of tag in de bronprojecten.

Interessant genoeg is “git_credential_manager” toegevoegd als afhankelijkheid van vijf pakketten, waaronder “Dendreo” en “fastlane-plugin-run_tests_firebase_testlab”, waardoor de kwaadaardige lading zich effectief kan verspreiden naar bestaande gebruikers van de pakketten –
- Dendreo
- fastlane-plugin-run_tests_firebase_testlab
- slackHtmlToMarkdown
- seo_optimizer
- array_fast_methods
Alle bovengenoemde pakketten, met uitzondering van “fastlane-plugin-run_tests_firebase_testlab”, worden onderhouden door hetzelfde account (“LR-DEV”). Het feit dat de edelsteen eigendom is van een andere beheerder (“pinkroom”) geeft aan dat er waarschijnlijk meer dan één account is gecompromitteerd om de frauduleuze versies naar RubyGems te pushen.
Eenmaal geïnstalleerd scant de malware die in deze pakketten is ingebed het geïnfecteerde systeem op ongeveer 30 omgevingsvariabelen, waaronder variabelen die verband houden met GitHub Actions, GitLab, CircleCI, Travis, Jenkins en Vercel. Als een van deze wordt geïdentificeerd, wordt deze onmiddellijk verlaten. De controle wordt beschouwd als een opzettelijke poging om te voorkomen dat deze op kortstondige CI-runners wordt uitgevoerd en om ervoor te zorgen dat deze wordt uitgevoerd op een ontwikkelaarscomputer.
In het geval van “git_credential_manager” wordt de kwaadaardige code geactiveerd wanneer de bibliotheek nodig is, waardoor deze twee payloads downloadt van een openbare Forgejo-instantie (“git.disroot(.)org/git-ecosystem”): een shellscript (“deploy.sh”) en een eigen binair bestand dat dezelfde naam draagt als de tool die de edelsteen zich voordoet. In Windows wordt de opgehaalde payload uitgevoerd via PowerShell.
Terwijl versie 2.8.2 slechts de payloads in scène zet, gaat versie 2.8.3 van de edelsteen naar de volgende fase van de aanval. Dit omvat het gebruik van het installatiescript om het binaire bestand als achtergronddaemon te starten, waarna het persistentie tot stand brengt met behulp van een cron-invoer en als een systemd-gebruikersservice en de sudo- en wheel-groepen opvraagt.
“Als de gebruiker sudo zonder wachtwoord kan uitvoeren, voert het script zichzelf opnieuw uit als root, en wanneer het als root draait, plant het een setuid root-kopie van de systeemshell op een pad dat is gekozen om een netwerkhulpprogramma na te bootsen”, aldus StepSecurity.
Gebruikers die een van de bovengenoemde edelstenen hebben geïnstalleerd, wordt geadviseerd de machines en bijbehorende geheimen als gecompromitteerd te behandelen. Het wordt ook aanbevolen om de verwijderde daemon op “~/.local/share/gcm/” te verwijderen, de persistentiemethoden te wissen, te controleren op een setuid-shell op “/usr/local/sbin/ping6” en alle inloggegevens te roteren.
“Een RubyGems-account dat zes of zeven jaar stil heeft gestaan, lijkt voor niemand riskant”, zegt Aikido Security-onderzoeker Charlie Eriksen. “Dat is precies het profiel dat de moeite waard is om over te nemen. Dat is waar de naam SleeperGem vandaan komt: geen geplant, lang spel aanvaller, maar een echt, gewoon account dat simpelweg inactief was geworden en er onschadelijk genoeg uitzag om te kapen zonder dat iemand het merkte.”
RubyGems als een dead drop voor data-exfiltratie
De onthulling komt meer dan twee maanden nadat RubyGems de aanmeldingen voor accounts kortstondig had onderbroken nadat kwaadwillenden tientallen kwaadaardige pakketten hadden gepusht als onderdeel van een gecoördineerde spampublicatiecampagne. Rond dezelfde tijd markeerden Socket-onderzoekers een parallelle campagne die het register overspoelde met 150 edelstenen die ze misbruikten als kanaal voor gegevensexfiltratie.
Eerder deze maand maakte Mend.io details bekend van een ongedocumenteerde software supply chain-aanval waarbij nog een set van 14 RubyGems-pakketten werd gebruikt om gestolen inloggegevens op te slaan.
Concreet bleek dat een kwaadaardige browserextensie inloggegevens had verzameld via een lokaal toegankelijke API, de informatie volledig in geldige .gem-bestanden in de browser had verpakt met behulp van JavaScript en standaard web-API’s, en die pakketten rechtstreeks naar RubyGems.org had geüpload met behulp van een hardgecodeerde RubyGems API-sleutel.
“De buit omvatte wachtwoorden in platte tekst, SSH-privésleutels, AWS-inloggegevens, crypto-wallet-seedphrases, burgerservicenummers, creditcardnummers en bankrekeninggegevens voor 63 kluisitems”, aldus Maciej Mensfeld.
“RubyGems was hier niet het leveringsmechanisme. Het was de dead drop: een vertrouwd domein met veel verkeer waar gestolen gegevens bleven liggen totdat de aanvaller ervoor terugkwam, onzichtbaar tussen normale uploads van ontwikkelaars.”