Sicurezza informatica

Il Fantasma nella Macchina: Come l'Unicode Invisibile sta Perseguitando le Supply Chain di GitHub

I ricercatori scoprono 151 pacchetti GitHub malevoli che utilizzano Unicode invisibile per nascondere il codice. Scopri come funziona questo attacco alla supply chain e come proteggere il tuo codice.
Il Fantasma nella Macchina: Come l'Unicode Invisibile sta Perseguitando le Supply Chain di GitHub

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.

La Meccanica dell'Invisibilità

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.

Perché le Difese Tradizionali sono Sconcertate

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.

Confronto tra i Vettori di Attacco alla Supply Chain

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

L'Incidente di Marzo 2026

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à.

Come Proteggere la Tua Pipeline

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:

  • Abilitare gli Avvisi Unicode negli IDE: Gli editor moderni come VS Code e IntelliJ dispongono di plugin o impostazioni native che evidenziano i caratteri "ambigui" o non stampabili. Assicurati che siano attivati per tutti i membri della tua organizzazione.
  • Implementare Linter con Controlli Unicode: Utilizza linter che segnalino specificamente i caratteri non ASCII nel codice sorgente, a meno che non siano esplicitamente consentiti (ad esempio, nei file di localizzazione).
  • Usare Lockfile e Pinning: Usa sempre 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.
  • Controllare i Log CI/CD: Cerca chiamate di rete in uscita inaspettate durante il processo di build. I pacchetti malevoli spesso cercano di "chiamare casa" con le credenziali rubate immediatamente dopo l'installazione.

La Strada da Seguire

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.

Fonti

  • Aikido Security Research Blog: "The Rise of Invisible Malicious Packages"
  • Unicode Consortium: "UTR #36: Unicode Security Considerations"
  • GitHub Security Advisory Database
  • NIST Special Publication 800-204: "Security Strategies for Microservices-based Applications"
bg
bg
bg

Ci vediamo dall'altra parte.

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