2026年、コーディングエージェントは単なるコード生成を超え、**「自律的な脆弱性診断」**の領域に足を踏み入れました。Google AntigravityのGemini基盤モデルは、Agent Skillsを通じて専門性を拡張できます。
その中でも最も強力なスキルの一つが、**Semgrepを用いたTaint Analysis(汚染解析)**です。本記事では、このスキルの設計思想から、Pandas等の複雑なデータフローを追跡する高度な設定までを徹底解説します。
1. Agent Skillsとしての位置づけ:SKILL.md の戦略
Antigravityにおけるスキルは、単なるツールの集合体ではありません。エージェントが「いつ」「何を」「どう」使うべきかを定義する思考のOSです。
配置パス
- Workspace固有: /.agent/skills/security-audit/
- グローバル: ~/.gemini/antigravity/global_skills/security-audit/
SKILL.md の設計ベストプラクティス
エージェントに「セキュリティエンジニア」としての振る舞いを植え付けるため、以下のメタデータを定義します。
---
name: Semgrep Taint Security Audit
description: 静的解析ツールSemgrepのTaint modeを駆使し、外部入力がサニタイズされずに危険な関数(Sink)へ到達するパスを自動検出・修正提案します。
priority: high
triggers: ["vulnerability scan", "security audit", "taint", "injection"]
---
## 役割
あなたは、データフロー解析の専門家です。単なるパターンマッチングではなく、「ソース(汚染源)→ 伝播(Propagator)→ シンク(危険な終点)」の全経路を可視化し、サニタイザ(浄化)の欠如を指摘します。2. 脆弱性別:実践的Semgrepルール・レシピ
エージェントが即座に利用できる、主要な脆弱性別のルール定義例です。
① SQLインジェクション (SQLi)
ORMを使用しない生クエリ(cursor.execute等)をターゲットにします。
# sql-taint.yaml
pattern-sources:
- patterns:
- pattern-either:
- request.args.get(...)
- request.form[...]
pattern-sinks:
- patterns:
- pattern: cursor.execute($QUERY, ...)
- pattern-not: cursor.execute(..., ($X,)) # パラメータ化クエリは除外② パス・トラバーサル (Path Traversal)
../によるディレクトリ越境攻撃を検出します。os.path.join を使っていても、ベースディレクトリの検証がない場合は警告対象とします。
③ OSコマンド・インジェクション
subprocess.run(shell=True) など、外部入力がそのままシェルに渡されるケースを検知。shlex.quote によるサニタイズを推奨するようエージェントに指示します。
