chore(llm-security): v7.8.3 — docs consistency + version bump (#8,#44,#45,#46,#47)

Bumps plugin to 7.8.3 (package.json, plugin.json, README version badge) and syncs the documentation surfaces that had drifted: orchestrated scanner count 9/10/13 to 14 (#8; the WFL/workflow scanner was omitted from the reference list), posture categories 13 to 16 (#44), red-team scenarios 64 to 72 (#45), tests badge/prose 1822 to 2013 (#46). Corrects the pathguard hook-table matcher and header comment to Edit|Write (follows the #9 fix) and removes the two dangling ROADMAP.md references (#47; the roadmap is not a public file). Adds the v7.8.3 CHANGELOG entry, README Recent-versions row, and CLAUDE.md highlights. The '23 scanners' total is a separate module count and is left unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01TcQyMTQfyrsAapaCMPxTtQ
This commit is contained in:
Kjell Tore Guttormsen 2026-07-18 10:50:50 +02:00
commit 4cffa30725
10 changed files with 84 additions and 22 deletions

View file

@ -6,6 +6,65 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
## [7.8.3] - 2026-07-18
Security and correctness patch. 47 verified fixes from the v7.8.1/v7.8.2
completion-review MEDIUM tier (52 findings triaged: 48 confirmed defects, with
3 feature-requests and 1 non-defect scoped out; capability work — the #11
persistence detector and #27 AST-taint f-string recall — deferred to v8). No
new features, and no CRITICAL/HIGH: every review-claimed HIGH downgraded to
MEDIUM on re-verification. 2013 tests, 0 fail.
### Fixed
- **Supply-chain gate bypasses.** The offline npm blocklist was skipped for
bare/range/tag installs (resolved version never re-checked); non-hoisted
nested lockfile keys derived the wrong package name; the yarn.lock matcher
both false-BLOCKed a legitimate package (unassociated substrings + unanchored
`pkg@`) and missed Yarn Berry's `version:` format; `pip audit` (no such
subcommand) made Python CVE detection a permanent silent no-op and, once
corrected to `pip-audit`, audited the target instead of the scanner host.
- **Hook coverage.** pathguard registered `Write` only, so an Edit to an
existing protected file (settings, `.env`, `.ssh`, the hooks themselves)
bypassed it — now `Edit|Write`. The trifecta window counted marker lines and
could scroll a real leg out. The remote-pipe-to-shell block missed
xargs/sudo/tee/env interposition. pre-edit-secrets missed bare provider keys
(Anthropic, OpenAI, fine-grained GitHub PAT, Google, JWT).
- **Scanner robustness / DoS.** Quadratic ReDoS in the HTML-obfuscation
injection patterns (~28s to 4ms); unbounded readline on MCP-server stdout
(memory exhaustion / uncaught RangeError); an uncapped same-host redirect loop
in the VSIX fetcher; a scalar `policy.json` section override threw an uncaught
TypeError; non-atomic writes to the MCP-description and skill-registry caches.
- **False positives / negatives.** toxic-flow fabricated CRITICAL trifectas from
substring keyword matches (`url` in `curl`); TRG-broad/-baiting fired on scoped
phrasing and substrings; a legitimate leading UTF-8 BOM was flagged HIGH; the
workflow actor-auth-bypass detector missed the bare `if:` form (Dependabot
spoof); the git reflog force-push detector tripped on any `reset` in a commit
subject; the diff engine mislabeled unchanged findings on duplicate
fingerprints; memory-poisoning double-reported a hex token as base64 + hex.
- **Parser divergence / evasion.** YAML block-scalar bodies were re-parsed as
top-level keys (name/allowed_tools override) and indented/chomped block-scalar
headers (`|2`, `>-`) were unrecognized; the bash normalizer decoded only
`\xHH`, not ANSI-C octal/`\u`/`\U`; embedded base64 (opt-in) now reaches the
SIG decode pipeline; `.env.local`/`.env.example` were silently skipped by
discovery; `collapseLetterSpacing` (multi-space/tab) and `redact(_, _, 0)`
(full-URL leak) were fixed; the SIG scanner now honours the documented
`custom_rules_path` policy option.
- **Docs / version consistency.** Orchestrated scanner count corrected to 14,
posture categories to 16, red-team scenarios to 72, tests badge to 2013; SARIF
`driver.version` now reflects the real plugin version; the pathguard matcher
and persistence-detection documentation were corrected; dangling `ROADMAP.md`
references removed.
### Deferred (to v8)
- Persistence-command detection (cron/launchctl/rc-files/plist) and the
AST-taint f-string/concat/alias recall gap — capability enhancements, not
defects in shipped code.
- Deterministic detectors for AST09 (bulk knowledge load), AST10/LLM10
(unbounded consumption), and MCP05 (path-traversal read sink) — each already
covered by the LLM-agent layer.
## [7.8.2] - 2026-07-18
Security patch. Fixes five defects from the v7.8.1 completion review, four of