{"id":30577,"date":"2026-04-08T13:06:50","date_gmt":"2026-04-08T11:06:50","guid":{"rendered":"https:\/\/www.kaspersky.it\/blog\/?p=30577"},"modified":"2026-04-08T13:51:33","modified_gmt":"2026-04-08T11:51:33","slug":"critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp","status":"publish","type":"post","link":"https:\/\/www.kaspersky.it\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30577\/","title":{"rendered":"Attacco alla supply chain tramite Trivy e LiteLLM: protezione della pipeline CI\/CD da CVE-2026-33634"},"content":{"rendered":"<p>Milioni di pipeline di sviluppo software automatizzate si basano su strumenti di sicurezza, come Trivy e Checkmarx AST, integrati nel processo di compilazione. E sono state proprio queste soluzioni affidabili a diventare di recente il punto di ingresso per uno dei pi\u00f9 grandi e pericolosi attacchi alla supply chain della storia moderna. In questo post verr\u00e0 illustrato come controllare i flussi di lavoro automatizzati e proteggere l\u2019infrastruttura cloud aziendale.<\/p>\n<h2>Sequenza temporale dell\u2019attacco e conseguenze note<\/h2>\n<p>Il 19 marzo \u00e8 stato effettuato un attacco mirato alla supply chain tramite Trivy, uno strumento open source di scansione delle vulnerabilit\u00e0 ampiamente utilizzato nelle pipeline CI\/CD. Gli autori degli attacchi, un gruppo noto come TeamPCP, sono riusciti a iniettare malware nei flussi di lavoro ufficiali di GitHub Actions e nelle immagini Docker associate a Trivy. Di conseguenza, ogni scansione automatizzata della pipeline ha provocato l\u2019attivazione di malware in grado di rubare chiavi SSH, token di accesso al cloud, portafogli di criptovaluta e altri dati preziosi dai sistemi compromessi. Data la natura critica dell\u2019incidente, gli \u00e8 stato assegnato l\u2019identificatore <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2026-33634\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2026-33634<\/a>, con un punteggio CVSS4B quasi massimo di 9,4.<\/p>\n<p>Pi\u00f9 tardi, lo stesso giorno, il team di Trivy ha rilevato l\u2019attacco e rimosso gli artefatti dannosi dai canali di distribuzione, arrestando questa fase dell\u2019attacco. Tuttavia, gli autori degli attacchi avevano gi\u00e0 ottenuto l\u2019accesso agli ambienti di molti utenti Trivy.<\/p>\n<p>Il 23 marzo \u00e8 stato rilevato un <a href=\"https:\/\/www.sysdig.com\/blog\/teampcp-expands-supply-chain-compromise-spreads-from-trivy-to-checkmarx-github-actions\" target=\"_blank\" rel=\"noopener nofollow\">incidente simile<\/a> in un altro strumento di protezione dell\u2019applicazione: un\u2019azione GitHub per Checkmarx KICS, nonch\u00e9 Checkmarx AST. Tre ore dopo, anche il codice dannoso \u00e8 stato rimosso da l\u00ec. TeamPCP \u00e8 anche riuscito a compromettere le <a href=\"https:\/\/x.com\/ReversingLabs\/status\/2036193573796978729?s=20\" target=\"_blank\" rel=\"noopener nofollow\">estensioni OpenVSX<\/a> supportate da Checkmarx: <em>cx-dev-assist<\/em> 1.7.0 e <em>ast-results<\/em>. I rapporti sul momento in cui questa parte dell\u2019incidente \u00e8 stata risolta variano.<\/p>\n<p>Il 24 marzo \u00e8 stato attaccato un popolare progetto che utilizzava la scansione dei codici di Trivy, il gateway LiteLLM AI, una libreria universale per l\u2019accesso a vari provider LLM. Le versioni 1.82.7 e 1.82.8, caricate nell\u2019archivio PyPI, sono state compromesse. Queste versioni sono rimaste disponibili al pubblico per circa cinque ore.<\/p>\n<p>Ma il fatto che l\u2019attacco sia durato solo poche ore non \u00e8 un motivo per ignorarlo. Data la popolarit\u00e0 dei progetti interessati, il codice dannoso potrebbe essere stato eseguito migliaia di volte, anche all\u2019interno dell\u2019infrastruttura di aziende di grandi dimensioni.<\/p>\n<p>Ci\u00f2 ha consentito agli utenti malintenzionati di distribuire backdoor persistenti nei cluster Kubernetes, nonch\u00e9 di avviare <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> auto-replicante nell\u2019ecosistema JavaScript npm.<\/p>\n<p>Il codice degli autori dell\u2019attacco <a href=\"https:\/\/www.aikido.dev\/blog\/teampcp-stage-payload-canisterworm-iran\" target=\"_blank\" rel=\"noopener nofollow\">ha capacit\u00e0 distruttive<\/a> che spazzano via un cluster Kubernetes e tutti i relativi nodi se rileva il fuso orario di Teheran o il farsi come lingua primaria nel sistema compromesso. In altre regioni, il malware ruba semplicemente i dati utilizzando CanisterWorm.<\/p>\n<p>Secondo gli esperti, pi\u00f9 di 20.000 archivi sono considerati potenzialmente vulnerabili. Gli autori degli attacchi affermano di aver rubato centinaia di gigabyte di dati e <a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/popular-litellm-pypi-package-compromised-in-teampcp-supply-chain-attack\/\" target=\"_blank\" rel=\"noopener nofollow\">pi\u00f9 di mezzo milione di account<\/a>.<\/p>\n<h2>In che modo \u00e8 stato attaccato Trivy<\/h2>\n<p>Per compromettere Trivy, gli autori dell\u2019attacco hanno utilizzato le credenziali rubate in un incidente precedente. La <a href=\"https:\/\/cybernews.com\/security\/claude-powered-ai-bot-compromises-five-github-repositories\/\" target=\"_blank\" rel=\"noopener nofollow\">precedente compromissione di Trivy <\/a>, avvenuta a fine febbraio, probabilmente non era stata completamente contenuta e gli autori dell\u2019attacco, lo stesso gruppo TeamPCP, sono tornati con un nuovo attacco. Gli sviluppatori di Trivy, Aqua Security, <a href=\"https:\/\/github.com\/aquasecurity\/trivy\/discussions\/10425\" target=\"_blank\" rel=\"noopener nofollow\">ipotizzano<\/a> che, poich\u00e9 le credenziali venivano gradualmente eliminate in seguito all\u2019incidente precedente, gli autori dell\u2019attacco siano stati in grado di generare nuovi token di accesso prima che quelli vecchi compromessi venissero revocati.<\/p>\n<p>In seguito a questa operazione, TeamPCP \u00e8 stato in grado di compromettere le azioni GitHub utilizzate nelle pipeline CI\/CD. Utilizzando le credenziali con privilegi di scrittura tag, gli autori dell\u2019attacco hanno forzato l\u2019override di 76 tag di versione su 77 in aquasecurity\/trivy-action e tutti e sette i tag in aquasecurity\/setup-trivy, reindirizzando le versioni attendibili esistenti a commit dannosi. Analogamente alle tattiche osservate nella <a href=\"https:\/\/securelist.com\/shai-hulud-2-0\/118214\/\" target=\"_blank\" rel=\"noopener\">campagna Shai-Hulud 2.0<\/a>. Di conseguenza, i flussi di lavoro della pipeline hanno iniziato a eseguire il codice degli autori dell\u2019attacco, mentre i metadati della versione non hanno mostrato modifiche visibili.<\/p>\n<p>Allo stesso tempo, gli autori dell\u2019attacco hanno pubblicato un file binario Trivy (v0.69.4) infetto nei canali di distribuzione ufficiali, inclusi i rilasci di GitHub e i registri dei contenitori.<\/p>\n<h2>Compromissione LiteLLM<\/h2>\n<p>La compromissione del popolare strumento di accesso per modelli linguistici LiteLLM potrebbe innescare di per s\u00e9 una grave ondata di attacchi lungo la catena di progetti che lo utilizzano. L\u2019attacco ha avuto luogo il 24 marzo 2026, quando TeamPCP ha pubblicato direttamente versioni dannose della libreria (1.82.7 e 1.82.8) su PyPI. Tra le 10:39 UTC e le 16:00 UTC, questi pacchetti compromessi contenevano malware che rubava le credenziali. Era incorporato nel file <em>proxy_server.py<\/em> e la versione 1.82.8 conteneva anche un contenitore <em>litellm_init<\/em> dannoso. I dati rubati sono stati esfiltrati nel server <em>models.litellm[.]cloud<\/em>.<\/p>\n<p>I clienti che utilizzavano LiteLLM Cloud o l\u2019immagine Docker proxy LiteLLM ufficiale non sono stati interessati dal blocco rigoroso delle versioni, mentre gli sviluppatori e i progetti a valle che hanno installato versioni sbloccate tramite pip durante l\u2019intervallo di tempo specificato sono stati compromessi.<\/p>\n<p>Entro tre ore i pacchetti dannosi sono stati rimossi dall\u2019archivio PyPI e il team di LiteLLM ha sospeso le nuove versioni, ruotato le credenziali e avviato un processo esterno di risposta agli incidenti. \u00c8 consigliabile che i team che utilizzano LiteLLM nei propri progetti controllino immediatamente la presenza dell\u2019indicatore di compromissione <em>litellm_init.pth<\/em> e ruotino periodicamente tutti i secret potenzialmente compromessi.<\/p>\n<h2>Funzionalit\u00e0 del malware TeamPCP Cloud Stealer<\/h2>\n<p>Gli utenti malintenzionati hanno aggiunto una nuova logica a GitHub Actions e all\u2019eseguibile Trivy mantenendo la funzionalit\u00e0 originale. I risultati della scansione delle vulnerabilit\u00e0 tramite Trivy sembravano normali, ma allo stesso tempo venivano ricercati ed estratti dati preziosi. Il codice dannoso stava eseguendo le seguenti operazioni:<\/p>\n<ul>\n<li>esecuzione di ricognizioni (raccolta di dati di rete e variabili di ambiente);<\/li>\n<li>ricerca di token e credenziali per accedere agli ambienti cloud AWS e GCP;<\/li>\n<li>scansione della memoria <em>(\/proc\/*\/mem <\/em>) per estrarre i segreti archiviati nella memoria dei processi <em>Runner.Worker<\/em> e <em>Runner.Listener<\/em>;<\/li>\n<li>estrazione dei secret Kubernetes (<em>\/run\/secrets\/kubernetes.io\/serviceaccount<\/em>);<\/li>\n<li>raccolta dei dati per la connessione ai server di database (MySQL, PostgreSQL, MongoDB, Redis, Vault);<\/li>\n<li>raccolta di eventuali altre chiavi API e secret dai file di ambiente e dai file di configurazione CI\/CD (<em>.env, .json, .yml<\/em>);<\/li>\n<li>ricerca di webhook per i canali Slack e Discord;<\/li>\n<li>ricerca di dati relativi ai portafogli criptati (variabili relative alla blockchain di Solana, nonch\u00e9 ai dati <em>rpcuser<\/em> e <em>rpcpassword<\/em>).<\/li>\n<\/ul>\n<p>I dati raccolti sono stati sottoposti a criptaggio dei dati e caricati su un server con un nome simile a quello degli sviluppatori di Trivy (<em>scan.aquasecurtiy[.] or<\/em>g). Come meccanismo di backup, gli autori dell\u2019attacco hanno fornito un metodo per caricare i dati in un archivio denominato <em>docs-tpcp<\/em>.<\/p>\n<p>L\u2019attacco a CheckMarx e LiteLLM ha utilizzato una tattica simile con altri domini di typosquatting: <em>models.litellm[.]cloud<\/em> e <em>checkmarx[.]zone<\/em>.<\/p>\n<p>Un\u2019analisi tecnica dettagliata del malware, insieme agli indicatori di compromissione, \u00e8 disponibile nell\u2019articolo del nostro esperto <a href=\"https:\/\/securelist.com\/litellm-supply-chain-attack\/119257\/\" target=\"_blank\" rel=\"noopener\">sul blog Securelist<\/a>.<\/p>\n<h2>Strategie di risposta e di difesa per CVE-2026-33634<\/h2>\n<p>I controlli basati sulle firme esistenti e la scansione delle dipendenze nei registri pubblici non sono pi\u00f9 sufficienti, poich\u00e9 il codice dannoso \u00e8 stato iniettato direttamente nelle azioni attendibili e firmate ed \u00e8 sfuggito al rilevamento fino all\u2019applicazione del monitoraggio comportamentale. Le pipeline CI\/CD sono diventate il \u201cnuovo perimetro\u201d della sicurezza.<\/p>\n<p><strong>Azioni immediate. <\/strong>Verifica che tutti i flussi di lavoro utilizzino versioni protette (Trivy binary 0.69.3, trivy-action 0.35.0, setup-trivy 0.2.6).<\/p>\n<p>Gli amministratori della pipeline CI\/CD e i team di sicurezza devono esaminare immediatamente le proprie dipendenze dalle soluzioni Checkmarx (kics-github-action, ast-github-action) e Trivy (setup-trivy e trivy-action). Se i flussi di lavoro fanno riferimento a un tag di versione anzich\u00e9 a un hash SHA specifico, esamina attentamente i registri di esecuzione del flusso di lavoro per la durata dell\u2019attacco attivo alla supply chain.<\/p>\n<p>\u00c8 inoltre necessario verificare la presenza di traffico verso i domini <em>scan.aquasecurtiy[.] nei registri di rete org<\/em>, <em>checkmarx[.]zone<\/em> e <em>models.litellm[.]cloud<\/em>. La presenza di tale traffico indica che i dati sensibili sono stati esfiltrati correttamente.<\/p>\n<p>Se un archivio denominato docs-tpcp \u00e8 apparso nel GitHub dell\u2019organizzazione, ci\u00f2 potrebbe anche indicare una violazione dei dati riuscita.<\/p>\n<p>Controlla host e cluster per individuare segni di compromissione: presenza di file ~\/.config\/sysmon\/sysmon.py pod sospetti in Kubernetes.<\/p>\n<p>Svuota la cache ed esegui un inventario dei moduli PyPI: verifica la presenza di quelli dannosi ed esegui il rollback alle versioni pulite.<\/p>\n<p>In ogni caso, \u00e8 necessario condurre una <a href=\"https:\/\/www.kaspersky.it\/enterprise-security\/compromise-assessment?icid=it_kdailyplacehold_acq_ona_smm__onl_b2b_kasperskydaily_wpplaceholder_______\" target=\"_blank\" rel=\"noopener\">ricerca proattiva delle minacce<\/a>, presupponendo che i sistemi siano stati compromessi e che gli utenti malintenzionati siano avanzati rapidamente all\u2019interno dei sistemi interessati.<\/p>\n<p>\u00c8 consigliabile ripristinare gli ambienti interessati dai backup verificati.<\/p>\n<p><strong>Pinning delle dipendenze e gestione dei secret. <\/strong>Verifica che le versioni esatte delle dipendenze vengano aggiunte tramite hash di criptaggio in tutte le pipeline e nei Dockerfile. \u00c8 consigliabile passare dai token di lunga durata alle credenziali di breve durata utilizzando uno strumento di gestione dei secret e implementando le integrazioni OIDC, qualora supportate. Riduci al minimo l\u2019inserimento di secret nell\u2019ambiente di runtime: solo quando \u00e8 assolutamente necessario. Verifica che i secret non vengano archiviati su disco o in file temporanei e non vengano riutilizzati in processi diversi.<\/p>\n<p>Ruota tutte le credenziali potenzialmente compromesse: chiavi API, variabili di ambiente, chiavi SSH, token dell\u2019account di servizio Kubernetes e altri secret.<\/p>\n<p><strong>Altre soluzioni di sicurezza <\/strong>Consenti solo azioni GitHub da un elenco approvato dall\u2019organizzazione; blocca i processi nuovi e non verificati. Configura <em>GITHUB_TOKEN<\/em> e altre chiavi di accesso in base al principio del privilegio minimo. Non concedere le autorizzazioni di scrittura a meno che non sia assolutamente necessario.<\/p>\n<p>Per migliorare la sicurezza delle azioni GitHub, sono disponibili diversi strumenti open source:<\/p>\n<ul>\n<li>zizmor \u2014 uno strumento per l\u2019analisi statica e il rilevamento degli errori di configurazione nelle azioni GitHub;<\/li>\n<li>gato e Gato-X \u2014 due versioni di uno strumento che aiuta a identificare le condotte strutturalmente vulnerabili;<\/li>\n<li>allstar \u2014 un\u2019applicazione GitHub, sviluppata da OpenSSF, per configurare e applicare i criteri di sicurezza nelle organizzazioni e negli archivi GitHub.<\/li>\n<\/ul>\n<p>Per saperne di pi\u00f9 sugli attacchi alla supply chain, ti invitiamo a consultare il nostro rapporto analitico <a href=\"https:\/\/kas.pr\/k8rs\" target=\"_blank\" rel=\"noopener\">Reazione della supply chain: proteggere l\u2019ecosistema digitale globale in un\u2019era di interdipendenza<\/a>. Si basa sugli approfondimenti di esperti tecnici e rivela con quale frequenza le organizzazioni affrontano rischi nella supply chain e nelle relazioni di fiducia, dove permangono lacune nella protezione e quali strategie adottare per migliorare la resilienza a questo tipo di minacce.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"mdr\"><input type=\"hidden\" class=\"placeholder_for_banner\" data-cat_id=\"mdr\" value=\"28636\">\n","protected":false},"excerpt":{"rendered":"<p>In che modo le soluzioni di sicurezza open source sono diventate il punto di partenza per un massiccio attacco ad altre applicazioni diffuse e cosa dovrebbero fare le organizzazioni che le utilizzano.<\/p>\n","protected":false},"author":2706,"featured_media":30578,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2641],"tags":[3929,638,3003,3076,753,584],"class_list":{"0":"post-30577","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-threats","8":"tag-attacchi-alla-supply-chain","9":"tag-minacce","10":"tag-open-source","11":"tag-supply-chain","12":"tag-tecnologia","13":"tag-vulnerabilita"},"hreflang":[{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30577\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30309\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/25363\/"},{"hreflang":"ar","url":"https:\/\/me.kaspersky.com\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/13296\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30159\/"},{"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":"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":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/55510\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/23768\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/24855\/"},{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/33335\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/30454\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/36042\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/critical-supply-chain-attack-trivy-litellm-checkmarx-teampcp\/35701\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.it\/blog\/tag\/supply-chain\/","name":"supply chain"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/30577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/users\/2706"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/comments?post=30577"}],"version-history":[{"count":3,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/30577\/revisions"}],"predecessor-version":[{"id":30586,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/posts\/30577\/revisions\/30586"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/media\/30578"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/media?parent=30577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/categories?post=30577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.it\/blog\/wp-json\/wp\/v2\/tags?post=30577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}