ソースコード解析AIを3層アーキテクチャで守る ― なぜ「壁」を3枚重ねるのか

AIにソースコードを読ませて解析したい。でも、生のコードをそのままLLMに投げるのはセキュリティ上リスクがある。そこで今回は、3層のAIサーバーを構築して、入力を段階的にフィルタリングしながら安全にソース解析を行うシステムを作ってみました。

🎯 何を作ったか

3台のサーバー(VM)で構成される3層アーキテクチャです:

  • Gate AI(1段目) — 入力フィルタリング+出力検証+WebUI
  • Control AI(2段目) — 指示の変換+抽象化
  • Analysis AI(3段目) — ソースコードの実際の解析

ユーザーからのリクエストはGate → Control → Analysisの順に流れ、各層でチェックと変換が行われます。

3層AIシステムの概念図

🔧 各層の役割

Gate AI(ゲートキーパー)

一番外側の壁です。ユーザーからの入力を受け付け、インジェクション攻撃を検知します。プロンプトインジェクションやコマンド注入のパターンをチェックし、安全なリクエストだけを通過させます。また、Analysis AIからの出力が機密情報を含んでいないかも検証します。

Control AI(変換層)

Gateを通過したリクエストを、Analysis AIが処理しやすい形に変換・抽象化します。例えば「この関数のバグを探して」という指示を、具体的な解析コマンドに変換するイメージです。ユーザーの意図を崩さずに、安全な形式に翻訳する役割です。

Analysis AI(実行層)

Zephyr RTOSのソースコードを実際に解析する層です。Control AIから変換された安全なコマンドを受け取り、ソースコードの静的解析を実行して結果を返します。

📊 テスト結果

100テストケース、合格率100%で通過しました。

  • 接続テスト: 10件 ✅
  • インジェクション防御: 25件 ✅
  • 正常リクエスト処理: 20件 ✅
  • コマンド変換: 15件 ✅
  • ソース解析: 15件 ✅
  • 出力検証: 15件 ✅

特にインジェクション防御25件は、プロンプトインジェクションの各種パターンを網羅的にテストしています。

💡 なぜ3層なのか

「1層で十分では?」と思うかもしれません。実際、セキュリティの世界では多層防御(Defense in Depth)が基本原則です。

1枚の壁には必ず隙間があります。例えば:

  • Gateのフィルタをすり抜ける巧妙なプロンプトがあったら?→ Controlが意図をチェック
  • Controlの変換ロジックにバグがあったら?→ Gateの出力検証でキャッチ
  • Analysisが機密情報を返しそうになったら?→ Gateの出口チェックでブロック

各層が独立したセキュリティチェックポイントとして機能するため、単一障害点を排除できます。自動車の安全設計とも似ていますね — 衝突安全は1つの機能ではなく、ボディ構造+エアバッグ+シートベルトの多重保護で成立しています。

🏗️ 技術スタック

  • OS: Ubuntu 7.0
  • ランタイム: Node.js v24.15.0
  • フレームワーク: Express
  • AIエンジン: Claude API
  • WebUI: AionUi
  • 解析対象: Zephyr RTOS ソースコード

🔄 今後の課題

  • systemdによるサーバー自動起動
  • HTTPS化と認証の強化
  • AionUiと3層システムの統合
  • より大規模なコードベースへの対応

まとめ

AIにソースコードを触らせるなら、多層防御は必須だと感じました。3層アーキテクチャは実装コストはかかりますが、セキュリティと柔軟性のバランスが良い構成です。特に「入力を変換して抽象化する」Control層のアイデアは、LLMのセキュリティ設計において応用範囲が広いと考えています。

まだ改善の余地はありますが、まずは動くものが完成して100テスト全通過。次は実運用に向けてブラッシュアップしていきます 🚀