セキュリティモデル
| 脅威 | 対策 | 残るリスク |
|---|---|---|
| エージェントの実行環境からの鍵の盗難 | 鍵をエージェントに置かない。既定は CDP のサーバーウォレット | サイドカーのホストが乗っ取られた場合 → 残高を少なくし、CDP 側のポリシーも併用 |
| プロンプトインジェクションによる支払い誘導 | ポリシーをモデルの外に置き、拒否理由を平文で返す | — |
| 偽の 402・受取先のすり替え | 実際のリクエスト先ホストで判定、payTo の固定、初回上限、価格急変チェック |
固定していないホスト |
| 二重払い | 1判定1署名、送信後は再送しない、Idempotency-Key、payment-identifier、nonce の一意性 | — |
| エージェント間の予算の取り合い | SQLite の BEGIN IMMEDIATE 内で予約 |
別々の台帳を持つ複数のサイドカー(サイドカーを1つにする。コントロールプレーンの共有予算は Team 向けに計画中) |
| エージェントによる自己承認 | 管理トークン必須。確認リンクは HMAC 束縛、GET では動作しない | トークンファイルを読めるシェルを持つエージェント → 別の OS ユーザーやコンテナで分離 |
| ログへの機微情報の混入 | ヘッダ・ボディは保存せず、クエリ文字列も落とす | — |
脆弱性は security@spendctl.dev 宛てに非公開で報告してください。