mcpField
A
assemble-lib-rules

assemble-lib-rules

github.com/seqra安全17058 次安装1 天前更新
代码仓库

关于 assemble-lib-rules

面向 OpenTaint 的安全技能,根据 get_status.py 报告,为未覆盖的 sink 标签添加规则,将其连接到共享的 untrusted-data-source 标签,并验证连接是否完整。

主要功能

  1. 01以报告中的未覆盖 sink 标签为清单
  2. 02每个缺失标签编写一条安全连接规则
  3. 03引用共享源标签和 sink 标签
  4. 04使用 get_status.py 验证连接

适用场景

  1. 01将不可信数据源连接到尚未覆盖的 sink 类别
  2. 02根据状态报告补齐可复用规则连接

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/seqra/opentaint --skill assemble-lib-rules

安装后在 Claude Code 中输入/assemble-lib-rules确认已加载。

详细介绍

技能:组装库规则

可复用的源规则共用单个 untrusted-data-source 标签。只编写将该标签连接到 get_status.py 报告为未覆盖的 sink 标签的安全连接。已有连接会自动包含携带任一标签的所有新库规则。主扫描会验证这些连接。

输入

由调用方提供;若省略,则回退到默认值。仅当必需输入缺失且没有合理默认值时,才询问调用方。

  • project-root(可选)——目标项目的根目录。Opentaint 会将所有分析产物保存在固定的 <project-root>/.opentaint/ 目录下,因此下面的每个 .opentaint/... 路径都会解析到该目录。默认值:当前目录
  • language(必需)——此项目的目标语言及特定于该语言的说明

工作流

1. 获取缺失的 sink 标签

只有当 get_status.py 报告存在未覆盖的连接时,编排器才会调度此技能。将该输出作为完整的待办清单:reusable tag groups are not fully joined 下的每一行 untrusted-data-source -> sink-tag 都表示一个需要连接的 sink 标签。脚本已经考虑了生效的内置规则和自定义库规则,以及现有连接。不要读取这些规则,也不要自行重新计算矩阵。

2. 为每个缺失的 sink 标签编写一条安全连接

为每个缺失的 sink 标签,在 .opentaint/rules/<lang>/security/<vulnerability>.yaml 下编写一条 join 规则。将去掉末尾 -sink 的 sink 标签用作简洁且全局唯一的 <vulnerability> ID——例如,regex-dos-sink 会变成 regex-dos。直接引用共享源标签和报告的 sink 标签:

rules:
  - id: regex-dos
    severity: ERROR
    message: Untrusted data reaches a regular-expression denial-of-service sink
    metadata:
      cwe:
        - CWE-1333
      short-description: Regular expression denial of service via untrusted input
    languages:
      - <language>
    mode: join
    join:
      refs:
        - tag: untrusted-data-source
          as: source
        - tag: regex-dos-sink
          as: sink
      on:
        - 'source.$UNTRUSTED -> sink.$UNTRUSTED'

两个端点都使用 $UNTRUSTED。Sink 标签和连接 ID 表示漏洞类别,而不是软件包、框架或单个方法:针对已有漏洞类别创建的新规则会复用该类别的 sink 标签,因此不需要新增连接。根据 sink 标签推导准确的安全元数据。

3. 验证矩阵,然后停止

再次运行 get_status.py。如果仍报告有指定的 sink 标签,则修复该连接并重复此步骤。所有可复用的 sink 标签都连接到 untrusted-data-source 后,即可完成。

输出

产物
  • 每个缺失的 sink 标签对应一个安全连接文件,位于 .opentaint/rules/<lang>/security/<vulnerability>.yaml
摘要
  • 每条连接一行:sink 标签和规则 ID

注意事项

  • 直接引用报告中的 sink 标签,绝不要重新声明或枚举任一标签组中的库规则成员
  • 生成的连接中不要添加注释

评论

支持 Markdown