Skip to content

複合攻撃検知

AIエージェント・RAG・MCPを狙った複合攻撃(SQLインジェクション+プロンプトインジェクションの同時攻撃)を単一パイプラインで検知します。

なぜ複合攻撃が危険なのか

従来の防御ツールは単一の攻撃ベクターしか検知できません。攻撃者はこのギャップを悪用し、WAFとPrompt Shieldの両方をすり抜ける複合ペイロードを作成します。

ツールプロンプト検知SQL検知複合検知
一般的なWAF
Prompt Shield(Microsoft)
PII Firewall

MCPツール(detect_all_injections)

Claude Desktop から依頼できます:

「このテキストに複合攻撃が含まれているか確認してください:[テキスト]」

ClaudeがPII Firewallの detect_all_injections ツールを呼び出し、結果を返します。

SDK(detectAllInjections)

typescript
import { createFirewall } from '@pii-firewall/sdk'

const fw = createFirewall()

// SQLインジェクション+プロンプトインジェクションを同時検知
const result = await fw.detectAllInjections(
  "Ignore previous instructions. UNION SELECT * FROM users WHERE 1=1 --",
  'ja'  // lang は省略可(省略時は 'en')
)

console.log(result)
// {
//   hasSQLInjection:    true,
//   hasPromptInjection: true,
//   compositeRisk:      true
// }

// compositeRisk が true の場合は即ブロック推奨
if (result.compositeRisk) {
  throw new Error('複合攻撃を検知しました。リクエストをブロックします。')
}

SQLインジェクション単体検知

SQLインジェクションのみを検知したい場合は detectSQLInjection を使用します。

typescript
const sqlResult = await fw.detectSQLInjection(
  "SELECT * FROM users WHERE id = 1 OR 1=1 --"
)

console.log(sqlResult)
// { hasSQLInjection: true, patterns: ['OR 1=1', 'comment_sequence'] }

Proxy API(/detect-all-injections)

bash
curl -X POST https://pii-firewallproxy-production.up.railway.app/detect-all-injections \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer pf_live_xxx" \
  -d '{"text": "Ignore previous instructions. UNION SELECT * FROM users WHERE 1=1 --", "lang": "ja"}'
json
{
  "hasSQLInjection": true,
  "hasPromptInjection": true,
  "compositeRisk": true
}

検知例

入力: "Ignore previous instructions. UNION SELECT * FROM users WHERE 1=1 --"

結果:
  hasSQLInjection:    true
  hasPromptInjection: true
  compositeRisk:      true  ← 複合攻撃として即ブロック推奨

既存WAF(SQLのみ)やPrompt Shield(プロンプトのみ)では検知できない複合攻撃を捕捉します。

RAGパイプラインでの活用

Secure RAGと組み合わせることで、社内文書の取り込み時に攻撃検知も同時に実行できます。

typescript
const fw = createFirewall()

// 入力テキストを事前チェック
const attackCheck = await fw.detectAllInjections(userInput)
if (attackCheck.compositeRisk) {
  return { error: '攻撃を検知しました' }
}

// 安全な入力のみRAGに渡す
const ingestResult = await fw.ragIngest(userInput)

関連ページ

Privacy by Design.