progmune-runtime 3.7.56 → 3.7.58
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 +59 -0
- package/README.md +12 -11
- package/README.zh-CN.md +12 -11
- package/dist/frameworks/nestjs-detector.js +428 -161
- package/dist/frameworks/nestjs-detector.test.js +220 -0
- package/dist/protocol-detector-identity-substring.test.js +139 -0
- package/dist/protocol-detector.js +28 -11
- package/dist/sdk.js +1 -1
- package/dist/trust/alert-ranker.js +3 -1
- package/dist/trust/confidence-calculator.js +3 -1
- package/dist/trust/engine.js +20 -2
- package/dist/trust/score-calculator.js +88 -8
- package/dist/trust/score-calculator.test.js +149 -0
- package/dist/trust/types.js +17 -1
- package/package.json +1 -1
- package/tools/extract_ir.py +38 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,64 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.7.58] — 2026-10-04(未发布)
|
|
4
|
+
|
|
5
|
+
### fr-001 点亮:身份映射子串匹配(修复回归 6/17)
|
|
6
|
+
|
|
7
|
+
**新能力(查询语义漏报根因第一刀)**:身份映射查找(OAuth subject / SCIM
|
|
8
|
+
external-ID)用 JSON 列 `.contains()` 做匹配——contains() 在 JSON 列上退化为
|
|
9
|
+
子串 LIKE(open-webui CVE-2026-87016 修复注释原话),subject 含 `%`/`_`
|
|
10
|
+
通配符可绑定任意账户(含管理员)。
|
|
11
|
+
|
|
12
|
+
- 提取器 `tools/extract_ir.py`:`has_identity_substring_match`(三条件:
|
|
13
|
+
函数名身份查找词形 + 体内 `.contains(` 调用 + 对象链含 oauth/scim 字段)
|
|
14
|
+
⇒ 注入 `__progmune_identity_substring_match__`
|
|
15
|
+
- 引擎规则 "Identity Lookup with Substring Match"(python-only marker-driven)
|
|
16
|
+
- **复测**:修复前 users.py 命中 2/2 真值函数(get_user_by_oauth_sub /
|
|
17
|
+
get_user_by_scim_external_id),修复后 0;Python 盲测 90 项目零触发
|
|
18
|
+
(合成语料无此形态,零漂移);定向测试 4/4(2 正 2 反)
|
|
19
|
+
- **fr-corpus 战绩 5/17 → 6/17**
|
|
20
|
+
|
|
21
|
+
**另:ZipSlip 候选关闭(如实记录)**——immich GHSA-jrp5 按 R20 三问判定
|
|
22
|
+
不可点亮:污点根是 DB 字段(跨请求存储污点),现有管线结构性够不着,
|
|
23
|
+
归入漏报根因新子类(详见 CAPABILITY_THREE_PROOFS_V1.md)。
|
|
24
|
+
|
|
25
|
+
## [3.7.57] — 2026-10-04(未发布)
|
|
26
|
+
|
|
27
|
+
### §51 held-out 验证 + §52-53 决策门禁 + 修冤枉第一刀(Data Mutation 族移除)
|
|
28
|
+
|
|
29
|
+
**§51 held-out 主路径验证**(`REALWORLD_HELD_OUT_V2.md`,commit `71339ca3`):
|
|
30
|
+
immich(115k★ NestJS,此前从未参与诊断)暴露 3.7.55 四刀**未泛化**——153 条
|
|
31
|
+
NESTJS_NO_VALIDATION(immich 用 APP_PIPE 注入形态注册全局校验,刀 1 只学了两种形态);
|
|
32
|
+
**聚合吞掉维度彻底失败**:authentication 0 分 + 174 条违规仍 APPROVED(83)/HIGH——
|
|
33
|
+
假 BLOCKED 会被人立刻反对,「auth 0 分 + 通过」是静默放行。召回侧首次教科书级
|
|
34
|
+
位置命中:SSRF 打在 OAuthRepository.getProfilePicture = GHSA-hq46(§50 的
|
|
35
|
+
「主路径 0 命中」修正为「有 1 次」)。R95/R96/R97 入册。
|
|
36
|
+
|
|
37
|
+
**§52 NestJS 注册事件解析**:APP_PIPE/APP_GUARD 注册事件收集(@Module providers
|
|
38
|
+
含 spread 多跳回溯 + 数组常量 + 文本兜底)、数组路径别名展开、@Module(configVar)
|
|
39
|
+
回溯——immich 153 条 → 0,逐条归因到「全局管道 + 入参是已校验 DTO」。
|
|
40
|
+
|
|
41
|
+
**§53 决策门禁**(`DECISION_GATES_V1.md`,首次改动 src 判定逻辑):已观察的安全
|
|
42
|
+
协议(authentication/authorization/data_integrity)任一低于 50 分 ⇒ decision 封顶
|
|
43
|
+
NEEDS_REVIEW;coverage LOW 且可测 ⇒ 同上;观察度不足 ⇒ confidence 封顶 MEDIUM。
|
|
44
|
+
修两处「声明与实现分离」(R102):废票注释无人消费、confidence 分子恒真。
|
|
45
|
+
第一版门禁被自己数据否决后收窄(coverage 缺 protocols.json 恒不可测 ⇒ 仅可测时
|
|
46
|
+
生效)。实测 9 真实项目:门禁触发 3/9、6 个不触发(有反例,R101)。R101/R102 入册。
|
|
47
|
+
|
|
48
|
+
**修冤枉第一刀:移除 "Data Mutation Without Audit Trail" 规则**。数据依据:
|
|
49
|
+
fp-gold 131/131 全 FP(七仓九片);TS 盲测 gold 795 条 0 条此族;PyGoat 8 条全
|
|
50
|
+
unlabeled 且样本全 FP 形态;84 条 GHSA 无审计轨迹类。根因是**概念性失明**:
|
|
51
|
+
真实架构里审计在框架/中间件层(ORM 拦截器/触发器/日志系统),函数名判据永远
|
|
52
|
+
不可能满足。与授权族保留对照(R92):授权族真实世界有 TP(fr 语料 8/9 命中),
|
|
53
|
+
此族全口径 TP=0。若未来有函数级审计判据(decorator 通道),按「先语料后规则」重提。
|
|
54
|
+
|
|
55
|
+
**效果**:盲测 LOST 423 条**全部**是本族(非本族 LOST=0、ADDED=0,逐条归因);
|
|
56
|
+
fp-gold 131 条 FP 随之消失;docmost 产品告警流 1320 → 992(-328 条全为本族噪声,
|
|
57
|
+
头部族构成不变、判定 APPROVED(87) 不变);排序器 DEFAULT_RULE_PRIOR 同步删条目。
|
|
58
|
+
|
|
59
|
+
**门**:taintpath 160/0 / webshape 72/0 / fr-007 pre5·post0 + fr-016 pre7·post0 /
|
|
60
|
+
反向验证:典型样本本族 0 条转红 / batch-scan 119 项目逐条归因如上 / tsc 0 错
|
|
61
|
+
|
|
3
62
|
## [3.7.56] — 2026-10-02
|
|
4
63
|
|
|
5
64
|
### 排序告警流进产品(§49.15 方案 b 落地,未发布)
|
package/README.md
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://modelcontextprotocol.io)
|
|
7
|
-
[]()
|
|
8
|
-
[]()
|
|
7
|
+
[-22c55e)]()
|
|
8
|
+
[-22c55e)]()
|
|
9
9
|
[](https://www.npmjs.com/package/progmune-runtime)
|
|
10
10
|
[](https://www.npmjs.com/package/progmune-runtime)
|
|
11
11
|
[](https://github.com/shenlian19831109/progmune-runtime)
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
> [中文版](https://github.com/shenlian19831109/progmune-runtime/blob/main/README.zh-CN.md) · English Version
|
|
15
15
|
|
|
16
|
-
**Verify AI-generated code before it reaches production.** Progmune checks
|
|
16
|
+
**Verify AI-generated code before it reaches production.** Progmune checks protocol lifecycles (TLS handshakes, auth flows, payment integrity, resource management — annotation-driven), framework route auth (production), and real-fix-validated taint detections (path traversal, SSRF) — plus a ranked evidence stream of safeguard alerts for human review. Every capability claim is tiered by evidence: [Capability Audit](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/CAPABILITY_THREE_PROOFS_V1.md).
|
|
17
17
|
|
|
18
18
|
Progmune doesn't trust what the model says. It verifies what the program actually does.
|
|
19
19
|
|
|
@@ -50,11 +50,10 @@ AI code generators produce syntactically valid code that often violates **protoc
|
|
|
50
50
|
|
|
51
51
|
| Category | Example violations detected |
|
|
52
52
|
|----------|---------------------------|
|
|
53
|
-
| **TLS /
|
|
54
|
-
| **
|
|
55
|
-
| **
|
|
56
|
-
| **
|
|
57
|
-
| **Data Integrity** | Mutation without audit trail, missing input validation |
|
|
53
|
+
| **Protocol lifecycles (annotation-driven)** | TLS handshake, auth flows, payment integrity, resource management — you declare the protocol primitives (~2–3 annotations per protocol), the state machine verifies execution order. Validated: C real modules 5/5 gold, app-level P=91.7%/R=100%. **Automatic detection of these classes on unannotated code is research-grade** — 0 hits on 17 real-world security fixes (measured, see [fix-regression corpus](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/fix-regression-corpus.json)) |
|
|
54
|
+
| **Framework route auth (TypeScript/Python, production)** | Missing auth guard / validation on mutation routes — NestJS/Express/tRPC/FastAPI/Django/Flask/Fastify/Next.js/Koa/Hapi/Gin/Fiber/Spring: validated on real corpora with guard-removal counter-proofs; real-world blind tests on docmost + immich after fix rounds |
|
|
55
|
+
| **Taint-marker detections (real-fix validated)** | Path traversal (TS+Python) and SSRF (TS+Python): extractor taint flow → sink, validated against real security fixes at their ground-truth sites (fr-007, fr-016, fr-010, fr-011) — plus a held-out hit: SSRF = GHSA-hq46 on immich. See [Capability Audit](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/CAPABILITY_THREE_PROOFS_V1.md) |
|
|
56
|
+
| **Input validation / data integrity safeguards** | Missing input validation before persistence, missing FK checks — evidence stream (ranked), not a verdict: real-world weighted precision ≈6%, ranked head ≈46% |
|
|
58
57
|
| **Injection (Python, source-level)** | SQL built with f-string/`%`/`.format`/concatenation, command injection via dynamic subprocess args, SSRF via user-controlled URL fetches, SSTI via template-string sinks, XXE via external-entity parser config, eval/exec on user input |
|
|
59
58
|
| **Web (Python, source-level)** | XSS via `{{ var\|safe }}`/autoescape-off templates, path traversal via user-controlled file paths, CSRF via `@csrf_exempt` or GET state changes, authorization by client cookies, hardcoded JWT secrets (incl. cross-module constants) |
|
|
60
59
|
|
|
@@ -105,8 +104,8 @@ Progmune is honest about what it can and cannot verify.
|
|
|
105
104
|
|
|
106
105
|
| Language | Status | Evidence |
|
|
107
106
|
|----------|--------|----------|
|
|
108
|
-
| **TypeScript / JavaScript** | ✅ Production |
|
|
109
|
-
| **Python** | ✅ Production |
|
|
107
|
+
| **TypeScript / JavaScript** | ✅ Production | Synthetic blind benchmark: **recall 98.5% / precision 100%** (795 gold findings, 100 generated projects). Real-world numbers are measured separately and published honestly — see [Capability Audit](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/CAPABILITY_THREE_PROOFS_V1.md): safeguard alert stream ≈6% weighted precision (ranked head ≈46%), 47% location recall on 84 real advisories, 1 real-advisory hit on the main decision path |
|
|
108
|
+
| **Python** | ✅ Production | Synthetic blind benchmark: **recall 100% / precision 100%** (729 gold findings, 90 generated projects); real-world validation: PyGoat (OWASP vulnerable-by-design Django app) **67 TP / 0 FP, 100% labeled precision**; three well-written apps (django/fastapi realworld, django-unicorn) with 0 false-positive true findings |
|
|
110
109
|
| **C** | ✅ Annotation-driven (Beta) | IR extraction via the registry + SSG state machine; **annotate ~2-3 protocol primitives per protocol to get trusted verification** (gold 5/5 on real modules: redis ACL / libssh client / libssh server / libssh callback-dispatch / uftpd transfer-auth — all 0 FP with precise violation localization; app-level gold v2: **P=91.7% / R=100% / F1=95.7%**). Unannotated auto-detection stays out of scope (0 TP on real corpus — positioning decision recorded in the C Language Status doc); TLS-level coverage still absent. See [C Language Status](https://github.com/shenlian19831109/progmune-runtime/blob/main/docs/c-language-status.md). |
|
|
111
110
|
| **Go** | ✅ Annotation-driven (Beta) | IR extraction via registry + SSG state machine; synthetic gold v1: **P=100% / R=100%** (clean×3 + violations×3); zero external toolchain (pure-TS lexical extractor — works from npm installs) |
|
|
112
111
|
| **Java** | 🔶 Annotation-driven (Beta) | Two layers, verified on real corpora. **Framework layer ✅**: Spring adapter (`spring-detector.ts` — security rule ordering + ant patterns + controller annotation routes) on gothinkster/spring-boot-realworld (1581★): 19 routes / 12 mutations fully parsed, 0 issues, catch-all flip counter-proof ×10; Spring Boot 3 modern dialect re-verified (SecurityFilterChain bean + String[] allowlist expansion): 15 routes, 0 issues. **Core layer**: pure-TS lexical extractor (zero toolchain deps) at **100%/100% recovery vs a tree-sitter AST baseline (1216/1216)**; SSG annotation-driven protocol rows (token / auth-register / resource) engine-locked with a real-corpus closed loop (**1 real TP / 0 FP**). Unannotated auto-detection stays out of scope (same decision as C/Go). Production label pending enterprise PoC. See [Java Language Status](https://github.com/shenlian19831109/progmune-runtime/blob/main/docs/java-language-status.md). |
|
|
@@ -144,6 +143,8 @@ npx progmune-init-policy --tier 3 # Observe: tools/demos — report only
|
|
|
144
143
|
|
|
145
144
|
Public, reproducible precision data. All numbers measured against gold-annotated benchmarks.
|
|
146
145
|
|
|
146
|
+
> ⚠ **口径(Scope)**:以下数字是**合成基准**(模板生成的项目 + 人工金标)——它证明"规则在这些形态上工作",**不证明**"在真实项目上同样准确"。真实项目的数字单列在 [Capability Audit(三要件)](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/CAPABILITY_THREE_PROOFS_V1.md):真实告警流加权精确率 ≈6%(排序后头部 ≈46%)、84 条真实公告位置召回 47%(下界)、主路径真实公告命中 1 次(SSRF = GHSA-hq46)。合成 P100% 与真实项目大量误报可以同时为真——两者测的是不同的事。
|
|
147
|
+
|
|
147
148
|
### TypeScript (Blind Benchmark v6 — 100 projects)
|
|
148
149
|
|
|
149
150
|
| Metric | Value |
|
|
@@ -165,7 +166,7 @@ Public, reproducible precision data. All numbers measured against gold-annotated
|
|
|
165
166
|
| Metric | Value |
|
|
166
167
|
|--------|-------|
|
|
167
168
|
| Labeled precision | **100%** (67 true positives / 0 false positives, per-detection human review) |
|
|
168
|
-
| Classes covered | 14 vulnerability classes
|
|
169
|
+
| Classes covered | 14 vulnerability classes on **Python** (Django lab app) — SQLi, SSRF, path traversal, XSS, SSTI, XXE, command injection, deserialization, CSRF (both shapes), cookie authorization, hardcoded secrets. ⚠ These classes are **not** all wired on TypeScript: 15 of 48 rules are Python-only and never fire on TS projects (XSS/CSRF/XXE/hardcoded secrets included) — measured, see §49.18 in [PATH_GUARD_EVIDENCE_DESIGN](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/PATH_GUARD_EVIDENCE_DESIGN_V1.md) |
|
|
169
170
|
| Well-written apps | django-realworld, fastapi-realworld, django-unicorn — 0 false-positive true findings; 3 documented framework-internal boundary FPs |
|
|
170
171
|
|
|
171
172
|
→ [Real-world validation report](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/REALWORLD_APP_V1.md) · [Benchmark baseline](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/BASELINE_v6.md)
|
package/README.zh-CN.md
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://modelcontextprotocol.io)
|
|
7
|
-
[]()
|
|
8
|
-
[]()
|
|
7
|
+
[-22c55e)]()
|
|
8
|
+
[-22c55e)]()
|
|
9
9
|
|
|
10
10
|
> [English Version](https://github.com/shenlian19831109/progmune-runtime/blob/main/README.md) · 中文版
|
|
11
11
|
|
|
12
|
-
**在 AI 生成的代码进入生产前验证它。** Progmune
|
|
12
|
+
**在 AI 生成的代码进入生产前验证它。** Progmune 检查协议生命周期(TLS 握手、认证流程、支付完整性、资源管理——注解驱动)、框架路由认证(生产)、真实修复验证过的污点检测(路径穿越、SSRF)——外加一条排序后的防护告警证据流供人工审查。每项能力声明都按证据分级:[能力审计](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/CAPABILITY_THREE_PROOFS_V1.md)。
|
|
13
13
|
|
|
14
14
|
Progmune 不信任模型说的话,它验证程序实际做的事。
|
|
15
15
|
|
|
@@ -46,11 +46,10 @@ AI 代码生成器产出语法合法的代码,却常常违反**协议生命周
|
|
|
46
46
|
|
|
47
47
|
| 类别 | 检测到的违规示例 |
|
|
48
48
|
|------|----------------|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
| **数据完整性** | 变更无审计轨迹、缺少输入校验 |
|
|
49
|
+
| **协议生命周期(注解驱动)** | TLS 握手、认证流程、支付完整性、资源管理——你声明协议原语(每协议 ~2-3 个注解),状态机验证执行顺序。已验证:C 真实模块金标 5/5、应用级 P=91.7%/R=100%。**未注解代码的自动检测为研究级**——17 条真实安全修复命中 0(实测,见 [修复回归语料](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/fix-regression-corpus.json)) |
|
|
50
|
+
| **框架路由认证(TS/Python,生产)** | 写操作路由缺认证守卫/校验——NestJS/Express/tRPC/FastAPI/Django/Flask/Fastify/Next.js/Koa/Hapi/Gin/Fiber/Spring:真实语料验证 + 摘保护反证;docmost + immich 真实项目盲测(修复轮后) |
|
|
51
|
+
| **污点标记检测(真实修复验证)** | 路径穿越(TS+Python)与 SSRF(TS+Python):提取器污点流 → sink,以真实安全修复的真值位置验证(fr-007、fr-016、fr-010、fr-011)+ held-out 命中:immich 上 SSRF = GHSA-hq46。见 [能力审计](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/CAPABILITY_THREE_PROOFS_V1.md) |
|
|
52
|
+
| **输入校验 / 数据完整性防护** | 持久化前缺输入校验、缺外键检查——证据流(已排序)而非判定:真实世界加权精确率 ≈6%,排序头部 ≈46% |
|
|
54
53
|
| **注入类(Python,源码级)** | 用 f-string/`%`/`.format`/拼接构造 SQL、动态 subprocess 参数导致命令注入、用户可控 URL 抓取导致 SSRF、模板字符串 sink 导致 SSTI、外部实体解析器配置导致 XXE、对用户输入 eval/exec |
|
|
55
54
|
| **Web 类(Python,源码级)** | `{{ var\|safe }}`/autoescape off 模板导致 XSS、用户可控文件路径导致路径穿越、`@csrf_exempt` 或 GET 状态变更导致 CSRF、客户端 cookie 授权、硬编码 JWT 密钥(含跨模块常量) |
|
|
56
55
|
|
|
@@ -101,8 +100,8 @@ Progmune 对能验证什么、不能验证什么保持诚实。
|
|
|
101
100
|
|
|
102
101
|
| 语言 | 状态 | 证据 |
|
|
103
102
|
|------|------|------|
|
|
104
|
-
| **TypeScript / JavaScript** | ✅ 生产 |
|
|
105
|
-
| **Python** | ✅ 生产 |
|
|
103
|
+
| **TypeScript / JavaScript** | ✅ 生产 | 合成盲测基准:**召回 98.5% / 精确率 100%**(795 条 gold finding,100 个生成项目)。真实项目数字单列并如实发布——见 [能力审计(三要件)](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/CAPABILITY_THREE_PROOFS_V1.md):告警流加权精确率 ≈6%(排序后头部 ≈46%)、84 条真实公告位置召回 47%(下界)、主路径真实公告命中 1 次 |
|
|
104
|
+
| **Python** | ✅ 生产 | 合成盲测基准:**召回 100% / 精确率 100%**(729 条 gold finding,90 个生成项目);真实应用验证:PyGoat(OWASP 故意脆弱 Django 应用)**67 TP / 0 FP,标记精确率 100%**;三个良构应用(django/fastapi realworld、django-unicorn)0 误报真阳性 |
|
|
106
105
|
| **C** | ✅ 注解驱动(Beta) | IR 提取接入注册表 + SSG 状态机;**每协议标注 ~2-3 个原语即获得可信验证**(真实模块金标 5/5:redis ACL / libssh 客户端 / libssh 服务端 / libssh 回调分发 / uftpd 传送授权——全部 0 误报 + 违规精确定位;应用级金标 v2:**P=91.7% / R=100% / F1=95.7%**)。未注解自动检测不在范围(真实语料 0 TP——定位决议见 C 语言状态文档);TLS 级覆盖仍无。见 [C 语言状态](https://github.com/shenlian19831109/progmune-runtime/blob/main/docs/c-language-status.md)。 |
|
|
107
106
|
| **Go** | ✅ 注解驱动(Beta) | IR 提取接入注册表 + SSG 状态机;合成金标 v1:**P=100% / R=100%**(3 干净 × 3 植入违规);零外部工具链(纯 TS 词法提取,npm 安装态可用) |
|
|
108
107
|
| **Java** | ❌ 无 | 规划中 |
|
|
@@ -137,6 +136,8 @@ npx progmune-init-policy --tier 3 # 观察:工具/demo——只报告不拦
|
|
|
137
136
|
|
|
138
137
|
公开、可复现的精确率数据。所有数字均对 gold 标注基准测量。
|
|
139
138
|
|
|
139
|
+
> ⚠ **口径**:以下数字是**合成基准**(模板生成项目 + 人工金标)——它证明"规则在这些形态上工作",**不证明**"在真实项目上同样准确"。真实项目数字单列在 [能力审计(三要件)](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/CAPABILITY_THREE_PROOFS_V1.md):真实告警流加权精确率 ≈6%(排序后头部 ≈46%)、84 条真实公告位置召回 47%(下界)、主路径真实公告命中 1 次(SSRF = GHSA-hq46)。合成 P100% 与真实项目大量误报可以同时为真——两者测的是不同的事。
|
|
140
|
+
|
|
140
141
|
### TypeScript(盲测基准 v6——100 个项目)
|
|
141
142
|
|
|
142
143
|
| 指标 | 值 |
|
|
@@ -158,7 +159,7 @@ npx progmune-init-policy --tier 3 # 观察:工具/demo——只报告不拦
|
|
|
158
159
|
| 指标 | 值 |
|
|
159
160
|
|------|-----|
|
|
160
161
|
| 标记精确率 | **100%**(67 真阳性 / 0 误报,逐条人工核实) |
|
|
161
|
-
| 覆盖类别 | 14
|
|
162
|
+
| 覆盖类别 | 14 个漏洞类别,**Python 口径**(Django lab 应用)——SQLi、SSRF、路径穿越、XSS、SSTI、XXE、命令注入、反序列化、CSRF(双形态)、cookie 授权、硬编码密钥。⚠ 这些类别在 TypeScript 上**并未全部接线**:48 条规则中 15 条 python-only,在 TS 项目上永不触发(含 XSS/CSRF/XXE/硬编码密钥)——实测数据见 [PATH_GUARD_EVIDENCE_DESIGN §49.18](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/PATH_GUARD_EVIDENCE_DESIGN_V1.md) |
|
|
162
163
|
| 良构应用 | django-realworld、fastapi-realworld、django-unicorn——0 误报真阳性 |
|
|
163
164
|
|
|
164
165
|
→ [真实验证报告](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/REALWORLD_APP_V1.md) · [基准基线](https://github.com/shenlian19831109/progmune-runtime/blob/main/blind-benchmark/BASELINE_v6.md)
|