Die kommerzielle Version von Trivy, die Aqua Security separat vertreibt, war von dem Lieferketten-Angriff nach Angaben des Unternehmens nicht betroffen.

Das Trivy-Team entdeckte den ersten Einbruch und machte ihn am 1. März öffentlich. Zwar tauschte das Team daraufhin Zugangsdaten aus, doch fiel diese Rotation weniger umfassend aus als angenommen: Der Angreifer behielt Zugang zur Umgebung und konnte sogar die neu rotierten Geheimnisse abgreifen.

Am 19. März nutzte der Täter diese Zugangsdaten, um manipulierten Code per Force-Push in 76 der 77 zuvor veröffentlichten Versionen von trivy-action einzuschleusen – jener GitHub-Action, mit der Organisationen Trivy-Scans in ihren Pipelines ausführen. Pipelines, die auf eine dieser Versionen verwiesen, luden den Schadcode unbemerkt herunter und führten ihn statt des legitimen Originals aus. Ebenso vergiftete der Angreifer alle sieben Versionen im Repository setup-trivy. Zusätzlich missbrauchte er ein kompromittiertes automatisiertes Dienstkonto namens aqua-bot, um eine bösartige Trivy-Version v0.69.4 zu veröffentlichen und deren GitHub-Action-Tags zu manipulieren.

“Statt eine neue, eindeutig bösartige Version einzuführen, wählten die Angreifer einen raffinierteren Ansatz”, schrieb Aqua Security in einem Blogbeitrag vom 22. März. Durch das Verändern bestehender Versions-Tags von trivy-action hätten sie Schadcode in Workflows eingeschleust, die Organisationen ohnehin bereits ausführten. Da viele Pipelines sich allein auf Versionsbezeichnungen verlassen, ohne zu prüfen, ob sich der Code seit der ersten Nutzung verändert hat, liefen sie unverändert weiter, ohne die Manipulation zu bemerken.

In einer Aktualisierung vom 23. März teilte Aqua mit, dass über das kompromittierte Dienstkonto aqua-bot zusätzlich zwei manipulierte Docker-Images, v0.69.5 und v0.69.6, veröffentlicht wurden – die Schadsoftware verbreitete sich so über die vertrauenswürdige Release-Pipeline von Trivy.

Die Schadkomponente selbst beschreiben das Trivy-Sicherheitsteam und Aqua als einen credential-harvestenden Infostealer, der mehr als 50 Speicherorte im Dateisystem nach SSH-Schlüsseln, Cloud-Zugangsdaten für AWS, Google Cloud und Azure, Kubernetes-Authentifizierungstokens, Docker-Konfigurationsdateien, Umgebungsvariablen-Dateien, Datenbank-Zugangsdaten und Kryptowährungs-Wallets durchsucht. Laut Analyse verschlüsselt die Malware die gestohlenen Daten mit einer Hybridverschlüsselung aus AES-256-CBC und RSA-4096 und überträgt sie an eine vom Angreifer kontrollierte Infrastruktur. Ist eine solche Exfiltration nicht möglich, legt sie auf dem Konto des Opfers ein öffentliches GitHub-Repository (mit dem Namen tpcp-docs) an und lädt die Daten von dort hoch.

Der Vorfall ist laut dem Bericht bereits der zweite jüngere Fall, der ein Sicherheitswerkzeug oder einen Anbieter betrifft: In diesem Monat meldete Outpost24 einen Versuch, über eine siebenstufige Phishing-Kette Zugangsdaten einer Führungskraft des Unternehmens zu stehlen. Dieser Angriff scheiterte zwar, zeigt nach Einschätzung des Berichts aber das wachsende Interesse von Angreifern an Anbietern und Produkten, denen Firmen weitreichenden Zugang zu ihren Umgebungen gewähren.

Aqua und Trivy forderten Organisationen, die während der Gefährdungszeiträume eine betroffene Version von Trivy, trivy-action oder setup-trivy genutzt haben, auf, sämtliche für diese Pipelines zugänglichen Geheimnisse als kompromittiert zu behandeln und umgehend auszutauschen. Zudem sollten sie prüfen, ob die manipulierte Version v0.69.4 aus irgendeiner Quelle bezogen oder ausgeführt wurde, und alle Workflows, die aquasecurity/trivy-action oder aquasecurity/setup-trivy verwenden, auf Anzeichen einer Kompromittierung untersuchen.