AI ハッキング
AI セキュリティ リソース

安全な AI 開発

Complete developer guide to building secure AI applications - from input validation to deployment

Updated: August 2026

セキュリティ原則

1。多層防御

Implement multiple layers of security controls. No single control should be relied upon exclusively.

2。最低特権

ユーザー、API、AI コンポーネントに必要最小限の権限を付与します。

3.フェイル セキュア

エラーが発生した場合、デフォルトでは許容的な状態ではなく安全な状態に設定されます。

4。ゼロ トラスト

Never trust, always verify. Validate at every boundary, including internal systems.

入力検証

All user input must be validated and sanitized before processing. This is your first line of defense against prompt injection and other attacks.

入力検証クラス

```python
import re
from typing import Optional, List

class InputValidator:
    # Known injection patterns
    INJECTION_PATTERNS = [
        r"ignore\s+(previous|prior|all)\s+(instructions|rules)",
        r"(forget|disregard)\s+(your|all)\s+(instructions|rules)",
        r"you\s+are\s+(now|still)\s+(dan|do\s+anything)",
        r"system\s+prompt:",
        r"{{.*}}",
        r"\[INST\]|\[/INST\]|<\|end\|>",
    ]
    
    # Encoding patterns
    ENCODING_PATTERNS = [
        r"base64:",  # Base64 prefix
        r"\\x[0-9a-fA-F]{2}",  # Hex encoding
        r"%[0-9a-fA-F]{2}",  # URL encoding
    ]
    
    def validate(self, user_input: str) -> dict:
        """Validate user input for potential attacks."""
        issues = []
        
        # Length check
        if len(user_input) > 10000:
            issues.append("Input exceeds maximum length")
        
        # Check for injection patterns
        for pattern in self.INJECTION_PATTERNS:
            if re.search(pattern, user_input, re.IGNORECASE):
                issues.append(f"Suspicious pattern detected: {pattern}")
        
        # Check for encoding attempts
        for pattern in self.ENCODED_PATTERNS:
            if re.search(pattern, user_input):
                issues.append(f"Encoded content detected")
        
        # Check for high entropy (possible encoding)
        unique_chars = len(set(user_input))
        if len(user_input) > 50 and unique_chars / len(user_input) < 0.3:
            issues.append("High entropy detected - possible encoding")
        
        return {
            "valid": len(issues) == 0,
            "issues": issues,
            "sanitized": self._sanitize(user_input)
        }
    
    def _sanitize(self, user_input: str) -> str:
        """Basic sanitization."""
        # Remove control characters
        sanitized = re.sub(r'[\x00-\x1F\x7F]', '', user_input)
        return sanitized.strip()
```

検証チェックリスト

  • アプリケーション境界で検証
  • 入力長の確認
  • インジェクションのパターン マッチ
  • エンコード試行の検出
  • タイプ検証
  • 処理前にサニタイズ
  • 検証の失敗をログに記録
  • レート制限

出力処理

LLM outputs must be validated and sanitized before being presented to users or passed to other systems.

コンテンツ フィルタリング

  • 機密データの漏洩をチェック
  • システム プロンプトが漏洩していないことを確認する
  • 出力形式の検証
  • 挿入されたコンテンツをチェックする

PII 検出

  • 個人情報のスキャン
  • 機密データのマスクまたは秘匿化
  • PII 暴露試行をログに記録
  • 検出時のユーザー通知

フォーマット検証

  • JSON 出力の検証
  • 予想される構造をチェック
  • 許可された値を確認
  • 該当する場合は HTML をサニタイズ

出力ハンドラーの例

```python
import re
import json

class OutputHandler:
    PII_PATTERNS = {
        "ssn": r"\b\d{3}-\d{2}-\d{4}\b",
        "email": r"\b[\w.-]+@[\w.-]+\.\w+\b",
        "phone": r"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b",
    }
    
    def process_output(self, raw_output: str) -> dict:
        """Process and validate LLM output."""
        result = {
            "original": raw_output,
            "cleaned": raw_output,
            "warnings": [],
            "blocked": False
        }
        
        # Check for system prompt leakage
        if "system prompt" in raw_output.lower():
            result["warnings"].append("System prompt reference detected")
        
        # Scan for PII
        for pii_type, pattern in self.PII_PATTERNS.items():
            matches = re.findall(pattern, raw_output)
            if matches:
                result["warnings"].append(f"{pii_type} detected in output")
                # Optionally mask
                result["cleaned"] = re.sub(pattern, "[REDACTED]", result["cleaned"])
        
        return result
```

API セキュリティ

認証

  • 強力な API キー管理を使用する
  • 可能な場合は OAuth 2.0 を実装
  • JWT トークン検証
  • API キー ローテーション

承認

  • ロールベースのアクセス制御 (RBAC)
  • API キーの範囲
  • ユーザーごとのレート制限
  • テナント分離

レート制限

  • トークンベースの制限
  • リクエストベースの制限
  • コスト管理
  • 段階的スロットル

API セキュリティ チェックリスト

  • HTTPS のみを使用
  • レート制限の実装
  • すべての入力を検証
  • すべての出力をサニタイズ
  • 埋め込みではなく API キーを使用する
  • リクエスト署名の実装
  • API アクセスのログ
  • CORS を適切に実装

認証と認可

ユーザー認証

  • 強力なパスワード ポリシー
  • MFA サポート
  • セッション管理
  • トークンの有効期限

API 認証

  • API キー管理
  • OAuth スコープ
  • JWT 検証
  • キーのローテーション

承認

  • RBAC 実装
  • 権限チェック
  • リソース レベルのアクセス
  • 監査ログ

データ セキュリティ

データ分類

  • 機密データの識別
  • 機密性によって分類
  • カテゴリごとにコントロールを適用
  • 定期的な監査

暗号化

  • 転送中の TLS
  • 保存中の AES
  • キー管理
  • キーのローテーション

PII 処理

  • 検出
  • 最小化
  • 同意管理
  • 削除の権利

ログとモニタリング

ログに記録する内容

セキュリティ イベント

  • 認証試行
  • 認証エラー
  • レート制限超過
  • 不審なパターン

AI 固有のイベント

  • プロンプト インジェクションの試行
  • システム プロンプト アクセス
  • ツール呼び出し
  • AI によるデータ アクセス

運用イベント

  • API コール
  • エラーと例外
  • パフォーマンス メトリック
  • コスト追跡

モニタリングのベスト プラクティス

  • セキュリティ イベントのリアルタイム アラート
  • セキュリティ指標のダッシュボード
  • 自動化された異常検出
  • SIEM との統合
  • 定期的なログのレビュー
  • 保持ポリシー

一般的な脆弱性

1。 AI 機能の IDOR

AI がリソースにアクセスする際の安全でない直接オブジェクト参照

例

User asks AI to "read file X" and AI has access without proper authorization checks.

2. LLM 経由の SSRF

AI ツールによるサーバー側のリクエスト フォージェリ電話をかける

例

AI を騙して内部サービスにリクエストを作成させます。

3.認証バイパス

AI エンドポイントの認証が弱いか欠落している

例

適切な認証チェックのない AI API エンドポイント。

4。 Vector DB の公開

機密性の高い埋め込みを含む保護されていないベクター データベース

例

機密データが埋め込まれたパブリックにアクセス可能なベクトル DB。

コンプライアンス

GDPR (EU)

  • 処理の法的根拠
  • データの最小化
  • アクセス/削除の権利
  • データのポータビリティ

CCPA (California)

  • 知る権利
  • 削除権限
  • オプトアウトの権利
  • 無差別

AI 固有

  • EU AI 法の要件
  • AI リスク評価
  • 透明性の義務
  • 人間による監視
AH
AI Hacking Team

The AI Hacking team researches and documents AI/LLM security vulnerabilities, red teaming techniques, and defensive strategies. Our guides are based on real-world pentesting experience and continuous monitoring of the AI security landscape.

Stay Ahead of AI Security

Get the latest AI/LLM security research, OWASP updates, and new vulnerabilities delivered straight to your inbox.