La sicurezza della supply chain è stata a lungo un gioco del gatto e del topo, ma una recente scoperta dei ricercatori di Aikido Security suggerisce che il topo abbia trovato un modo per diventare invisibile. Tra il 3 e il 9 marzo 2026, una sofisticata campagna ha inondato GitHub e altri importanti repository con 151 pacchetti malevoli. A differenza degli attacchi di typosquatting del passato, che si basavano su errori di ortografia nel nome di una libreria da parte degli utenti, questi pacchetti hanno utilizzato caratteri Unicode invisibili per nascondere logiche malevole sotto gli occhi di tutti.
Questa tecnica rappresenta una significativa evoluzione nel modo in cui gli aggressori sfruttano la fiducia intrinseca negli ecosistemi open-source. Sfruttando caratteri che l'occhio umano non può vedere, ma che i compilatori e gli interpreti elaborano con precisione clinica, gli attori delle minacce riescono a bypassare le revisioni manuali del codice e i tradizionali scanner di sicurezza.
Al centro di questo attacco risiede la complessità di Unicode, lo standard internazionale per la codifica dei caratteri di quasi tutti i sistemi di scrittura. Mentre la maggior parte di noi pensa a Unicode in termini di emoji o lettere accentuate, lo standard include anche una varietà di caratteri "non stampabili". Questi includono spazi a larghezza zero, override direzionali e joiner che non occupano alcuno spazio visivo su uno schermo.
Quando uno sviluppatore revisiona una pull request o ispeziona il codice sorgente di una libreria, il suo IDE o editor di testo tipicamente non renderizza affatto questi caratteri. Tuttavia, per un interprete Python o un motore JavaScript, questi caratteri sono punti dati distinti. Un aggressore può inserire un payload malevolo all'interno di una stringa o di un commento che appare vuoto a un essere umano, ma che esegue un comando quando il codice viene avviato.
Ad esempio, un aggressore potrebbe utilizzare un carattere "Right-to-Left Override" (U+202E). Questo carattere è progettato per supportare lingue come l'arabo o l'ebraico invertendo la direzione del testo che lo segue. In un contesto malevolo, può essere utilizzato per far apparire un file denominato annoying_executable.exe.txt come annoying_txt.exe, ingannando l'utente e spingendolo a eseguire un programma che crede essere un semplice file di testo.
Per quasi un decennio, la sicurezza della supply chain si è concentrata sul "typosquatting" e sulla "confusione delle dipendenze". Gli strumenti di sicurezza sono stati costruiti per segnalare pacchetti con nomi come requesst invece di requests. Questi strumenti sono eccellenti nel pattern matching di stringhe dannose note, ma faticano con ciò che non c'è.
Molti strumenti legacy di test di sicurezza dell'analisi statica (SAST) si affidano alle espressioni regolari (regex) per trovare vulnerabilità. Se una regex non è specificamente configurata per cercare intervalli Unicode non stampabili, li salterà semplicemente. Inoltre, poiché questi caratteri sono Unicode validi, non attivano necessariamente avvisi di "file malformato". Il codice rimane sintatticamente corretto, anche se il suo comportamento è nascosto.
Per comprendere la gravità di questa nuova ondata, è utile confrontarla con i metodi più tradizionali di avvelenamento dei repository.
| Metodo di Attacco | Meccanismo Principale | Visibilità per gli Umani | Difficoltà di Rilevamento |
|---|---|---|---|
| Typosquatting | Nomi di pacchetti errati | Alta (se si osserva attentamente) | Bassa |
| Dependency Confusion | Sfruttamento nomi interni vs. pubblici | Bassa | Media |
| Unicode Invisibile | Caratteri non stampabili nel sorgente | Nulla | Alta |
| Sottrazione di Account | Furto delle credenziali del manutentore | Nessuna | Molto Alta |
I 151 pacchetti identificati da Aikido Security non erano solo proof-of-concept; erano tentativi attivi di raccogliere variabili d'ambiente, chiavi SSH e credenziali cloud dalle macchine degli sviluppatori. Quando i ricercatori hanno segnalato la campagna, alcuni di questi pacchetti erano già stati integrati in pipeline di build automatizzate, evidenziando la velocità con cui queste minacce si propagano.
Ciò che rende questa specifica campagna degna di nota è l'enorme volume di pacchetti rilasciati in una finestra di sei giorni. Ciò suggerisce un alto grado di automazione da parte dell'aggressore, probabilmente utilizzando script per generare versioni "ombra" di librerie popolari e iniettando i payload invisibili in comuni funzioni di utilità.
Mentre gli aggressori si spostano verso minacce invisibili, gli sviluppatori e gli ingegneri DevOps devono adattare la loro postura difensiva. Affidarsi all'ispezione visiva non è più sufficiente. Ecco alcuni passaggi pratici per mitigare il rischio di iniezione di codice invisibile:
package-lock.json, poetry.lock o requirements.txt con hash specifici. Questo impedisce al tuo sistema di build di scaricare automaticamente una versione "recente" malevola di una dipendenza.La scoperta di questi 151 pacchetti è un monito che la supply chain open-source è un ecosistema vivo con predatori in continua evoluzione. Il passaggio verso attacchi Unicode invisibili mostra che gli attori delle minacce si stanno allontanando dall'ingegneria sociale per dirigersi verso l'offuscamento tecnico che sfrutta i limiti della percezione umana.
Mentre procediamo nel 2026, l'industria deve muoversi verso un modello "Zero Trust" per le dipendenze. Non possiamo più presumere che il codice sia sicuro solo perché appare pulito su uno schermo. La verifica deve essere algoritmica, automatizzata e abbastanza profonda da vedere ciò che l'occhio umano non può percepire.



La nostra soluzione di archiviazione e-mail crittografata end-to-end fornisce i mezzi più potenti per lo scambio sicuro dei dati, garantendo la sicurezza e la privacy dei tuoi dati.
/ Creare un account gratuito