SuperAPI AI 工具集

create-rule

通用与其它

查看项目

更新于 10-16 01:50

技能介绍

用途 create-rule 是用于编写并验证 OpenTaint 规则的技能。当需要为某个检测单元(source 或 sink)补齐规则时使用。OpenTaint 是全程序、跨过程、字段敏感的别名分析引擎,已能在可见应用代码、调用、别名和单个字段间传播污点;自定义规则只需建模指定的源、汇或不透明方法边界。编译期常量与字面量不携带污点。

主要能力 先浏览内置库规则与 .opentaint/rules,判断单元条目是否已有规则匹配,命中则记录其 rule_id,不重复编写;否则依据单元的精确成员标识、签名与声明元数据编写规则。源规则必须带 untrusted-data-source 标签,汇规则必须带所属单元组的 *-sink 标签。库规则需 options.lib: true 与 severity: NOTE,规则 ID 全局唯一。

必要用法 输入包括 project-root(默认当前目录)、language(必需)、side(必需,sources 或 sinks)、unit(必需,包 kebab 名)、fix-target(可选)。用 opentaint health --rules 查看内置规则根路径;用 opentaint test rule run 运行测试,再用 uv run <skill-dir>/scripts/check-test-result.py <unit>/<side> 读取结果,按 falseNegative 放宽匹配、falsePositive 加排除或净化、skipped/disabled 修复入口来迭代。测试 join 仅在测试项目中,不得放入被扫描规则树;不得扫描主项目模型,不得编辑测试项目。

适用场景与限制 适用于为 OpenTaint 建模源与汇边界、修正误报或漏报。约 3 次规则修复后仍不收敛的阳性样本可能源于库方法丢弃污点,此时应将 tests_passing 留为 pending 并上报,不可强行放宽规则。测试 join 必须含 metadata.cwe 与 metadata.short-description,元变量名需在 refs 与 on 间一致,污点值绑定到 $UNTRUSTED。具体测例、命令输出、收费与价格等信息暂未提供。