v3.12.0
sinewaveai/agent-security-scanner-mcpv3.12.0Feb 24, 2026by sinewaveai
AI Summary
Major security hardening release implementing command injection prevention, path traversal prevention, DoS protection with file size caps, and introducing 4 new action types (cron, process_spawn, git, docker) with 60+ detection rules, plus full Windows compatibility.
Key Highlights
- Command injection prevention via cp.execFile() in VS Code extension
- Path traversal prevention with symlink rejection and double containment check
- DoS prevention with 1MB SKILL.md cap, 100KB prompt cap, 5MB supporting files cap
- 4 new action types (cron, process_spawn, git, docker) with 60+ detection rules
- Full Windows compatibility with Python resolution and path handling
Breaking Changes
- Baseline filename format changed to {slug}-{pathHash}.json - old baselines won't match new format
New Features
- 4 new action types: cron (persistence, remote code exec), process_spawn (reverse shells, privilege escalation), git (force push, credential exposure), docker (privileged containers, socket access)
- Recursive file walking up to 5 levels deep (max 50 files, 5MB)
- Manifest scanning for package.json, requirements.txt, Cargo.toml, Gemfile
- Extended code blocks support (tilde fences, Windows CRLF, powershell/ps1/bat/cmd/fish routing)
- Timeout cancellation with AbortController and 120s limit
- Hash-based baselines preventing collision attacks
Full Release Notes
## 🔒 Security Fixes (Critical)
- **Command Injection Prevention** - Fixed command injection in VS Code extension via `cp.execFile()` (src/extension.ts:17) - prevents arbitrary code execution via malicious filenames - CVE-class vulnerability (PR #19, @Har1sh-k)
- **Path Traversal Prevention** - Symlink rejection + double containment check prevents escaping allowed directories (src/tools/scan-skill.js:769-802) (PR #19, @Har1sh-k)
## 🛡️ Security Hardening
- **DoS Prevention** - 1 MB SKILL.md cap, 100 KB prompt cap, 5 MB supporting files cap
- **Timeout Cancellation** - AbortController + process.kill() for hung scans (120s limit)
- **Fail-Closed Design** - Crashed scanners emit findings instead of silent success
- **Atomic Baseline Writes** - Temp + rename with mode 0o600, prevents race conditions
- **Hash-Based Baselines** - \`{slug}-{pathHash}.json\` prevents collision attacks
- **Frontmatter Stripping** - Remove YAML metadata before prompt scanning
- **Comprehensive Rug Pull** - Hash includes all supporting files, not just SKILL.md
## 🆕 New Features
- **4 New Action Types** - \`cron\`, \`process_spawn\`, \`git\`, \`docker\` with 60+ detection rules (PR #19, @Har1sh-k)
- cron: Persistence (@reboot), high-frequency jobs, remote code exec
- process_spawn: Reverse shells, background daemons, privilege escalation
- git: Force push, hard reset, credential exposure, untrusted remotes
- docker: Privileged containers, host mounts, socket access, dangerous capabilities
- **Recursive File Walking** - Scan supporting files up to 5 levels deep (max 50 files, 5 MB)
- **Manifest Scanning** - Extract dependencies from package.json, requirements.txt, Cargo.toml, Gemfile
- **Extended Code Blocks** - Tilde fences (\`~~~\`), Windows \`\\r\\n\`, powershell/ps1/bat/cmd/fish routing
## 🪟 Cross-Platform
- **Windows Python Resolution** - New src/python.js with \`py -3\` launcher support (PR #19, @Har1sh-k)
- **Windows Path Handling** - Forward slashes in MCP config paths (PR #19, @Har1sh-k)
## ⚡ Performance
- **YAML Rule Caching** - Cache parsed rules, reduces prompt scan overhead by ~50ms
- **Shared File Collection** - Collect once, use in L3 and L5, eliminates redundant walks
- **Per-Layer Timing** - Full verbosity includes \`timings_ms\` breakdown
## 🐛 Bug Fixes
- **CI False-Assurance** - audit/harden stubs exit non-zero unless --allow-stub (PR #19, @Har1sh-k)
- **MCP Server Version** - Read from package.json instead of hardcoded "1.0.0"
- **Health Tool Rename** - clawproof_health → scanner_health (backward-compatible alias)
- **Test Fixes** - Fixed 6 failures in init-codex and plugin-integration (PR #19, @Har1sh-k)
## ⚠️ Breaking Changes (Internal)
- **Baseline Filename Format** - Changed to \`{slug}-{pathHash}.json\` - users may see rug-pull warnings on first scan after upgrade (old baselines won't match new format)
## 📦 Internal
- **Improved Deduplication** - Dedupe key includes rule_id, source, file, line, matched_text
- **OpenClaw Workspace** - Added ~/.openclaw/workspace/skills to allowed roots
## 🙏 Contributors
- @Har1sh-k - PR #19 (17 commits, +955 additions, -169 deletions) - security hardening, Windows compatibility, new action types
---
**Installation:**
\`\`\`bash
npm install agent-security-scanner-mcp@3.12.0
\`\`\`
**Full Changelog:** https://github.com/sinewaveai/agent-security-scanner-mcp/blob/main/CHANGELOG.md#3120---2026-02-23