A high-concurrency CLI tool for detecting web cache poisoning vulnerabilities.
Project description
CachePoisonDetector (CPD-SEC)
A high-concurrency CLI tool for detecting web cache poisoning vulnerabilities.
Overview
CPD-SEC is a security tool designed to identify vulnerabilities in web caching systems that allow cache poisoning attacks.
Installation
Using Pip (Recommended)
You can install CPD-SEC directly from PyPI:
pip install cpd-sec
From Source
-
Clone the repository:
git clone https://github.com/kankburhan/cpd.git cd cpd
-
Install dependencies using Poetry:
poetry installAlternatively, calculate dependencies to requirements.txt and use pip:
pip install .
Usage
CPD-SEC supports multiple input methods and extensive configuration options.
1. Basic Scan (--url)
Scan a single target URL.
# Installed via pip
cpd-sec scan --url https://example.com
# Using poetry
poetry run cpd-sec scan --url https://example.com
2. Pipeline Mode (Stdin)
Pipe URLs from other tools (like waybackurls, gau, subfinder, or cat) directly into CPD-SEC. This is ideal for mass scanning.
# Scan URLs found by waybackurls
waybackurls target.com | cpd-sec scan
# Scan URLs from a file using cat
cat urls.txt | cpd-sec scan --concurrency 20
3. File Input (--file)
Read URLs from a text file (one URL per line).
cpd-sec scan --file urls.txt
4. Raw Request Scan (--request-file)
Scan using a raw HTTP request definition (e.g., copied from Burp Suite).
# Save your request to a file (e.g. request.txt)
cpd-sec scan --request-file request.txt
Alternative: Direct String (--raw)
Use with caution due to shell escaping characters.
cpd-sec scan --raw "GET /api/foo HTTP/1.1
Host: example.com"
5. Advanced Options
Custom Headers (--header)
Add custom headers to every request (e.g., cookies, authorization). You can use this flag multiple times.
cpd-sec scan -u https://admin.example.com \
-h "Cookie: session=12345" \
-h "Authorization: Bearer XYZ"
Output to File (--output)
Save the findings to a JSON or HTML file.
JSON Output:
cpd-sec scan -u https://example.com --output results.json
HTML Report (NEW!): Generate a professional HTML security report with PoC details:
cpd-sec scan -u https://example.com --output report.html
Auto-Open Report (--open):
Automatically open the HTML report in your browser:
cpd-sec scan -u https://example.com --output report.html --open
HTML reports include:
- 🔬 Evidence section with cache headers and variant URLs
- 🎯 Proof-of-Concept URLs ready for manual verification
- 📋 Copy-paste curl commands with malicious headers
- ⚠️ Reflected content sections showing where payloads appear
Concurrency (--concurrency)
Control the number of simultaneous requests (default: 50).
cpd-sec scan -f targets.txt --concurrency 100
Verbosity (--verbose, --quiet)
Control output levels.
cpd-sec scan -u https://example.com -v # Debug logging
cpd-sec scan -u https://example.com -q # Only show findings
5. Utilities
Validate Finding (validate)
Manually verify a vulnerability claim step-by-step.
cpd-sec validate --url https://target.com --header "X-Forwarded-Host: evil.com"
Update Tool (update)
Check for and install the latest version of CPD-SEC.
cpd-sec update
Features
- Auto Update Check: Automatically checks for new versions on run.
- High Concurrency: Built with
asyncioandaiohttpfor speed. - Smart Baseline: Establishes a stable baseline to reduce false positives.
- HTML Security Reports: Professional reports with PoC URLs, curl commands, and evidence details.
- Advanced Poisoning Detection:
- Header Injection:
X-Forwarded-Host,X-Forwarded-Scheme,Fastly-Client-IP, etc. - Path Normalization: Exploits backend URL decoding differences (
/foo\bar). - Query Parameter Normalization: Detects case-insensitive query param cache keys.
- Fat GET: Sends request bodies with GET requests.
- Unkeyed Query Params: Injects parameters to test cache key inclusion.
- Method Override: Tests
X-HTTP-Method-Override. - Cache Key Confusion: Tests URL encoding variants and cache key calculation.
- Next.js Cache Poisoning (CVE-2026): Dedicated detection module for 9 Next.js CVEs:
CVE-2026-44572:x-nextjs-dataredirect cache poisoningCVE-2026-44576: RSC/HTML cache confusionCVE-2026-44582: Weak_rsccache-busting hash collisionCVE-2026-44575: App Router middleware bypass via.rscsuffixCVE-2026-44573: Pages Router i18n data-route bypassCVE-2026-44574:nxtP/nxtIparameter injectionCVE-2026-44579:next-resumeheader injection (cache poisoning + CPDoS)CVE-2026-44581: CSP nonce reflection via cacheCVE-2026-23870: Server-action stream DoS
- Header Injection:
- Pipeline Ready: Designed to integrate into your reconnaissance workflow.
Contributing
We welcome contributions to improve CPD-SEC, especially for new poisoning signatures and false positive reductions.
Reporting False Positives
If you encounter a false positive (a reported vulnerability that is benign), please open an Issue with:
- Replication Output: The output of the
validatecommand:cpd-sec validate --url <TARGET_URL> --header "KEY: VALUE"
- Context: Why you believe it is benign (e.g., "The server normalizes the path but returns the same content").
Contributing Code
- Fork the repository.
- Clone your fork locally.
- Install dependencies:
poetry install. - Create a Branch for your feature/fix.
- Add/Modify Signatures in
cpd/logic/poison.py. - Add Tests in
tests/to verify your changes. - Submit a Pull Request!
Support & Donations
If CPD-SEC helped you find vulnerabilities and improve security, consider supporting its development!
💳 PayPal:
paypal.me/kankburhan
💰 Crypto (USDC):
0x4618393bf4ddc50eb3e75df849b46aca0d0f8e3c
Your support helps maintain and improve this open-source security tool. Thank you! 🙏
License
MIT License - see LICENSE file for details.
Project details
Release history Release notifications | RSS feed
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 cpd_sec-0.10.2.tar.gz.
File metadata
- Download URL: cpd_sec-0.10.2.tar.gz
- Upload date:
- Size: 74.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.9.25 Linux/6.17.0-1010-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6504ac847ef20c7334f432ebbdf2eef3dc10ad1106d38f35e7335b7a654d71d8
|
|
| MD5 |
e9a150bce7211b3cbaedfa1c4886fdf3
|
|
| BLAKE2b-256 |
6bc0eb73d7302cf6b90a17e30da30a7322fca417c8e28c02bdc6805683ebed9d
|
File details
Details for the file cpd_sec-0.10.2-py3-none-any.whl.
File metadata
- Download URL: cpd_sec-0.10.2-py3-none-any.whl
- Upload date:
- Size: 86.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.9.25 Linux/6.17.0-1010-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca1ec3579f05cddf76bee840cfee468132c30f204a43b33c6464410a827cd35a
|
|
| MD5 |
be58cbf1edd983fdf2153a18ca72af86
|
|
| BLAKE2b-256 |
dd754756f0d00fc8302f838aa351b76889d5f12ea519fdef2ab80abd693c5946
|