Dependency confusion: il pacchetto interno impersonato
Le aziende usano pacchetti interni (azienda-utils) da un registro privato. La dependency confusion sfrutta come i package manager scelgono dove prenderli.
Il meccanismo
Se un nome interno non è registrato anche sul registro pubblico, l'attaccante lo pubblica lì con una versione più alta. Molti client, cercando in entrambi i registri, scelgono la versione più alta — quella pubblica malevola — ed eseguono il suo codice di install nella build (spesso in CI, con accesso a segreti).
// package.json interno: "azienda-utils": "^1.0.0"
// attaccante pubblica [email protected] su npm pubblico
// npm install prende la 99.0.0 -> preinstall script -> RCE in CIHa funzionato contro grandi aziende come dimostrazione (Alex Birsan, 2021).
Difesa
Riserva i nomi interni anche sui registri pubblici (namespace/scope: @azienda/utils). Configura il client per prendere quegli scope solo dal registro privato (scoped registry). Verifica di integrità/lockfile, e blocca gli install script non fidati in CI. Mai lasciare che il registro pubblico vinca su quello privato.