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. 04get_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 で未カバーと報告されたシンクタグに接続するセキュリティ結合だけを記述します。既存の結合には、どちらかのタグを持つ新しいライブラリルールも自動的にすべて含まれます。メインスキャンで結合を検証します。

入力

呼び出し元から提供されます。省略された場合はデフォルト値を使用します。必須の入力がなく、妥当なデフォルト値もない場合にのみ、確認してください。

  • project-root(任意)— 対象プロジェクトのルートです。Opentaint はすべての解析アーティファクトを固定の <project-root>/.opentaint/ ディレクトリに保存するため、以下のすべての .opentaint/... パスはそこを基準に解決されます。デフォルト:カレントディレクトリ
  • language(必須)— このプロジェクトの対象言語および言語固有の指示です

ワークフロー

1. 不足しているシンクタグを取得する

オーケストレーターは、get_status.py が未カバーの結合を報告した場合にのみ、このスキルを実行します。その出力を完全な作業リストとして使用します。reusable tag groups are not fully joined の下にある各 untrusted-data-source -> sink-tag 行が、接続するシンクタグを示します。スクリプトは、有効な組み込みおよびカスタムのライブラリルールと既存の結合をすでに考慮しています。これらのルールを読んだり、自分でマトリックスを再計算したりしないでください。

2. 不足しているシンクタグごとにセキュリティ結合を1つ記述する

不足しているシンクタグごとに、.opentaint/rules/<lang>/security/<vulnerability>.yaml の下に join ルールを1つ記述します。末尾の -sink を除いたシンクタグを、簡潔で一意な <vulnerability> ID として使用します。たとえば、regex-dos-sink は regex-dos になります。共通のソースタグと報告されたシンクタグを直接参照します。

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 を使用します。シンクタグと結合IDは、パッケージ、フレームワーク、個別のメソッドではなく、脆弱性の種類を示します。既存の脆弱性の種類に対して新しいルールを作成する場合は、その種類のシンクタグを再利用するため、新たな結合は不要です。シンクタグから正確なセキュリティメタデータを導き出してください。

3. マトリックスを検証して終了する

get_status.py をもう一度実行します。割り当て済みのシンクタグがまだ報告される場合は、その結合を修正して繰り返します。すべての再利用可能なシンクタグが untrusted-data-source に接続されたら完了です。

出力

アーティファクト
  • 不足しているシンクタグごとに、.opentaint/rules/<lang>/security/<vulnerability>.yaml にセキュリティ結合ファイルを1つ作成します
概要
  • 結合ごとに1行:シンクタグとルールID

注意点

  • 報告されたシンクタグを直接参照してください。どちらのタググループについても、ライブラリルールのメンバーを再宣言したり列挙したりしないでください
  • 作成する結合にコメントを含めないでください

コメント