Releases: rodhnin/argus-wp-watcher
Release list
v0.2.0 — CVE Correlation & Enhanced Security Intelligence
Argus v0.2.0 is a major feature release. Six months after v0.1.0, this version adds real-time CVE correlation, OWASP Top 10 2021 mapping, CVSS scoring, scan diff reports, a vastly expanded aggressive mode, and a completely redesigned AI subsystem with cost tracking, streaming, multi-LLM comparison, and tool-calling agents — all on top of free, no-key-required vulnerability APIs.
What's New
CVE Correlation & Vulnerability Detection
argus/core/vuln_db.py— WPVulnerability.net API client (free, no API key required):- Real-time CVE/CWE lookup for plugins, themes, and WordPress core versions
- CWE-based severity engine: SQL injection / RCE / file upload → Critical; XSS / CSRF / auth bypass → High
- Version range matching with
lt/lte/gt/gteoperators and semver pre-release support - In-memory cache (1-hour TTL); graceful failure if API is unreachable
ARGUS-WP-012: Vulnerable plugin detected — severity auto-upgraded to critical/high based on CVE dataARGUS-WP-022: Vulnerable theme detectedARGUS-WP-001enhanced: WordPress core version queried against CVE database; severity upgraded when CVEs are present
OWASP Top 10 2021 Mapping
argus/core/owasp.py: maps all 84ARGUS-WP-XXXfinding IDs to their OWASP Top 10 2021 category (A01–A10); applied centrally at report time- HTML report: purple OWASP badge per finding, links to the relevant OWASP Top 10 page
Latest Version Detection
- WordPress.org API integration:
get_plugin_latest_version()andget_theme_latest_version()— cached, graceful on failure - Vulnerable findings now include
latest_versionfield with current stable release - HTML report: green version badge per outdated/vulnerable component
CVSS Score Enrichment
- NVD NIST API v2.0 integration —
get_cvss_score(cve_id)(free, no API key); tries V3.1 → V3.0 → V2 base score in order - CVSS scores fetched in parallel (max 10 CVEs per scan to respect NVD rate limits)
- HTML report: color-coded CVSS badge per CVE — Red ≥9.0 / Orange ≥7.0 / Yellow ≥4.0 / Green <4.0
Scan Diff Reports (--diff)
--diff last— compare current scan against the most recent prior scan for the same domain--diff <scan_id>— reference any specific scan by database IDargus/core/diff.py: categorizes findings as new / fixed / persisting (matched byARGUS-WP-XXXcode)- Mode mismatch detection: safe vs aggressive diffs flag
mode_mismatch: truewith an amber warning banner in HTML - New top-level
diffobject in the JSON schema
Enhanced HTML Report
- Severity filter bar: interactive All / Critical / High / Medium / Low / Info buttons with live counts
- CVE badges: red pills per finding linking directly to NVD
- CWE badges: purple pills, deduplicated across all vulnerability records for the same finding
- CVSS score badges: color-coded inside expandable CVE detail panels
- Latest stable version badge: green badge per outdated/vulnerable component
- OWASP Top 10 2021 badge: purple badge per finding with link to OWASP site
- Security header config snippets: ready-to-paste Apache / Nginx / WordPress code blocks per missing header finding
- Expandable recommendations: truncated at 200 characters with "Show more" toggle
- Diff section: new / fixed / persisting tables with mode mismatch warning banner
Login Security Checks (Aggressive Mode Only)
New module argus/checks/login.py:
ARGUS-WP-070: Login page accessibility (custom URL or block detected)ARGUS-WP-071: 2FA/MFA — login page HTML scan + plugin directory probe for 13 known 2FA slugsARGUS-WP-072: CAPTCHA — reCAPTCHA v2/v3, hCaptcha, Cloudflare Turnstile, common pluginsARGUS-WP-073: Brute force protection — single controlled probeARGUS-WP-074: Open user registration detectionARGUS-WP-075: Password policy — plugin / strength meter JS / no enforcement
Web Crawl & Content Discovery (Aggressive Mode Only)
New module argus/checks/crawl.py:
ARGUS-WP-080:robots.txt— flags sensitive Disallow paths, ignores standard WP pathsARGUS-WP-081:sitemap.xml— parses XML<loc>entries and flags security-relevant URLsARGUS-WP-082: HTML comment extraction — regex scan for 40+ sensitive keywordsARGUS-WP-083: Link crawl (depth 1, up to 50 links) — flags interesting internal paths
Aggressive Mode Enhancements
| Safe | Aggressive | |
|---|---|---|
| Plugins | 100 | 447 |
| Themes | 25 | 43 |
| File paths | 74 | 437 |
| Rate limit | 5 req/s | 10 req/s |
| Threads floor | — | 10 |
AI Enhancements
- AI cost tracking:
AICostTrackercalculates real token cost per scan; saved to~/.argos/costs.jsonandai_costsDB table --ai-budget USD: enforce maximum cost per scan; warns at 80%, aborts if exceeded--ai-stream: stream AI tokens to stdout in real time (all providers via LangChain LCEL)--ai-compare PROVIDERS: run analysis through multiple providers in parallel — e.g.openai,anthropic--ai-agent: agent mode with tool-calling loop — NVD CVE lookup + WPVulnerability.net search (no extra API keys)--ai-provider/--ai-model: override provider and model at runtime- Default model changed:
gpt-4-turbo-preview→gpt-4o-mini-2024-07-18(67x cheaper, same quality for security analysis)
Automated Lab Setup
docker/setup-lab.sh: automates turning a fresh WordPress container into a full vulnerable demo site — installs Contact Form 7 v5.3.1 and Elementor v3.5.0 (real CVE histories), creates two enumerable users, enables open registration and debug logging
Bug Fixes
- Vulnerability title deduplication: fixed with 4-priority title picker (WPScan advisory name → hex source name → CVE ID → API name)
- HTML entities in vulnerability titles: fixed with
html.unescape()throughout - Diff computed after report was saved: reordered to save findings → compute diff → save JSON/HTML
- PHP admin tool false negatives (
adminer.php,phpinfo.php): fixed with explicit keyword check robots.txtfalse positive on/wp-content/uploads/: fixed withROBOT_SAFE_PATHSwhitelist- 2FA detection gap for modern plugins: fixed with plugin directory probe fallback
- ThreadPoolExecutor capped at 5 in aggressive mode: fixed to use
effective_config.max_workersdirectly --threadsoverride overwritten by aggressive floor: fixed withmax(config.max_workers, 10)rate_limit_safemismatch betweenconfig.py(3.0) anddefaults.yaml(5.0): aligned to 5.0~not expanded in YAML paths: fixed with.expanduser()on all path fieldscosts.jsonparent directory not created on first run: fixed withmkdir(parents=True, exist_ok=True)- Compare mode cost recorded as $0.00: fixed by summing
cost_by_provider - Schema validation failures for 6 new
ai_analysisfields: all added to schema - Finding ID collision between login and config checks: login reassigned to 070–075
Migration from v0.1.0
Fully backward compatible. No database migration required.
The only breaking change is the default AI model (gpt-4o-mini-2024-07-18 replaces gpt-4-turbo-preview) — if you rely on the old model, set it explicitly via --ai-model or config/defaults.yaml.
Quick Start
git clone https://github.com/rodhnin/argus-wp-watcher.git
cd argus-wp-watcher
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Safe scan
python -m argus --target https://example.com --html -v
# With scan diff
python -m argus --target https://example.com --diff last --html
# Aggressive mode (requires consent token)
python -m argus --target https://example.com --aggressive --html -v
# With AI cost tracking
python -m argus --target https://example.com --use-ai --ai-budget 0.05 --ai-stream --htmlDocumentation
v0.1.0 - Initial Release
What's New
✨ Features
WordPress Vulnerability Detection
- WordPress version fingerprinting (meta tags, readme, RSS, assets)
- Plugin and theme enumeration (100+ popular ones)
- Sensitive file discovery (70+ paths: wp-config backups, .env, SQL dumps, .git)
- User enumeration (Author IDOR, REST API, HTML parsing)
- Security header analysis (HSTS, CSP, X-Frame-Options, cookie security)
- Misconfiguration detection (XML-RPC, debug mode, directory listing, file editor)
AI-Powered Analysis
- GPT-4 integration for intelligent vulnerability analysis
- Claude integration support
- Ollama (local) support for privacy-focused analysis
- Smart recommendations and remediation guidance
Professional Reporting
- Beautiful, customizable HTML reports (Mystical theme with deep purple/dark tones)
- Machine-readable JSON output
- Evidence preservation with HTTP responses
- Color-coded severity badges (Critical, High, Medium, Low, Info)
- AI-generated hardening guides (technical + executive modes)
Ethical Framework
- Consent token system for authorized scanning only
- Security compliance documentation
- Responsible disclosure guidelines
- Ethical security practices
Docker Support
- Easy Docker deployment
- Docker Compose setup
- Vulnerable test lab environment included
- Concurrent scanning with intelligent rate limiting
- SQLite database for scan history and trend analysis
🔧 Technical Details
- Python 3.10+
- Comprehensive error handling
- Professional logging
- Persistent scan history tracking
Getting Started
See README.md#-quick-start for detailed usage instructions.
Documentation
- README.md - Full documentation
- docs/CONSENT.md - Consent system and ethical guidelines
- docs/AI_INTEGRATION.md - Configure AI providers
- docs/TESTING_GUIDE.md - Comprehensive testing instructions
- docs/ETHICS.md - Security & responsible disclosure
License
MIT License - See LICENSE file
- Questions? Start a GitHub Discussion
- Found a bug? Open an Issue
Contributors: @rodhnin
Website: https://www.rodhnin.com