{"id":33335,"date":"2026-04-03T11:55:58","date_gmt":"2026-04-03T09:55:58","guid":{"rendered":"https:\/\/www.kaspersky.de\/blog\/?p=33335"},"modified":"2026-04-02T22:56:12","modified_gmt":"2026-04-02T20:56:12","slug":"critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp","status":"publish","type":"post","link":"https:\/\/www.kaspersky.de\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/33335\/","title":{"rendered":"Lieferkettenangriff \u00fcber Trivy und LiteLLM: CI\/CD-Pipeline vor CVE-2026-33634 sch\u00fctzen"},"content":{"rendered":"<p>Bei der automatisierten Softwareentwicklung verlassen sich Millionen von Pipelines auf Sicherheitstools wie Trivy und Checkmarx AST, die in den Erstellungsprozess integriert sind. Genau diese vertrauensw\u00fcrdigen L\u00f6sungen wurden j\u00fcngst zum Ausgangspunkt f\u00fcr einen der gr\u00f6\u00dften und gef\u00e4hrlichsten Lieferkettenangriffe des digitalen Zeitalters. Unsere Fragen in diesem Artikel: Wie werden automatisierte Workflows \u00fcberpr\u00fcft? Und wie l\u00e4sst sich die Cloud-Infrastruktur eines Unternehmens sch\u00fctzen?<\/p>\n<h2>Chronologie des Angriffs und bekannte Folgen<\/h2>\n<p>Am 19. M\u00e4rz wurde \u00fcber Trivy erfolgreich ein gezielter Lieferkettenangriff ausgef\u00fchrt. Trivy ist ein Open-Source-Tool zur Schwachstellensuche, das f\u00fcr CI\/CD-Pipelines sehr beliebt ist. Den Angreifern (einer als \u201eTeamPCP\u201c bekannten Hackergruppe) gelang es, Malware in offizielle GitHub Actions-Workflows und Docker-Images, die mit Trivy verbunden sind, zu injizieren. Die Folge: Bei jeder automatisierten Pipeline-Untersuchung wurde Malware gestartet, die SSH-Schl\u00fcssel, Token f\u00fcr den Cloud-Zugriff, Krypto-Wallets und andere wertvolle Daten aus den kompromittierten Systemen stahl. Da der Vorfall kritisch war, erhielt er die Kennung <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2026-33634\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2026-33634<\/a> und erreichte fast den maximalen CVSS4B-Score von 9,4.<\/p>\n<p>Das Trivy-Team erkannte den Angriff noch am selben Tag und entfernte b\u00f6sartige Artefakte aus den Distributionskan\u00e4len. Damit war diese Angriffsphase gestoppt. In der Zwischenzeit hatten die Angreifer sich jedoch schon Zugriff auf die Umgebungen vieler Trivy-Nutzer verschafft.<\/p>\n<p>Am 23. M\u00e4rz wurde ein <a href=\"https:\/\/www.sysdig.com\/blog\/teampcp-expands-supply-chain-compromise-spreads-from-trivy-to-checkmarx-github-actions\" target=\"_blank\" rel=\"noopener nofollow\">\u00e4hnlicher Vorfall<\/a> in einem anderen Tool f\u00fcr Anwendungssicherheit entdeckt: in einer GitHub Action f\u00fcr Checkmarx KICS sowie Checkmarx AST. Drei Stunden sp\u00e4ter wurde der Schadcode auch von dort entfernt. TeamPCP landete jedoch einen weiteren Treffer und kompromittierte die von Checkmarx unterst\u00fctzten <a href=\"https:\/\/x.com\/ReversingLabs\/status\/2036193573796978729?s=20\" target=\"_blank\" rel=\"noopener nofollow\">OpenVSX-Erweiterungen <\/a><em>cx-dev-assist<\/em> 1.7.0 und <em>ast-results<\/em>. Es gibt unterschiedliche Angaben dar\u00fcber, wann dieser Teil des Vorfalls behoben wurde.<\/p>\n<p>Am 24. M\u00e4rz wurde LiteLLM AI Gateway angegriffen, ein popul\u00e4res Projekt, das die Code-Untersuchung von Trivy verwendet und als universelle Bibliothek f\u00fcr den Zugriff auf verschiedene LLM-Anbieter dient. Die kompromittierten Versionen 1.82.7 und 1.82.8 wurden die in das PyPI-Repository hochgeladen. Und sie waren etwa f\u00fcnf Stunden lang \u00f6ffentlich verf\u00fcgbar.<\/p>\n<p>Obwohl der Angriff nur wenige Stunden dauerte, darf der Vorfall nicht untersch\u00e4tzt werden. Angesichts der Beliebtheit der betroffenen Projekte k\u00f6nnte der b\u00f6sartige Code tausende Male ausgef\u00fchrt worden sein, darunter auch in der Infrastruktur sehr gro\u00dfer Unternehmen.<\/p>\n<p>Die Angreifer konnten persistente Backdoors in Kubernetes-Clustern einbauen und den sich selbst replizierenden <a href=\"https:\/\/www.stepsecurity.io\/blog\/canisterworm-how-a-self-propagating-npm-worm-is-spreading-backdoors-across-the-ecosystem\" target=\"_blank\" rel=\"noopener nofollow\">CanisterWorm<\/a> im JavaScript-npm-\u00d6kosystem starten.<\/p>\n<p>Der Code der Angreifer <a href=\"https:\/\/www.aikido.dev\/blog\/teampcp-stage-payload-canisterworm-iran\" target=\"_blank\" rel=\"noopener nofollow\">verf\u00fcgt \u00fcber destruktive F\u00e4higkeiten<\/a>, die einen Kubernetes-Cluster und alle seine Knoten l\u00f6schen, wenn er Teheran als Zeitzone oder Farsi als prim\u00e4re Sprache auf dem kompromittierten System erkennt. In anderen Regionen begn\u00fcgt sich die Malware mit dem Diebstahl von Daten. Dies erledigt CanisterWorm.<\/p>\n<p>Experten zufolge gelten mehr als 20.000 Repositorys als potenziell anf\u00e4llig. Die Angreifer behaupten, Hunderte Gigabyte an Daten und <a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/popular-litellm-pypi-package-compromised-in-teampcp-supply-chain-attack\/\" target=\"_blank\" rel=\"noopener nofollow\">mehr als eine halbe Million Accounts<\/a> gestohlen zu haben.<\/p>\n<h2>Wie Trivy angegriffen wurde<\/h2>\n<p>Zur Kompromittierung von Trivy verwendeten die Angreifer Anmeldeinformationen, die sie schon fr\u00fcher gestohlen hatten. Der <a href=\"https:\/\/cybernews.com\/security\/claude-powered-ai-bot-compromises-five-github-repositories\/\" target=\"_blank\" rel=\"noopener nofollow\">vorhergehende Trivy-Vorfall<\/a> fand Ende Februar statt und konnte offenbar nicht vollst\u00e4ndig einged\u00e4mmt werden. Als setzten die TeamPCP-Hacker zu einer neuen Attacke an. Nach dem Vorfall wurden die Anmeldedaten zwar schrittweise ersetzt. Aqua Security, das Trivy entwickelt, <a href=\"https:\/\/github.com\/aquasecurity\/trivy\/discussions\/10425\" target=\"_blank\" rel=\"noopener nofollow\">vermutet<\/a> jedoch, dass die Angreifer neue Zugriffstoken generierten, bevor alle kompromittierten Token gesperrt wurden.<\/p>\n<p>Darum gelang es TeamPCP, GitHub Actions zu kompromittieren, die in CI\/CD-Pipelines eingesetzt wurden. Die Angreifer verf\u00fcgten \u00fcber Anmeldedaten mit Schreibrechten f\u00fcr Tags. Sie \u00fcberschrieben 76 von 77 Versions-Tags in aquasecurity\/trivy-action sowie alle sieben Tags in aquasecurity\/setup-trivy und leiteten vorhandene vertrauensw\u00fcrdige Versionen in b\u00f6sartige Commits um. Eine \u00e4hnliche Taktik wurde in der <a href=\"https:\/\/securelist.com\/shai-hulud-2-0\/118214\/\" target=\"_blank\" rel=\"noopener\">Kampagne von Shai-Hulud 2.0<\/a> beobachtet. Daraufhin wurden in den Workflows der gesamten Pipeline b\u00f6sartiger Code ausgef\u00fchrt, w\u00e4hrend in den Release-Metadaten keine verd\u00e4chtigen \u00c4nderungen bemerkbar waren.<\/p>\n<p>Gleichzeitig ver\u00f6ffentlichten die Angreifer eine infizierte Trivy-Bin\u00e4rdatei (v0.69.4) in offiziellen Distributionskan\u00e4len, darunter bei GitHub Releases und in Container-Registern.<\/p>\n<h2>Kompromittierung von LiteLLM<\/h2>\n<p>Eine Kompromittierung von LiteLLM, eines beliebten Zugriffstools f\u00fcr Sprachmodelle, konnte eine umfangreiche Angriffswelle auf die gesamte Kette der betroffenen Projekte ausl\u00f6sen. Der Angriff ereignete sich am 24. M\u00e4rz 2026: TeamPCP ver\u00f6ffentlichte sch\u00e4dliche Versionen der Bibliothek (1.82.7 und 1.82.8) direkt auf PyPI. Zwischen 10:39 UTC und 16:00 UTC enthielten diese kompromittierten Pakete Malware, die Anmeldedaten stahl. Sie war in die Datei <em>proxy_server.py<\/em> eingebettet, und Version 1.82.8 enthielt zudem die b\u00f6sartige Datei <em>litellm_init<\/em>. Die gestohlenen Daten wurden auf den Server <em>models.litellm[.]cloud<\/em> abgesch\u00f6pft.<\/p>\n<p>Kunden, die LiteLLM Cloud oder das offizielle Docker-Image von LiteLLM Proxy verwendeten, waren dank einer strengen Versionssperre nicht betroffen. Entwickler und nachgelagerte Projekte, die im genannten Zeitfenster nicht angeheftete Versionen \u00fcber pip installierten, wurden dagegen kompromittiert.<\/p>\n<p>Innerhalb von drei Stunden wurden die b\u00f6sartigen Pakete aus dem PyPI-Repository entfernt. Das LiteLLM-Team sperrte neue Versionen, rotierte die Anmeldeinformationen und leitete einen externen Prozess zur Vorfallreaktion ein. Teams, die LiteLLM in ihren Projekten verwenden, wird empfohlen, sofort nach dem Kompromittierungsindikator <em>litellm_init.pth<\/em> zu suchen und alle potenziell kompromittierten Geheimnisse routinem\u00e4\u00dfig zu rotieren.<\/p>\n<h2>Funktionen der Stealer-Malware TeamPCP Cloud<\/h2>\n<p>Die Angreifer f\u00fcgten GitHub Actions und der ausf\u00fchrbaren Trivy-Datei eine neue Logik hinzu, w\u00e4hrend die urspr\u00fcngliche Funktionalit\u00e4t beibehalten wurde. Die Ergebnisse des Trivy-Schwachstellen-Scans schienen normal zu sein. Gleichzeitig wurden jedoch wertvolle Daten gesucht und extrahiert. Der b\u00f6sartige Code stellte Folgendes an:<\/p>\n<ul>\n<li>Spionage (Sammeln von Netzwerkdaten und Umgebungsvariablen)<\/li>\n<li>Suche nach Token und Anmeldeinformationen f\u00fcr den Zugriff auf AWS- und GCP-Cloud-Umgebungen<\/li>\n<li>Untersuchung des Speichers <em>(\/proc\/*\/mem<\/em>), um Geheimnisse zu extrahieren, die sich im Speicher der Prozesse <em>Runner.Worker<\/em> und <em>Runner.Listener<\/em> befinden<\/li>\n<li>Extraktion von Kubernetes-Geheimnissen (<em>\/run\/secrets\/kubernetes.io\/serviceaccount<\/em>)<\/li>\n<li>Erfassung von Daten f\u00fcr die Verbindung mit Datenbankservern (MySQL, PostgreSQL, MongoDB, Redis, Vault)<\/li>\n<li>Sammeln anderer API-Schl\u00fcssel und Geheimnisse aus Umgebungsdateien und CI\/CD-Konfigurationsdateien (<em>.env, .json, .yml<\/em>)<\/li>\n<li>Suche nach Webhooks f\u00fcr Slack- und Discord-Kan\u00e4le<\/li>\n<li>Suche nach Daten, die sich auf Krypto-Wallets beziehen (Variablen, die mit der Solana-Blockchain verkn\u00fcpft sind, sowie <em>rpcuser<\/em>\u2013 und <em>rpcpassword<\/em>-Daten)<\/li>\n<\/ul>\n<p>Die gesammelten Daten wurden verschl\u00fcsselt und auf einen Server mit einem \u00e4hnlichen Namen wie dem der Trivy-Entwickler hochgeladen (<em>scan.aquasecurtiy[.]org<\/em>). Als Backup-Mechanismus stellten die Angreifer die Methode <em>docs-tpcp<\/em> f\u00fcr den Daten-Upload in ein Repository bereit.<\/p>\n<p>Der Angriff auf CheckMarx und LiteLLM nutzte eine \u00e4hnliche Taktik mit anderen Typosquatting-Dom\u00e4nen: <em>models.litellm[.]cloud<\/em> und <em>checkmarx[.]zone<\/em>.<\/p>\n<p>Eine detaillierte technische Analyse der Malware sowie die Kompromittierungsindikatoren findest du in unserem Expertenartikel <a href=\"https:\/\/securelist.com\/litellm-supply-chain-attack\/119257\/\" target=\"_blank\" rel=\"noopener\">im Securelist-Blog<\/a>.<\/p>\n<h2>Reaktionen und Abwehrstrategien f\u00fcr CVE-2026-33634<\/h2>\n<p>Die bestehenden signaturbasierten Pr\u00fcfungen und die Abh\u00e4ngigkeitsuntersuchung in \u00f6ffentlichen Registern reichen nicht mehr aus, da der b\u00f6sartige Code direkt in vertrauensw\u00fcrdige, signierte Aktionen eingeschleust wurde und erst durch Verhaltens\u00fcberwachung enttarnt werden konnte. CI\/CD-Pipelines sind zum \u201eneuen Perimeter\u201c der Sicherheit geworden.<\/p>\n<p><strong>Dringende Ma\u00dfnahmen. <\/strong>\u00dcberpr\u00fcfe, ob alle Workflows sichere Versionen verwenden (Trivy-Binary 0.69.3, trivy-action 0.35.0, setup-trivy 0.2.6).<\/p>\n<p>Administratoren von CI\/CD-Pipelines und Sicherheitsteams sollten die Abh\u00e4ngigkeiten der L\u00f6sungen von Checkmarx (kics-github-action, ast-github-action) und Trivy (setup-trivy und trivy-action) sofort \u00fcberpr\u00fcfen. Wenn Workflows auf ein Versions-Tag verwiesen haben (anstatt auf einen bestimmten SHA-Hash), m\u00fcssen die Workflow-Ausf\u00fchrungsprotokolle f\u00fcr den Zeitraum des aktiven Lieferkettenangriffs sorgf\u00e4ltig \u00fcberpr\u00fcft werden.<\/p>\n<p>Zudem solltest du einen genauen Blick in die Netzwerkprotokolle werfen. Gab es Datenverkehr zu den Dom\u00e4nen <em>scan.aquasecurtiy[.]org<\/em>, <em>checkmarx[.]zone<\/em> und <em>models.litellm[.]cloud<\/em>? Wenn ja, so wurden sensible Daten erfolgreich exfiltriert.<\/p>\n<p>Wenn auf dem Unternehmens-GitHub ein Repository namens docs-tpcp aufgetaucht ist, kann dies ebenfalls auf einen erfolgreichen Datendiebstahl hinweisen.<\/p>\n<p>\u00dcberpr\u00fcfe Hosts und Cluster auf Kompromittierungsspuren: Gibt es Dateien wie ~\/.config\/sysmon\/sysmon.py oder verd\u00e4chtige Pods in Kubernetes?<\/p>\n<p>Leere den Cache und f\u00fchre eine Inventarisierung der PyPI-Module durch: Suche nach b\u00f6sartigen Modulen und setze auf saubere Versionen zur\u00fcck.<\/p>\n<p>Auf jeden Fall sollte ein <a href=\"https:\/\/www.kaspersky.de\/enterprise-security\/compromise-assessment?icid=de_kdailyplacehold_acq_ona_smm__onl_b2b_kasperskydaily_wpplaceholder_______\" target=\"_blank\" rel=\"noopener\">proaktives Threat Hunting <\/a> erfolgen, da man davon ausgehen muss, dass die Systeme kompromittiert wurden und sich die Einbrecher innerhalb der betroffenen Systeme ausbreiten konnten.<\/p>\n<p>Zus\u00e4tzlicher Tipp: die betroffenen Umgebungen aus verifizierten Backups wiederherstellen!<\/p>\n<p><strong>Abh\u00e4ngigkeiten anheften und Geheimnisse verwalten. <\/strong>Stelle sicher, dass pr\u00e4zise Abh\u00e4ngigkeitsversionen mithilfe von kryptografischen Hashes in allen Pipelines und Dockerfiles angeheftet sind. Es wird empfohlen, mithilfe eines Secrets-Manager-Tools von langlebigen Token zu kurzlebigen Anmeldeinformationen zu wechseln und OIDC-Integrationen zu implementieren (sofern diese unterst\u00fctzt werden). Minimiere die Injektion von Geheimnissen in die Laufzeitumgebung. Diese sollte nur erfolgen, wenn es unbedingt erforderlich ist. Stelle sicher, dass Geheimnisse nicht auf der Festplatte oder in tempor\u00e4ren Dateien gespeichert und nicht in verschiedenen Prozessen wiederverwendet werden.<\/p>\n<p>Rotiere alle potenziell kompromittierten Anmeldeinformationen: API-Schl\u00fcssel, Umgebungsvariablen, SSH-Schl\u00fcssel, Token f\u00fcr Kubernetes-Dienstkonten sowie andere Geheimnisse.<\/p>\n<p><strong>Weitere Sicherheitsma\u00dfnahmen. <\/strong>Erlaube GitHub Actions nur aus einer vom Unternehmen genehmigten Liste. Blockiere neue und nicht \u00fcberpr\u00fcfte Prozesse. Konfiguriere <em>GITHUB_TOKEN<\/em> und andere Zugriffsschl\u00fcssel nach dem Prinzip der geringsten Berechtigungen. Erteile nur dann Schreibrechte, wenn es gar nicht anders geht.<\/p>\n<p>F\u00fcr eine erh\u00f6hte Sicherheit von GitHub Actions stehen mehrere Open-Source-Tools zur Verf\u00fcgung:<\/p>\n<ul>\n<li>zizmor\u00a0\u2013 Tool zur statischen Analyse und Erkennung von Konfigurationsfehlern in GitHub Actions<\/li>\n<li>gato und Gato-X\u00a0\u2013 zwei Versionen eines Tools, mit dem strukturell anf\u00e4llige Pipelines identifiziert werden k\u00f6nnen<\/li>\n<li>allstar\u00a0\u2013 eine von OpenSSF entwickelte GitHub-Anwendung zur Konfiguration und Durchsetzung von Sicherheitsrichtlinien in GitHub-Organisationen und Repositorys<\/li>\n<\/ul>\n<p>Mehr Informationen \u00fcber Kettenreaktionen bei Lieferkettenangriffen findest du in unserer Analyse <a href=\"https:\/\/kas.pr\/k8rs\" target=\"_blank\" rel=\"noopener\">Supply chain reaction: securing the global digital ecosystem in an age of interdependence<\/a>. Sie basiert auf den Erkenntnissen von technischen Experten und zeigt, wie h\u00e4ufig Unternehmen mit Risiken in der Lieferkette und bei vertrauensw\u00fcrdigen Beziehungen konfrontiert sind, wo Sicherheitsl\u00fccken bestehen und welche Strategien ratsam sind, um die Widerstandsf\u00e4higkeit gegen diese Bedrohungen zu verbessern.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"mdr\"><input type=\"hidden\" class=\"placeholder_for_banner\" data-cat_id=\"mdr\" value=\"31061\">\n","protected":false},"excerpt":{"rendered":"<p>Wie Open-Source-Sicherheitsl\u00f6sungen zum Ausgangspunkt f\u00fcr massive Angriffe auf g\u00e4ngige Anwendungen wurden, und was betroffene Unternehmen dagegen tun sollten<\/p>\n","protected":false},"author":2706,"featured_media":33336,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2711],"tags":[4267,274,3900,3161,1498,645],"class_list":{"0":"post-33335","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-threats","8":"tag-angriffe-auf-die-lieferkette","9":"tag-bedrohungen","10":"tag-lieferkette","11":"tag-open-source","12":"tag-schwachstellen","13":"tag-technologie"},"hreflang":[{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/33335\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/29085\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/31966\/"},{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30577\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/41587\/"},{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/14420\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/23768\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30454\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.de\/blog\/tag\/lieferkette\/","name":"Lieferkette"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/33335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/users\/2706"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/comments?post=33335"}],"version-history":[{"count":5,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/33335\/revisions"}],"predecessor-version":[{"id":33341,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/33335\/revisions\/33341"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media\/33336"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media?parent=33335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/categories?post=33335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/tags?post=33335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}