@clear-capabilities/agentic-security-scanner 0.152.0 → 0.153.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,79 @@
9
9
  > make the history less accurate, not more.
10
10
 
11
11
 
12
+ ## 0.153.1 - CI hygiene: off the deprecated Node 20 Actions runtime
13
+
14
+ A maintenance-only release, no engine or scanner behavior changes.
15
+
16
+ - **GitHub Actions upgraded off the deprecated Node.js 20 runtime**: `github/codeql-action/{init,analyze}`
17
+ (v3 → v4), `actions/setup-java` (v4 → v6), `gradle/actions/setup-gradle` (v4 → v6),
18
+ `actions/upload-artifact` (v4 → v7), `actions/download-artifact` (v5 → v8), and
19
+ `actions/github-script` (v8 → v9) — all confirmed against each action's own latest published
20
+ release. `ci.yml` also gained the `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24` env var every other
21
+ workflow in this repo already sets.
22
+ - **`@types/node` bumped one patch** (0.153.0 shipped with 26.6.2; latest is 26.6.3) in both
23
+ `scanner/` and `ide/vscode/`, caught by running the project's own `dependency-currency.mjs` gate
24
+ locally — a dev-only, types-only dependency, so the bundle is byte-identical.
25
+ - Note for anyone who saw a GitHub Actions annotation naming an old Ubuntu version: that notice
26
+ (`ubuntu-latest` migrating to Ubuntu 26 around October 2026) is informational only — every
27
+ workflow in this repo already uses the floating `ubuntu-latest`/`macos-latest` labels, which
28
+ resolve to the new image automatically with no action required.
29
+
30
+
31
+ ## 0.153.0 - Taint-engine points-to precision, and two default-adjacent capabilities rebuilt from broken to sound
32
+
33
+ Four taint-engine capabilities landed since 0.152.0, continuing the "next-generation taint analysis
34
+ capabilities" initiative: two narrow points-to-precision fixes for JS/TS class-hierarchy resolution,
35
+ and two substantial rebuilds of capabilities found to be structurally non-functional on real data —
36
+ one opt-in (SMT path feasibility), one running by default (cross-service schema-driven taint).
37
+
38
+ - **Cross-call-site parameter type inference for CHA** (`dataflow/class-hierarchy.js`): JS/TS gains
39
+ the same "driver constructs a concrete instance, passes it as a parameter to a helper that invokes
40
+ a virtual method" resolution Java/C# already had via declared parameter types — a narrow,
41
+ well-scoped slice of Andersen-style points-to analysis, not the full thing. A call site's literal
42
+ `new ClassName(...)` argument, or an identifier whose type was already established, now propagates
43
+ onto the callee's parameter; two call sites disagreeing on the class permanently refuse to resolve
44
+ it rather than guess.
45
+ - **Factory-function return-type inference for CHA**: the sibling gap on the RETURN side —
46
+ `function makeHelper() { return new Helper(); } const h = makeHelper();` — closed with the same
47
+ "never guess" discipline: a function only qualifies when every reachable `return` is a `new
48
+ ClassName(...)` of the same class.
49
+ - **SMT/exploit-proof path feasibility, rebuilt from the ground up** (`dataflow/exploit-prover.js`,
50
+ `dataflow/backward.js`): the pre-existing SMT-lite infeasibility check was fed a flat list of
51
+ taint sources reaching a sink, never a real sequential source-to-sink path, so its own
52
+ (correctly-written) metacharacter-exclusion logic had nothing genuine to walk — confirmed by
53
+ direct code reading, and by its own tests only ever exercising hand-fabricated fixtures the real
54
+ engine never produces. A second, parallel, independently-broken module (`smt-feasibility.js`, also
55
+ opt-in) had the identical defect plus a direct `severity` mutation that violated this codebase's
56
+ recall-preserving-demotion convention; retired outright rather than fixed twice. Three real engine
57
+ bugs were found and fixed to make the rebuild work on real data: `sliceBackward` couldn't trace
58
+ through a call-shaped sanitizer RHS, `engine.js`'s own finding-normalization allowlist silently
59
+ dropped `argIndex`, and a compound (string-concatenation) sink argument couldn't be resolved. The
60
+ rebuilt check now refuses to conclude safety the moment an opaque, unmodeled call sits between a
61
+ trusted sanitizer and a sink, verified via direct adversarial reproduction. `z3-solver` is added as
62
+ a genuine `optionalDependencies` entry, with its current (load-only, not yet query-discharging)
63
+ scope documented honestly rather than overclaimed. Opt-in via `AGENTIC_SECURITY_SYMEXEC=1`.
64
+ - **Cross-service schema-driven taint, rebuilt from a complete no-op** (`dataflow/cross-service-taint.js`):
65
+ this module runs BY DEFAULT (opt-out via `AGENTIC_SECURITY_NO_CROSS_SERVICE=1`) but was found, via
66
+ direct reproduction, to have never worked at all for real findings — an HTTP path-template matcher
67
+ that failed on the module's own documented example (a `:param` vs. `{param}` placeholder-syntax
68
+ mismatch), a field-name correlation check that read finding properties (`source.snippet`/
69
+ `source.expr`) that do not exist on any real finding, and a report-layer allowlist that silently
70
+ dropped the annotation even when it did fire. Rebuilt with structural path-template matching and
71
+ provenance-based correlation for HTTP transport (a real, catalog-backed signal, since a real
72
+ finding never retains the specific field name that reached a sink) with a best-effort text-match
73
+ fallback for other transports; the report-layer allowlist fix means the annotation now actually
74
+ reaches SARIF/JSON/HTML output. A genuine remaining scope limitation — no mechanism seeds a NEW
75
+ taint source from a `consumes` declaration — is documented in the module's own header rather than
76
+ left implicit.
77
+ - **Measured**: both rebuilds verified via full real-corpus TEST-split runs for all three
78
+ SARD/Juliet languages, byte-identical to the 0.152.0 baseline in every case (Java macroF1=59.1%,
79
+ C# macroF1=68.6%, PHP macroF1=48.2%) — neither the SARD fixtures nor the CVE-replay/self-scan/
80
+ mutation/layer-recall corpora exercise these specific capabilities, so this release ships real,
81
+ adversarially-tested engine correctness with no corpus-visible movement, consistent with this
82
+ project's own established precedent for capability work independent of any one benchmark.
83
+
84
+
12
85
  ## 0.152.0 - Rust: first-class language, and the SARD 80% F1 push's taint-engine architecture work
13
86
 
14
87
  Rust joins the first-class language set (JS/TS, Python, Java, Kotlin, Go, Ruby, PHP, C#) with both