audit-augmentation
SARIFの静的解析結果やweAuditのアノテーションファイルから得られた外部監査の知見を、Trailmarkのコードグラフに統合するスキルです。ファイルや行の重複をもとに知見をグラフノードにマッピングし、深刻度別のサブグラフを生成することで、ブラスト半径やテイント解析などの事前分析データとクロスリファレンスが可能になります。SARIFの結果をコードグラフに投影したい場合、SemgrepやCodeQLの知見をコールグラフデータと照合したい場合、またはコード構造の文脈で監査結果を可視化したい場合に使用します。
description の原文を見る
> Augments Trailmark code graphs with external audit findings from SARIF static analysis results and weAudit annotation files. Maps findings to graph nodes by file and line overlap, creates severity-based subgraphs, and enables cross-referencing findings with pre-analysis data (blast radius, taint, etc.). Use when projecting SARIF results onto a code graph, overlaying weAudit annotations, cross-referencing Semgrep or CodeQL findings with call graph data, or visualizing audit findings in the context of code structure.
SKILL.md 本文
監査拡張(Audit Augmentation)
外部ツール(SARIF)と人間の監査者(weAudit)からの結果を Trailmark コードグラフにアノテーションとサブグラフとして投影します。
使用する場合
- Semgrep、CodeQL、またはその他の SARIF 生成ツールの結果をグラフにインポートする場合
- weAudit 監査アノテーションをグラフにインポートする場合
- 静的解析結果を blast radius または taint データと相互参照する場合
- 高重要度の結果を持つ関数をクエリする場合
- コード構造と並行して監査カバレッジを可視化する場合
使用しない場合
- 静的解析ツールを実行する場合(semgrep/codeql を直接使用してからインポート)
- コードグラフ自体を構築する場合(
trailmarkスキルを使用) - ダイアグラムを生成する場合(拡張後に
diagramming-codeスキルを使用)
拒否すべき判断根拠
| 判断根拠 | 何が間違っているのか | 必要なアクション |
|---|---|---|
| 「ユーザーは SARIF についてのみ尋ねたため、事前分析をスキップする」 | 事前分析なしでは、結果を blast radius や taint と相互参照できない | 拡張前に必ず engine.preanalysis() を実行する |
| 「マッチしない結果は重要ではない」 | マッチしない結果は、解析ギャップやスコープ外のファイルを示す可能性がある | マッチしない件数を報告し、件数が多い場合は調査する |
| 「1つの重要度サブグラフで十分」 | 異なる重要度は異なるトリアージワークフローが必要 | error だけでなく、すべての重要度のサブグラフをクエリする |
| 「SARIF 結果は自明」 | グラフコンテキストなしの結果は、blast radius と taint 到達可能性を欠く | 事前分析サブグラフと相互参照する |
| 「weAudit と SARIF は重複しており、どちらかを選ぶ」 | 人間の監査者とツールは異なるものを見つける | 両方が利用可能な場合は両方をインポートする |
| 「ツールがインストールされていないため、手作業で行う」 | 手作業による分析はツーリングが見つけるものを見逃す | まず trailmark をインストールする |
インストール
必須: uv run trailmark が失敗する場合、まず trailmark をインストールしてください:
uv pip install trailmark
クイックスタート
CLI
# SARIF で拡張
uv run trailmark augment {targetDir} --sarif results.sarif
# weAudit で拡張
uv run trailmark augment {targetDir} --weaudit .vscode/alice.weaudit
# 両方同時に、JSON 出力
uv run trailmark augment {targetDir} \
--sarif results.sarif \
--weaudit .vscode/alice.weaudit \
--json
プログラムAPI
from trailmark.query.api import QueryEngine
engine = QueryEngine.from_directory("{targetDir}", language="auto")
# 相互参照用に事前分析を先に実行
engine.preanalysis()
# SARIF で拡張
result = engine.augment_sarif("results.sarif")
# result: {matched_findings: 12, unmatched_findings: 3, subgraphs_created: [...]}
# weAudit で拡張
result = engine.augment_weaudit(".vscode/alice.weaudit")
# 結果をクエリ
engine.findings() # すべての結果
engine.subgraph("sarif:error") # 高重要度の SARIF
engine.subgraph("weaudit:high") # 高重要度の weAudit
engine.subgraph("sarif:semgrep") # ツール名別
engine.annotations_of("function_name") # ノード単位の検索
自動検出がターゲットに対して間違っている場合は、明示的な言語または python,rust のようなカンマ区切りリストで再実行してください。
ワークフロー
拡張の進捗:
- [ ] ステップ 1: グラフを構築して事前分析を実行する
- [ ] ステップ 2: SARIF/weAudit ファイルを特定する
- [ ] ステップ 3: 拡張を実行する
- [ ] ステップ 4: 結果とサブグラフを検査する
- [ ] ステップ 5: 事前分析と相互参照する
ステップ 1: グラフを構築し、blast radius と taint コンテキストの事前分析を実行します:
engine = QueryEngine.from_directory("{targetDir}", language="auto")
engine.preanalysis()
自動検出がターゲットに対して間違っている場合は、明示的な言語または python,rust のようなカンマ区切りリストで再実行してください。
ステップ 2: 入力ファイルを特定します:
- SARIF: 通常、
semgrep --sarif -o results.sarifやcodeql database analyze --format=sarif-latestなどのツールの出力 - weAudit: ワークスペース内の
.vscode/<username>.weauditに保存
ステップ 3: engine.augment_sarif() または engine.augment_weaudit() で拡張を実行します。結果の unmatched_findings を確認してください — これらは、ファイル/行位置が解析されたコードユニットとオーバーラップしなかった結果です。
ステップ 4: 結果とサブグラフをクエリします。engine.findings() を使用してアノテーション付きのすべてのノードを一覧表示します。engine.subgraph_names() を使用して利用可能なサブグラフを確認します。
ステップ 5: 事前分析データと相互参照して優先順位を付けます:
- Tainted ノード上の結果:
sarif:errorをtaintedサブグラフと重ね合わせる - 高い blast radius ノード上の結果:
high_blast_radiusと重ね合わせる - 特権境界上の結果:
privilege_boundaryと重ね合わせる
アノテーション形式
結果は標準 Trailmark アノテーションとして保存されます:
- Kind:
finding(ツール生成)またはaudit_note(人間のメモ) - Source:
sarif:<tool_name>またはweaudit:<author> - Description: コンパクトな 1 行形式:
[SEVERITY] rule-id: message (tool)
作成されるサブグラフ
| サブグラフ | 内容 |
|---|---|
sarif:error | SARIF エラーレベルの結果を持つノード |
sarif:warning | SARIF 警告レベルの結果を持つノード |
sarif:note | SARIF 注釈レベルの結果を持つノード |
sarif:<tool> | 特定のツールでフラグが立てられたノード |
weaudit:high | 高重要度の weAudit 結果を持つノード |
weaudit:medium | 中重要度の weAudit 結果を持つノード |
weaudit:low | 低重要度の weAudit 結果を持つノード |
weaudit:findings | すべての weAudit 結果(entryType=0) |
weaudit:notes | すべての weAudit メモ(entryType=1) |
マッチング方法
結果は、ファイルパスと行範囲のオーバーラップによってグラフノードにマッチします:
- 結果のファイルパスはグラフの
root_pathに対して正規化されます location.file_pathがマッチし、かつ行範囲がオーバーラップするノードが選択されます- 最もタイトなマッチ(最小スパン)が優先されます
- 結果の位置がノードとオーバーラップしない場合、マッチしないとカウントされます
SARIF パスは相対パス、絶対パス、または file:// URI である可能性があり、すべて処理されます。weAudit は 0 インデックスの行を使用し、自動的に 1 インデックスに変換されます。
関連ドキュメント
references/formats.md— SARIF 2.1.0 および weAudit ファイル形式フィールドリファレンス
ライセンス: CC-BY-SA-4.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- trailofbits
- リポジトリ
- trailofbits/skills
- ライセンス
- CC-BY-SA-4.0
- 最終更新
- 不明
Source: https://github.com/trailofbits/skills / ライセンス: CC-BY-SA-4.0
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。