Trivy Security Scanner GitHub-acties geschonden, 75 tags gekaapt om CI/CD-geheimen te stelen

Trivy, een populaire open-source kwetsbaarheidsscanner die wordt onderhouden door Aqua Security, werd binnen een maand voor de tweede keer gecompromitteerd om malware af te leveren die gevoelige CI/CD-geheimen stal.

Het laatste incident had gevolgen voor GitHub Actions “aquasecurity/trivy-action” en “aquasecurity/setup-trivy”, die worden gebruikt om respectievelijk Docker-containerimages te scannen op kwetsbaarheden en de GitHub Actions-workflow in te stellen met een specifieke versie van de scanner.

“We hebben vastgesteld dat een aanvaller 75 van de 76 versietags in de aquasecurity/trivy-action repository heeft geforceerd, de officiële GitHub-actie voor het uitvoeren van Trivy-kwetsbaarheidsscans in CI/CD-pijplijnen”, aldus Socket-beveiligingsonderzoeker Philipp Burckhardt. “Deze tags zijn aangepast om een ​​kwaadaardige lading te dienen, waardoor vertrouwde versiereferenties effectief worden omgezet in een distributiemechanisme voor een infostealer.”

De payload wordt uitgevoerd binnen GitHub Actions-runners en heeft tot doel waardevolle ontwikkelaarsgeheimen uit CI/CD-omgevingen te extraheren, zoals SSH-sleutels, inloggegevens voor cloudserviceproviders, databases, Git, Docker-configuraties, Kubernetes-tokens en cryptocurrency-wallets.

De ontwikkeling markeert het tweede supply chain-incident waarbij Trivy betrokken is. Eind februari en begin maart 2026 exploiteerde een autonome bot genaamd hackerbot-claw een ‘pull_request_target’-workflow om een ​​Personal Access Token (PAT) te stelen, dat vervolgens werd bewapend om de controle over de GitHub-repository over te nemen, verschillende releaseversies te verwijderen en twee kwaadaardige versies van de Visual Studio Code (VS Code) -extensie naar Open VSX te pushen.

Het eerste teken van het compromis werd opgemerkt door beveiligingsonderzoeker Paul McCarty nadat een nieuwe gecompromitteerde release (versie 0.69.4) was gepubliceerd in de “aquasecurity/trivy” GitHub-repository. De frauduleuze versie is inmiddels verwijderd. Volgens Wiz start versie 0.69.4 zowel de legitieme Trivy-service als de kwaadaardige code die verantwoordelijk is voor een reeks taken:

  • Voer gegevensdiefstal uit door het systeem te scannen op omgevingsvariabelen en inloggegevens, de gegevens te versleutelen en deze te exfiltreren via een HTTP POST-verzoek naar scan.aquasecurtiy(.)org.
  • Stel persistentie in met behulp van een systemd-service nadat u hebt bevestigd dat deze op een ontwikkelaarscomputer wordt uitgevoerd. De systemd-service is geconfigureerd om een ​​Python-script (“sysmon.py”) uit te voeren dat een externe server ondervraagt ​​om de payload op te halen en uit te voeren.

In een verklaring zei Itay Shakury, vice-president van open source bij Aqua Security, dat de aanvallers een gecompromitteerde inloggegevens misbruikten om kwaadaardige trivy-, trivy-action- en setup-trivy-releases te publiceren. In het geval van “aquasecurity/trivy-action” heeft de tegenstander 75 versietags geforceerd gepusht om naar de kwaadaardige commits te verwijzen die de Python infostealer-payload bevatten, zonder een nieuwe release te creëren of naar een branch te pushen, zoals standaardpraktijk is. Zeven “aquasecurity/setup-trivy”-tags werden op dezelfde manier geforceerd ingedrukt.

“Dus in dit geval hoefde de aanvaller Git zelf niet te exploiteren”, vertelde Burckhardt aan The Hacker News. “Ze hadden geldige inloggegevens met voldoende rechten om code te pushen en tags te herschrijven, wat de tag-vergiftiging mogelijk maakte die we hebben waargenomen. Wat onduidelijk blijft is de exacte inloggegevens die in deze specifieke stap zijn gebruikt (bijvoorbeeld een PAT-onderhouder versus een automatiseringstoken), maar de hoofdoorzaak wordt nu begrepen als een inbraak in de inloggegevens die is overgenomen van het eerdere incident.”

De beveiligingsleverancier erkende ook dat de laatste aanval voortkwam uit de onvolledige beheersing van het hackerbot-klauwincident. “We hebben geheimen en tokens gerouleerd, maar het proces was niet atomair en aanvallers waren mogelijk op de hoogte van vernieuwde tokens”, zei Shakury. “We hanteren nu een meer restrictieve aanpak en vergrendelen alle geautomatiseerde acties en elk token om het probleem grondig te elimineren.”

De stealer werkt in drie fasen: het verzamelen van omgevingsvariabelen uit het runner-procesgeheugen en het bestandssysteem, het coderen van de gegevens en het exfiltreren ervan naar de door de aanvaller bestuurde server (“scan.aquasecurtiy(.)org”).

Mocht de exfiltratiepoging mislukken, dan wordt het eigen GitHub-account van het slachtoffer misbruikt om de gestolen gegevens in een openbare opslagplaats met de naam “tpcp-docs” te plaatsen door gebruik te maken van de vastgelegde INPUT_GITHUB_PAT, een omgevingsvariabele die wordt gebruikt in GitHub Actions om een ​​GitHub PAT door te geven voor authenticatie met de GitHub API.

Het is momenteel niet bekend wie er achter de aanval zit, hoewel er tekenen zijn dat de dreigingsactor bekend als TeamPCP er mogelijk achter zit. Deze beoordeling is gebaseerd op het feit dat de credential harvester zichzelf in de broncode identificeert als “TeamPCP Cloud stealer”. De groep, ook bekend als DeadCatx3, PCPcat, PersyPCP, ShellForce en CipherForce, staat bekend als een cloud-native cybercriminaliteitsplatform dat is ontworpen om de moderne cloudinfrastructuur te doorbreken om gegevensdiefstal en afpersing te vergemakkelijken.

“De referentiedoelen in deze payload komen overeen met het bredere cloud-native profiel van diefstal en het genereren van inkomsten van de groep”, aldus Socket. “De zware nadruk op Solana-validator-sleutelparen en cryptocurrency-portefeuilles is minder goed gedocumenteerd als een kenmerk van TeamPCP, hoewel het aansluit bij de bekende financiële motivaties van de groep. Het zelflabelen zou een valse vlag kunnen zijn, maar de technische overlap met eerdere TeamPCP-tools maakt echte attributie plausibel.”

Gebruikers wordt geadviseerd ervoor te zorgen dat ze de nieuwste veilige releases gebruiken –

“Als u vermoedt dat u een gecompromitteerde versie gebruikte, behandel dan alle pijplijngeheimen als gecompromitteerd en roteer onmiddellijk”, zei Shakury. Bijkomende maatregelen ter beperking zijn onder meer het blokkeren van het exfiltratiedomein en het bijbehorende IP-adres (45.148.10(.)212) op netwerkniveau, en het controleren van GitHub-accounts op opslagplaatsen met de naam ’tpcp-docs’, wat kan wijzen op succesvolle exfiltratie via het fallback-mechanisme.

“Pin GitHub-acties op volledige SHA-hashes, niet op versietags”, zei Wiz-onderzoeker Rami McCarthy. “Versietags kunnen worden verplaatst om naar kwaadaardige commits te verwijzen, zoals aangetoond in deze aanval.”

(Dit is een verhaal in ontwikkeling. Kom later terug voor meer details.)

Thijs Van der Does