SuperAPI AI 工具集

gitnexus-taint-analysis

数据与分析

查看项目

更新于 10-15 18:37

技能介绍

用途:面向 GitNexus 的 --pdg 程序分析子系统,提供 CFG、到达定值与函数内/跨函数污点分析的专家知识,适用于审查、扩展该子系统或解释 source→sink 数据流发现。

分层结构(构建顺序):污点分析运行在图之上,而非旁路。各层在 --pdg 后可选,默认 analyze 运行字节级一致(golden parity 为硬性底线)。L1 CFG:每函数基本块与控制流边;L2 REACHING_DEF:GEN/KILL 定义→使用数据依赖(纯求解器);L3 函数内污点:在 RD 事实上做 source→sink,扣除 sanitizer;L4 跨函数污点:按函数摘要经 CALLS 组合。由 worker 构建、主线程求解,禁止主线程重新解析。

函数内污点(L3):在 RD 事实上做前向可达,被 sanitizer 阻断。使用出现点标记的站点、kind-set sanitizer 模型(一个污点携带被中和的 SinkKinds 集合,仅当 sink kind 在集合中才抑制),语句级 finding 身份,持久化为 TAINTED 边。

跨函数污点(L4):采用函数摘要方法(Sharir-Pnueli 1981,非完整 IFDS 表格化)。摘要粒度到整参数,含 param→return、param→callee-arg、param→sink、source→return、source→callee-arg、callResults。修复点以 (function, parameter, source) 为单位,按单调性保证终止。状态需按 source 区分,调用连接按被调方名称而非行号。持久化为 TAINT_PATH 边,置信度低于函数内的 1.0。

已知假阴性:闭包/回调、字段/属性流、字段敏感访问路径、守卫式 sanitizer、隐式/控制依赖流、Promise/async-await 线程、解构/剩余参数等。跨函数连接上下文不敏感,同名被调方会过度归因。无 finding 不等于安全。

添加 source/sink/sanitizer:模型覆盖 TypeScript/JavaScript(taint/typescript-model.ts)、Python(taint/python-model.ts)、Java(taint/java-model.ts)四种语言。spec 为可哈希数据,sanitizer 的 neutralizes 列出精确 sink kind,需在 test/unit/taint/ 加 fixture 并断言。

验证清单:tsc 通过;按目录运行定向 vitest;flag-off golden 字节一致;bench/cfg/measure.mjs --check;提交前 detect_changes(),编辑共享符号前用 impact({direction:'upstream'})。

限制:GitNexus 专有注意事项(Function↔CFG 行号 1-based vs 0-based、无关系属性索引、explain 为唯一发现面、共享编解码器、缓存版本命名空间等)需遵循。其它事实暂未提供。