Schadelijke LiteLLM-releases gekoppeld aan Trivy Hack hebben mogelijk meer dan 2.100 organisaties blootgelegd

Twee kwaadwillende LiteLLM-releases stonden in maart ongeveer 40 minuten op PyPI met code voor het stelen van inloggegevens die in staat was cloudsleutels, SSH-sleutels, Kubernetes-tokens, databasewachtwoorden en andere geheimen te verzamelen van systemen die deze hadden geïnstalleerd.

Bedreigingsinformatiebedrijf CloudSEK zegt nu dat een dataset die het heeft verkregen, opgebouwd uit ongeveer 434.000 bestanden die de aanvallers hebben buitgemaakt, de potentiële blootstelling aan meer dan 2.500 organisaties in kaart brengt.

Deze totalen zijn geen aantallen slachtoffers. CloudSEK vertelde The Hacker News dat het materiaal afkomstig was van vertrouwelijke inlichtingenbronnen en bestond uit buitgemaakte buit en logbestanden die volgens het bedrijf tot de campagne behoorden, en niet uit gegevens verzameld van de organisaties die het noemt. Met andere woorden: de bestanden zijn meegenomen.

CloudSEK heeft de dataset gepubliceerd als een openbare zoekopdracht, doorzoekbaar op naam of domein en filterbaar op basis van vertrouwen. Elke rij vermeldt de naam en het domein van een organisatie, het aantal onthulde geheimen, het aantal runs en een label met de tekst Hoog of Gemiddeld.

Wat een match met veel vertrouwen beweert, is uit wiens systemen elk bestand afkomstig is. Dat oordeel hangt af van identiteitssignalen in de vastgelegde CI-runner-omgeving, voornamelijk hostidentiteit en legitieme committer-domeinen, en het eigen domein van de organisatie moet verschijnen voordat een match de hoogste beoordeling krijgt.

Naamruimten in repository’s ondersteunen alleen een oproep met gemiddelde betrouwbaarheid. NVIDIA, Cisco, Deloitte, Volkswagen, FedEx, Siemens en X Corp behoren tot de inzendingen, en niets daarvan bevestigt dat gestolen inloggegevens zijn gebruikt. Daarom vertellen zowel CloudSEK als LiteLLM de betrokken partijen om te rouleren in plaats van op bewijs te wachten.

LiteLLM is een open-source AI-gateway die wordt gebruikt om applicaties met meerdere modelaanbieders te verbinden. Het project identificeerde de versies 1.82.7 en 1.82.8 als gecompromitteerd en zei dat ze op 24 maart vanaf 10:39 UTC ongeveer 40 minuten live waren voordat PyPI ze in quarantaine plaatste, hoewel het gebruikers vertelt elke installatie die dag tot 16:00 UTC als verdacht te behandelen.

The Hacker News bevestigde op 12 augustus via PyPI dat geen van beide versies in de releasegeschiedenis van het pakket voorkomt, terwijl 1.82.6 en 1.83.0 beschikbaar blijven.

De FBI waarschuwde in een advies van 2 juli, FLASH-20260702-01, dat aangesloten actoren waarschijnlijk de inloggegevens zullen bewapenen die tijdens de TeamPCP-campagne zijn geëxfiltreerd, lang na het aanvankelijke compromis. Het vertelde organisaties dat ze CI/CD-geheimen moesten roteren, tokens moesten publiceren en cloudreferenties die toegankelijk waren tijdens de relevante blootstellingsperioden.

Een langlevend geheim dat tijdens die periode is gekopieerd, een statische cloudsleutel, een SSH-sleutel of een publicatietoken, blijft bruikbaar tenzij het sindsdien is gerouleerd of ingetrokken. Dat is de reden waarom de begeleiding van het bureau zich richt op de inloggegevens in plaats van op het pakket, en waarom zowel het bureau als Aqua de teams vertellen dat ze moeten overstappen van tokens met een lange levensduur naar tijdelijke tokens.

Versie 1.82.8 bevatte een bestand met de naam litellm_init.pth dat Python verwerkt bij het opstarten van de tolk, dus het draaide telkens wanneer een Python-proces in die omgeving startte, ongeacht of er iets LiteLLM importeerde of niet.

De gecompromitteerde pakketten zijn ontworpen om omgevingsvariabelen, SSH-sleutels, cloudreferenties, Kubernetes-tokens en databasewachtwoorden te verzamelen voordat de gestolen gegevens worden gecodeerd en verzonden naar models.litellm(.)cloud, een door de aanvaller beheerd domein dat geen verband houdt met het project.

De campagneanalyse van Unit 42 registreert de omgevingsvariabelen voor het lezen van de payload die API-sleutels van het model bevatten, waaronder OPENAI_API_KEY en ANTHROPIC_API_KEY.

Dat gedrag keert de gebruikelijke triagevraag om. Of een team bewust LiteLLM gebruikt, doet er minder toe dan of iets op de host het heeft geïnstalleerd, en het advies van het project merkt op dat een niet-vastgezette transitieve afhankelijkheid, inclusief een afhankelijkheid die wordt binnengehaald door een agentframework of orkestratietool, dit zou kunnen opleveren zonder dat iemand ervoor kiest.

Het LiteLLM-incident maakt deel uit van een bredere TeamPCP-toeleveringsketencampagne die is gekoppeld aan de Trivy-scanner van Aqua Security. Google volgt TeamPCP als UNC6780. Aqua zei dat aanvallers de toegang behielden na een onvolledige rotatie van de inloggegevens en op 19 maart kwaadaardige commits met geweld naar 76 van de 77 trivy-action-versietags en alle zeven setup-trivy-tags hadden gepusht terwijl ze een kwaadaardige Trivy 0.69.4-release publiceerden.

Het ecosysteemcompromis wordt bijgehouden als CVE-2026-33634, toegevoegd aan CISA’s Known Exploited Vulnerabilities-catalogus op 26 maart. The Hacker News bevestigde op 12 augustus dat het CVE-record nu BerriAI LiteLLM 1.82.7 tot en met 1.82.8 vermeldt als getroffen naast de Trivy-componenten.

Hoe de kwaadaardige LiteLLM-releases precies PyPI bereikten, werd in de gepubliceerde accounts betwist. Het rapport van CloudSEK zei dat de vergiftigde build de releases produceerde en publiceerde, LiteLLM’s eigen incidentrapport wees op een directe PyPI-upload die de officiële CI/CD-workflow omzeilde, en Unit 42 beschreef aanvallers die zich richtten op PyPI-publicatietokens na de Trivy-inbreuk.

Gevraagd naar de discrepantie, duwde CloudSEK terug. “Dit zijn verschillende stadia van dezelfde aanvalsketen, geen concurrerende verklaringen”, vertelde het bedrijf aan The Hacker News. Het bewijsmateriaal omvat hoe de identificatie werd verkregen, terwijl de bevindingen van LiteLLM en Unit 42 betrekking hebben op hoe deze vervolgens werd gebruikt.

PyPA’s advies voor de kwaadaardige releases beschrijft dezelfde volgorde: een API-token dat wordt blootgesteld via de gecompromitteerde Trivy-afhankelijkheid en vervolgens wordt gebruikt om de twee versies te uploaden. BerriAI had op het moment van schrijven nog niet gereageerd op vragen over welke account zijn eigen forensisch onderzoek ondersteunt.

Attributie binnen de dataset verloopt via twee onafhankelijke controles, aldus CloudSEK. Een index wijst elk bestand toe met behulp van CI-identiteitsvariabelen, en een afzonderlijke eigendomspoort leidt het eigendom opnieuw af van de opgehaalde logboeken en kan die toewijzing overschrijven. “Als ze het er niet mee eens zijn, wordt het rapport ingehouden”, aldus het bedrijf, en het uiteindelijke oordeel neemt het laagste van de twee vertrouwensniveaus.

Het aantal van 434.000 telt vastgelegde bestanden en exfiltratie-gebeurtenissen in plaats van afzonderlijke pijplijnen, runs of taken. CloudSEK zei dat één vastgelegd bestand ongeveer één taakuitvoering is, maar presenteert het totaal niet als unieke taken zonder onafhankelijke deduplicatie en verificatie.

Het bedrijf weigerde pre-publicatiemeldingen aan de genoemde organisaties te bespreken en wilde niet zeggen of iemand de opname ervan betwistte.

De downstream-impact van de campagne wordt bevestigd, ook al zijn de schaalcijfers van CloudSEK dat niet. Checkmarx zei dat de inloggegevens verkregen via de Trivy-aanval ongeautoriseerde toegang tot de GitHub-opslagplaatsen en de publicatie van kwaadaardige artefacten mogelijk maakten. Mercor zei dat het werd getroffen door kwaadaardige LiteLLM-versies en ongeautoriseerde activiteiten bevatte.

CERT-EU oordeelde afzonderlijk met groot vertrouwen dat een AWS-account van de Europese Commissie gecompromitteerd was door de Trivy supply chain-aanval, waarbij ongeveer 91,7 GB aan gecomprimeerde gegevens werd geëxfiltreerd.

Organisaties die de blootstelling beoordelen, moeten drie stappen ondernemen:

  • Controleer op LiteLLM 1.82.7- of 1.82.8-installaties tijdens de auditperiode van LiteLLM op 24 maart van 10:39 tot 16:00 UTC.
  • Roteer alle geheimen waartoe deze systemen toegang hebben.
  • Doorzoek hun GitHub-organisaties naar opslagplaatsen met de naam tpcp-docs of docs-tpcp, die de FBI vermeldt als campagne-indicatoren. Aqua’s advies voor de CVE merkt op dat de malware deze heeft gemaakt met het voorvoegsel tpcp-docs- en gestolen gegevens heeft geüpload als een release-item met de tag data-dus bij een zoekopdracht op exacte naam kunnen ze gemist worden.
Thijs Van der Does