Librerie Malevole: Malicious Library (T1204.005)
La tecnica T1204.005 — Malicious Library descrive lo scenario in cui un utente installa volontariamente una libreria software compromessa, aprendo di fatto la porta all'esecuzione di codice ostile senza che l'attaccante debba superare i controlli tipici della fase di Initial Access. Rientra nella tattica TA0002 (Execution) della matrice MITRE ATT&CK e si colloca in una zona grigia della kill chain, perché sfrutta la fiducia riposta dagli sviluppatori negli ecosistemi di package manager come npm, PyPI, RubyGems, Maven Central o nei repository pubblici su GitHub.
Gli avversari perseguono due strategie complementari: pubblicare pacchetti nuovi con nomi simili a librerie legittime — pratica nota come typosquatting — oppure compromettere e retrocedere pacchetti già popolari, ricadendo così nel dominio delle supply chain attack. Una volta importata nel progetto, la libreria può stabilire persistenza, esfiltrare credenziali di sviluppo, cloud token o chiavi SSH, oppure avviare miner di criptovaluta sfruttando le risorse della macchina di sviluppo o dei sistemi CI/CD.
L'impatto è amplificato dal fatto che ambienti di sviluppo hanno spesso privilegi elevati, accesso a segreti aziendali e connettività verso repository interni. Anche un singolo endpoint compromesso può trasformarsi in punto di pivot verso pipeline di build, container registry e ambienti di produzione.
In un esercizio red team autorizzato, la simulazione di T1204.005 richiede la costruzione di un pacchetto malevolo controllato e la sua distribuzione in un registry di laboratorio, mai su ecosistemi pubblici. Un approccio realistico prevede l'utilizzo di Verdaccio (open source), un registry npm privato che consente di ospitare pacchetti finti replicando fedelmente il comportamento del registry ufficiale, oppure di devpi (open source) per l'ecosistema Python.
La catena tipica inizia con la creazione di un pacchetto typosquatted. Per npm si costruisce un package.json che dichiara uno script di installazione automatico:
npm init -y
Successivamente si modifica manualmente il file aggiungendo la sezione "scripts": {"postinstall": "node payload.js"}. Il file payload.js esegue la raccolta di informazioni ambientali — variabili contenenti token, file .npmrc, chiavi in ~/.ssh/ — e le invia a un listener controllato dal team. Con Python la logica equivalente sfrutta il setup.py sovrascrivendo la classe install di setuptools per eseguire codice al momento di pip install nome-pacchetto.
Per la fase di generazione dei nomi typosquatted, strumenti come typogen e confusable_homoglyphs (open source) aiutano a produrre varianti credibili di librerie popolari. Il team può poi caricare il pacchetto nel registry di lab con npm publish --registry
Sul versante della validazione difensiva, è utile testare la resilienza del processo di sviluppo introducendo il pacchetto in una macchina virtuale isolata e osservando se strumenti come Socket (freemium), Snyk (freemium) o OSSF Scorecard (open source) lo intercettano prima dell'installazione. Il progetto package-analysis di OpenSSF (open source) esegue pacchetti in sandbox e registra syscall e connessioni di rete, replicando la logica adottata da PyPI e npm nei loro scanner interni.
Per emulare specificamente il comportamento del gruppo Contagious Interview, che ha distribuito librerie malevole ospitate su repository pubblici e proposte a sviluppatori target durante finti processi di selezione, l'esercizio dovrebbe includere una componente di social engineering: proporre al target di clonare un repository di test contenente il pacchetto ostile come dipendenza, misurando quanti destinatari eseguono l'installazione senza revisione preventiva del codice.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo