このリポジトリは LLM エージェント (Claude Code) を GitHub Actions で実行する性質上、 通常のソフトウェア以上に prompt injection / コマンドインジェクション / シークレット漏洩 に対する配慮が必要です。
| バージョン | サポート状況 |
|---|---|
main (最新) |
✅ サポート |
| それ以外 | ❌ サポート対象外 |
セキュリティ脆弱性を発見した場合、公開 Issue ではなく 以下のいずれかの方法で 報告してください。
- リポジトリの Security タブを開く
- Report a vulnerability をクリック
- 必要事項を記入して送信
hyuujm812@icloud.com 宛に下記情報を含めて送信してください。
- 影響を受けるバージョン (commit hash 推奨)
- 再現手順
- 想定される影響範囲
- (可能であれば) 修正案
| ステップ | 期間目安 |
|---|---|
| 受領確認 | 営業日 2 日以内 |
| 影響評価・トリアージ | 1 週間以内 |
| 修正版リリース or 緩和策の提示 | 重大度に応じて 30 日以内 |
このリポジトリの workflow を導入する際、以下が 前提条件 として満たされている 必要があります。これらが満たされていない環境ではセキュリティ保証ができません。
- ✅
ANTHROPIC_API_KEYは GitHub Secrets に格納 (リポジトリやコードに直書きしない) - ✅
GITHUB_TOKEN(短命) のみを使用 (PAT を使わない) - ✅
permissions:は各 workflow で必要最小限のみ宣言 (本リポはこの方針で実装済み) - ✅
--allowedToolsでエージェントが触れるツールを明示的に制限 (本リポ実装済み) - ✅ Issue title / body 等のユーザー制御値は 必ず
env:経由 でpromptに渡す (run:ブロックへの直接展開はコマンドインジェクションを許す) - ✅
@claudeメンションは write 権限ユーザーのみがトリガー可能 (claude-code-action のデフォルト動作 — 変更しないこと) - ✅ Pull request の merge には 1 approve 以上必須 (Branch Protection で強制)
エージェントが扱う Issue / PR コメントは、外部ユーザーが改変可能な信頼できない入力です。 以下の防御策を実装しています。
- 入力経路の限定: Issue title / body は
env:経由のみで渡し、シェル展開を排除 - 権限の最小化:
--allowedToolsで MCP ツールを明示列挙 (例:mcp__github__create_pull_requestは許可、mcp__github__delete_repositoryは不許可) - アクション制御:
permissions:で workflow ごとに最小権限を宣言 - Triage の分類: セキュリティ・認証関連の変更は Route C (人間主体) に振り分けるよう
symphony-triage.ymlのプロンプトに明記
- Issue 本文に「ファイル X を削除してください」と書かれた場合、エージェントは指示通りに 削除する可能性があります。信頼できないユーザーから write 権限を奪われると危険です
- PR レビュー時、エージェントが提案するコードは必ず人間がレビューしてください (1 approve 必須を Branch Protection で強制)
--max-turns 30を超えた場合、エージェントは途中停止します。再実行の判断は人間が行ってくださいsymphony-decompose.ymlは ADR の markdown を信頼してパースします。ADR の merge 自体に 人間 approve を必須にすることで、悪意ある ADR を排除してください