Compromissione della Supply Chain Software: Compromise Software Dependencies and Development Tools (T1195.001)
La tecnica T1195.001 descrive la manipolazione di dipendenze software e strumenti di sviluppo prima che arrivino al consumatore finale, con l'obiettivo di compromettere sistemi o dati a valle. Rientra nella tattica TA0001 (Initial Access) e rappresenta uno dei vettori più insidiosi del panorama attuale, perché sfrutta la fiducia implicita che sviluppatori e pipeline CI/CD ripongono nei registry pubblici come npm, PyPI, NuGet, Maven, RubyGems e crates.io.
Gli avversari sfruttano diverse leve: iniezione di codice in pacchetti popolari tramite compromissione delle credenziali del maintainer, typosquatting (pubblicazione di pacchetti con nomi simili a quelli legittimi), dependency confusion (sfruttamento della precedenza dei registry pubblici su quelli privati), e ri-registrazione di pacchetti abbandonati. Un vettore emergente riguarda le GitHub Actions: compromettere un'action molto usata permette di propagare codice malevolo a migliaia di repository consumer, catturando secret runtime dal filesystem proc e inserendo backdoor nelle build.
L'impatto è di scala industriale: casi documentati come XCSSET (S0658) che infetta progetti Xcode manipolando i file target_integrator.rb di CocoaPods, e BeaverTail (S1246) distribuito via pacchetti npm, mostrano come un singolo componente compromesso possa colpire migliaia di sviluppatori. La detection è complicata perché l'esecuzione avviene in contesti autorizzati (build server, workstation dev) e il traffico verso registry pubblici è normalmente consentito.
In un ingaggio red team autorizzato, la simulazione di T1195.001 richiede un ambiente lab isolato e obiettivi concordati con il cliente. La catena tipica parte dalla ricognizione del target: identificare quali dipendenze interne l'azienda pubblica su registry pubblici, quali GitHub Actions custom mantiene, e quali pacchetti privati potrebbero essere vulnerabili a dependency confusion.
Per il typosquatting su npm in laboratorio, uno script Python che interroga l'API pubblica del registry (endpoint di ricerca standard) permette di generare varianti ortografiche (character swap, homoglyph, scope confusion) dei pacchetti target. Tool come confused (open source, GitHub visma-prodsec/confused) automatizzano l'identificazione di pacchetti candidati alla dependency confusion analizzando package.json, requirements.txt o pom.xml del bersaglio:
confused -l npm package.json
Per la simulazione di malicious package, il payload va inserito negli hook di lifecycle. In un package npm di test si sfrutta preinstall o postinstall nel package.json; in Python il codice arbitrario può risiedere in setup.py durante pip install. In lab, il payload deve limitarsi a un beacon HTTP verso il C2 red team, evitando persistenza reale.
Per la compromissione simulata di GitHub Actions, si costruisce un'action custom in un repository controllato che, quando invocata come uses: in un workflow target, legge variabili d'ambiente (GITHUB_TOKEN, secret esposti) e le esfiltra. Il tool gato (open source, GitHub praetorian-inc/gato) esegue enumerazione di GitHub Actions vulnerabili, injection in workflow e privilege escalation via pull_request_target:
gato enumerate -t organizzazione-target
Per supply chain su ecosistema Python, bandersnatch (open source) permette di mirrorare PyPI in lab per test controllati, mentre pypi-server (open source) simula un registry interno per riprodurre scenari di confusion.
Su macOS, la simulazione XCSSET-like richiede la manipolazione controllata di un progetto Xcode di test: un payload Ruby che itera i file .xcodeproj in una directory sandbox e inietta uno script build phase, senza toccare progetti reali. Per orchestrare l'intera catena, framework come Caldera (open source, MITRE) permettono di codificare abilità T1195.001 in operazioni ripetibili e misurabili.
Documentare ogni pacchetto pubblicato, garantire il takedown post-esercizio e coordinarsi con i registry per evitare impatto su utenti terzi sono requisiti etici non negoziabili.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo