| name | dep-confusion |
| description | Dependency confusion — publish a higher-version internal package name on public registry (npm/PyPI/Maven/Crates) to coerce CI/CD into pulling attacker code. |
| metadata | {"when_to_use":"dependency confusion npm pypi maven internal package private registry","mitre_attack":"T1195.002","subdomain":"supplychain","upstream_ref":"skills/_corpus/payloads/Dependency Confusion/"} |
Dependency Confusion (Alex Birsan 2021)
When an org uses internal private packages (e.g. @target-internal/utils)
AND a build system that searches BOTH public + private registries, an
attacker can publish a public package w/ the same name at higher version.
Default resolvers pick highest version → public package runs in CI.
1. Reconnaissance — find internal package names
| Source | Pattern |
|---|
package.json in public repo | "@target/foo" scoped packages |
package.json exfiltrated from web (/static/) | dependency lists |
| Webpack bundles | leaked package.json strings |
requirements.txt / Pipfile exposure | target-internal-lib |
pom.xml / build.gradle | <groupId>com.target</groupId> |
|