Security Research - Dependency Confusion PoC
Project description
phabricator-client — Security Research / Dependency Confusion PoC
Version 99.0.0
This package is published for security research purposes only as a proof-of-concept for a Dependency Confusion / Supply Chain vulnerability.
The package name was found unclaimed on the Python Package Index (PyPI) as an internal/workspace-only package that was never published publicly. This is a classic dependency confusion scenario where an attacker can register the missing package name and achieve code execution on any system that depends on it.
Why Dependency Confusion Works
When projects declare dependencies in pyproject.toml, setup.py, or requirements.txt, package managers like pip resolve the package name against the public registry (PyPI). If a package name is:
- Declared as a dependency in a public repository
- Referenced as a workspace/internal member but never published
- Not pinned to a specific version or registry
→ Any attacker can register the missing name on PyPI and have their code executed by anyone installing the parent project.
The [tool.uv.sources] or workspace-only configuration only protects uv users within the monorepo. Standard tools like pip, poetry, and pipenv ignore these directives and resolve from PyPI — where the package did not exist until now.
Impact
| Capability | Severity |
|---|---|
Remote Code Execution during pip install |
CRITICAL |
| Supply chain contamination of CI/CD pipelines | CRITICAL |
| Credential / token theft from build environments | CRITICAL |
| Persistent access as the dependency owner | HIGH |
Remediation
- Publish the legitimate package to PyPI under an organization account
- Pin dependencies with version constraints
- Use a private/scoped package registry for internal packages
- Implement automated dependency confusion scanning in CI/CD
This is a benign proof-of-concept. No malicious code is included.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file phabricator_client-99.0.1.tar.gz.
File metadata
- Download URL: phabricator_client-99.0.1.tar.gz
- Upload date:
- Size: 2.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b276be6610fa02b5e211301ae20be68ec3d1ca46288f3ff7f58c3df00b812f40
|
|
| MD5 |
b350d3861a0af917adf94984fbe9b804
|
|
| BLAKE2b-256 |
ecf55d2de17e132fe4b7d2c9a9bd7dd03339d631cf2722e94b823a48fb6c9def
|
File details
Details for the file phabricator_client-99.0.1-py3-none-any.whl.
File metadata
- Download URL: phabricator_client-99.0.1-py3-none-any.whl
- Upload date:
- Size: 2.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf4ae88553f5173d4214649dc244f3947611c8bf737d55d13c894fe11e9d71da
|
|
| MD5 |
4e6a5e8ec2e75cc56072960e55f66452
|
|
| BLAKE2b-256 |
1f94e34da9b24e425e0fba5548fc1062874f3bc63a5dc373fdea7a4e5a6afc6f
|