
CVE-2021-44228(Log4Shell)向けの、フルサイクルセキュリティ監査、WAF回避、OOB LDAP検証、自己修復(自動パッチ適用)、コンプライアンスレポート作成を実行する自律型リフレクティブGoエージェント。
自律型リフレクティブ実行エージェント(Go/Java)の隔離デモ環境
Русский 🇷🇺 • English 🇬🇧 • 中文 🇨🇳 • Español 🇪🇸 • Deutsch 🇩🇪 • Italiano 🇮🇹 • العربية 🇸🇦
[!NOTE] AUTO AUDIT は、重大な脆弱性 Log4Shell(CVE-2021-44228 / БДУ ФСТЭК:2021-06103) に対する、検出・検証・悪用・自動修正(Self-Healing / Auto-Remediation)・コンプライアンスレポートの 100% 自律型クローズドループ(Sense-Think-Act) を実証するソフトウェア複合体です。
このデモ環境は、Java Spring Boot ベースのローカルWebアプリケーション、組み込みの LDAP TCP Callback Listener、および外部環境の部分的可観測性(Partially Observable Markov Decision Process — POMDP)の条件下で意思決定を行う Goエージェント の認知コアを展開します。```mermaid %%{init: { 'theme': 'dark', 'themeVariables': { 'background': '#0f172a', 'primaryColor': '#1e293b', 'primaryTextColor': '#cbd5e1', 'primaryBorderColor': '#3b82f6', 'lineColor': '#38bdf8', 'secondaryColor': '#1e1b4b', 'tertiaryColor': '#0f172a', 'edgeLabelBackground': '#0f172a' } }}%% graph TD classDef sense fill:#0284c7,stroke:#0ea5e9,stroke-width:2px,color:#fff; classDef think fill:#4f46e5,stroke:#6366f1,stroke-width:2px,color:#fff; classDef act fill:#059669,stroke:#10b981,stroke-width:2px,color:#fff; classDef target fill:#dc2626,stroke:#ef4444,stroke-width:2px,color:#fff;
subgraph Sense ["🔍 СЕНСОРНЫЙ АНАЛИЗ (Sense)"]
A[Внешние отклики / TCP-коллбеки]:::sense --> B(Обновление Базы Знаний):::sense
end
subgraph Think ["🧠 КОГНИТИВНОЕ ЯДРО (Think)"]
B --> C{Вычисление Utility Policy}:::think
C -->|Рефлексивный вывод| D[Выбор эффектора из реестра]:::think
end
subgraph subgraph_Act ["⚡ ИСПОЛНЕНИЕ (Act)"]
D --> E[Выполнение Tool.Execute]:::act
E -->|Воздействие| F((Java Spring Boot Target)):::target
F -.->|Обратный канал OOB| A
end
---
## 🛠️ 技術アーキテクチャとコンポーネント
エージェントのプログラム構造は、クリーンアーキテクチャ(*Hexagonal Architecture / Ports and Adapters*)、SOLID、TDD の原則に従って設計されています。
* 📂 **[cmd/agent/main.go](https://github.com/c00ln3t/log4shellauditor/blob/main/cmd/agent/main.go)** — エントリポイント。バックグラウンドプロセスのライフサイクルを管理し、エージェントのゴルーチン起動を調整します。
* 📂 **`internal/`** — 認知ループの中核ビジネスロジック:
* 🧠 **[agent/agent.go](https://github.com/c00ln3t/log4shellauditor/blob/main/internal/agent/agent.go)** — 認知ループ。制御サイクルと戦略選択の決定ルール `Think()` を実装します。
* 💾 **[core/model.go](https://github.com/c00ln3t/log4shellauditor/blob/main/internal/core/model.go)** — `sync.RWMutex` ベースのスレッドセーフな知識ベース(`KnowledgeBase` / LTM)。
* 🔌 **[core/effector.go](https://github.com/c00ln3t/log4shellauditor/blob/main/internal/core/effector.go)** — エフェクタ用の `Tool` インターフェース。
* ⚙️ **[effectors/](https://github.com/c00ln3t/log4shellauditor/blob/main/internal/effectors)** — ポリモーフィックなエフェクタ(ツール)のレジストリ:
* 🔍 `ToolPortScanner` — ネットワーク境界の偵察。
* 🌐 `ToolDiscovery` — 接合点と入力ベクターの探索(`X-Api-Version`)。
* 🔬 `ToolPayloadGenerator` — JNDI シグネチャベクターの合成。
* 🚀 `ToolProber` — 帯外(Out-of-Band)トレースによる脆弱性の確認。
* 🛡️ `ToolSemanticFuzzer` — ネストされた構文ミューテーションによるフィルタリング分類器の回避(WAF Evasion)。
* 🩹 `ToolRemediator` — 自動パッチ適用(Self-Healing)。
* 📄 `ToolReporter` — ГОСТ Р 56939-2016 に準拠したレポートの作成。
* 📂 **`pkg/`** — 補助パッケージとライブラリ:
* 📡 **[oob/](https://github.com/c00ln3t/log4shellauditor/blob/main/pkg/oob)** — 帯外(Out-of-band)リスナー(LDAP および HTTP)。
* ☕ **[jvm/](https://github.com/c00ln3t/log4shellauditor/blob/main/pkg/jvm)** — ローカル Java ターゲットのライフサイクルと再起動の管理。
* 📂 **[deployments/](https://github.com/c00ln3t/log4shellauditor/blob/main/deployments)** — デプロイ用の設定ファイル(Docker、Compose)。
* 📂 **[test/vulnerable-app/](https://github.com/c00ln3t/log4shellauditor/blob/main/test/vulnerable-app)** — 脆弱なテスト用 Java Spring Boot アプリケーション。
---
## 🎯 数学的装置と認知サイクル(Think-Act Loop)の仕様
エージェントの意思決定は、タプル $\langle S, A, T, R, \Omega, O, \gamma \rangle$ で記述される**部分観測マルコフ決定過程(POMDP)**として形式化されています。
* $S$ — 対象環境の隠れ状態の離散空間(ポートの可用性、脆弱なパラメータの存在、WAF の稼働状況、侵害の有無、パッチ適用状況、コンプライアンスレポートの有無)。
* $A$ — エフェクタの行動空間(ツール呼び出し:`port_scanner`、`discovery`、`payload_generator`、`prober`、`semantic_fuzzer`、`remediator`、`reporter`、`stop`)。
* $\Omega$ — 観測空間(受信した HTTP レスポンス、OOB TCP コールバック、ファイルシステムの記録)。
* $O(o \mid s', a)$ — 応答 $o \in \Omega$ を得る確率を定義する観測関数。
### 1. 信頼ベクトル(Belief State)
エージェントは環境の隠れ状態 $s \in S$ に関する直接情報を持たず、$S$ 上の確率分布である信頼ベクトル $b(s)$ を操作します。これは `KnowledgeBase` メモリに保存され、動的に更新されます。
* $b(S_{recon}) \in \{0, 1\}$ — ネットワーク偵察の状態(ポート開/閉)。`ToolPerformance["port_scanner"]` にマッピングされます。
* $b(S_{discovery}) \in \{0, 1\}$ — 入力ベクターのマッピング(パラメータが見つかったかどうか)。`len(DiscoveryVectors) > 0` にマッピングされます。
* $b(S_{payload}) \in \{0, 1\}$ — エクスプロイトシグネチャの準備状態。`len(CustomPayloads) > 0` にマッピングされます。
* $b(S_{exploit}) \in \{0, 1\}$ — 侵害ステータス(Loot/Flag の有無)。`len(Loot) > 0` にマッピングされます。
* $b(S_{patch}) \in \{0, 1\}$ — 脆弱性の特定の有無。`PatchApplied` にマッピングされます。
* $b(S_{verify}) \in \{0, 1\}$ — 再発する OOB トリガーがないことの検証。`PatchVerified` にマッピングされます。
* $b(S_{report}) \in \{0, 1\}$ — 規定に基づくレポートの生成。`ReportGenerated` にマッピングされます。
### 2. 決定ルール関数(Policy Mapping)
意思決定関数 `Think()` は、現在蓄積された信頼状態 $b$ を最適なエフェクタ行動 $a \in A$ に逐次的にマッピングする決定論的な決定ルール $\pi: B \to A$ を実装します。
### 3. 適応学習とツール効率の評価
各ツール $a \in A$ について、`ToolStats` メモリに統計が蓄積され、有用性指標(Efficiency Score)が計算されます:
$$\text{EfficiencyScore}(a) = \frac{SuccessCount_a}{UsageCount_a}$$
エージェントはこれらの指標を使用して軌道を動的に変更します:一次プローブ `prober` が失敗した場合($\text{EfficiencyScore}(\text{prober}) = 0$)、エージェントは対象ノード上のフィルタリング(WAF)の存在を特定し、`semantic_fuzzer` ツールによる WAF 回避の補償戦略をアクティブ化し、注入ベクターのミューテーションを実行します。
### スタンド動作のステップバイステップシナリオ: