circle-ir-ai 2.11.1 → 2.11.3
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 +63 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,69 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.11.3] - 2026-06-18
|
|
9
|
+
|
|
10
|
+
### Changed — circle-ir 3.69.0 → 3.71.0
|
|
11
|
+
|
|
12
|
+
Drop-in engine bump across 2 sprints (3.70.0 / 3.71.0):
|
|
13
|
+
|
|
14
|
+
- **3.70.0** — Sprint 20 new pass `cache-no-vary` (rule
|
|
15
|
+
`cache-no-vary`, `CWE-524`, severity `medium`) detecting
|
|
16
|
+
shared-cache leaks where an authenticated response is marked
|
|
17
|
+
`Cache-Control: public` without a `Vary` header. Strict
|
|
18
|
+
auth-qualifier mode (requires 3 signals: cache-public + auth + no
|
|
19
|
+
Vary) to keep the FP rate low on generic CDN-cacheable assets.
|
|
20
|
+
Covers JS/TS (Express, Fastify, Koa), Python (Flask, FastAPI,
|
|
21
|
+
Django), Go (`net/http`, gin), Java (Spring, Servlet). Allowlist
|
|
22
|
+
guardrails skip `private`/`no-store`/`no-cache`, `max-age=0`, test
|
|
23
|
+
files, and `Vary: *`. 12 new fixtures, engine suite 2467 pass.
|
|
24
|
+
- **3.71.0** — Sprint 21 OOP safe-mirror sanitizer FP closures
|
|
25
|
+
(cognium-dev#105): FP-31 `findOopFieldReadSources` now recognizes
|
|
26
|
+
allowlist-guarded getter pattern (`if x not in
|
|
27
|
+
UPPER_SNAKE_CONST: raise`) so allowlist-cleared field reads stop
|
|
28
|
+
emitting as taint sources. FP-32 new `isMongoValueBoundFilter`
|
|
29
|
+
helper post-filters `nosql_injection` for MongoDB value-bound
|
|
30
|
+
filter dicts (`{field: {"$lte": value}}` etc.) — operator-injection
|
|
31
|
+
only fires when the operator key itself is user-controlled.
|
|
32
|
+
Regression locks added for FP-33 (hardened `lxml` parser), FP-34
|
|
33
|
+
(EJS auto-escape) and FN-INV (direct `self.url` field read).
|
|
34
|
+
Engine suite 2475 pass.
|
|
35
|
+
|
|
36
|
+
No API breaks — both new findings surface through the existing
|
|
37
|
+
`analyze()` / mastra workflow output as `findings[].type ===
|
|
38
|
+
'cache-no-vary'`. The OOP sanitizer additions are pure suppression
|
|
39
|
+
on existing rule emissions.
|
|
40
|
+
|
|
41
|
+
## [2.11.2] - 2026-06-18
|
|
42
|
+
|
|
43
|
+
### Changed — circle-ir 3.66.0 → 3.69.0
|
|
44
|
+
|
|
45
|
+
Drop-in engine bump across 3 sprints (3.67.0 / 3.68.0 / 3.69.0):
|
|
46
|
+
|
|
47
|
+
- **3.67.0** — Java safe-corpus regressions closed (the long-tail
|
|
48
|
+
beyond what 3.64.0 / 3.65.0 caught for cognium-dev#49 / #101):
|
|
49
|
+
`SafeService.java` `path_traversal` + `xxe` and
|
|
50
|
+
`FalsePositiveCorpus.java` `command_injection` (switch→constant)
|
|
51
|
+
now suppressed on the real `coggiyadmin/java-vuln-demo` shape
|
|
52
|
+
(not just the synthetic regression fixtures). The remaining
|
|
53
|
+
`FalsePositiveCorpus.java` `sql_injection@81` (bounded `Set`
|
|
54
|
+
allowlist) is still tracked as open in cognium-dev#101.
|
|
55
|
+
- **3.68.0** — Sprint 18 Python consolidation: f-string taint fix,
|
|
56
|
+
two new sinks (`urllib.request.urlretrieve` for ssrf + path
|
|
57
|
+
traversal), 12-fixture Python FP/FN regression locks tracking
|
|
58
|
+
cognium-dev#100 / #96 / #65.
|
|
59
|
+
- **3.69.0** — Sprint 19 new pass `module-side-effect` (rule
|
|
60
|
+
`module-side-effect`, `CWE-829`, severity `high`) detecting
|
|
61
|
+
supply-chain droppers via module-load / install-time / build-time
|
|
62
|
+
side effects across JS/TS (incl. `package.json` install scripts),
|
|
63
|
+
Python, Go (`init()`), and Rust (`build.rs`). 8 new regression
|
|
64
|
+
fixtures (5 positive + 3 negative-control). Engine suite now
|
|
65
|
+
2455 pass / 1 skip / zero regressions across 139 files.
|
|
66
|
+
|
|
67
|
+
No API breaks on the bump itself — the new pass surfaces as a new
|
|
68
|
+
`findings[].type === 'module-side-effect'` value through the existing
|
|
69
|
+
`analyze()` / mastra workflow output.
|
|
70
|
+
|
|
8
71
|
## [2.11.1] - 2026-06-18
|
|
9
72
|
|
|
10
73
|
### Changed — circle-ir 3.59.0 → 3.66.0
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "circle-ir-ai",
|
|
3
|
-
"version": "2.11.
|
|
3
|
+
"version": "2.11.3",
|
|
4
4
|
"description": "LLM-enhanced SAST analysis built on circle-ir",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"dependencies": {
|
|
95
95
|
"@ax-llm/ax": "^20.0.0",
|
|
96
96
|
"@mastra/core": "^1.18.0",
|
|
97
|
-
"circle-ir": "3.
|
|
97
|
+
"circle-ir": "3.71.0",
|
|
98
98
|
"minimatch": "^10.2.5",
|
|
99
99
|
"p-queue": "^9.1.0"
|
|
100
100
|
},
|