
このリポジトリは、**CVE-2025-25257** 向けの本番環境対応の検知エンジニアリングコンテンツを提供します。CVE-2025-25257 は、Fortinet FortiWeb Fabric Connector バージョン 7.0 から 7.6.x に存在する認証前 SQL インジェクションの脆弱性です。悪用に成功すると、事前認証なしでリモートコード実行が可能になります。
このリポジトリは、CVE-2025-25257 向けの本番運用可能な検知エンジニアリングコンテンツを提供します。これは、Fortinet FortiWeb Fabric Connector のバージョン 7.0 から 7.6.x における事前認証 SQLインジェクションの脆弱性です。悪用に成功すると、事前認証なしでリモートコード実行が可能になります。
このコンテンツは防御目的のみを意図しています。セキュリティオペレーションセンター(SOC)チーム、検知エンジニア、脅威ハンターを対象としています。武器化されたエクスプロイトコードは含まれていません。
CVE-2025-25257 は、FortiWeb の Fabric Connector API エンドポイント /api/fabric/device/status に影響します。Authorization ヘッダーはサニタイズなしで SQL クエリに直接渡されます。未認証の攻撃者は、Bearer トークンの値に SQL 構文を注入して基盤となるクエリを操作し、認証をバイパスし、特定の構成では SQL ベースのコマンドスタッキングやファイル書き込みプリミティブを介してリモートコード実行を達成できます。
この脆弱性は、資格情報なしでネットワーク経由で悪用可能です。ログ収集が行われていれば、HTTP アクセスログで簡単に検知できます。
攻撃者は、細工された HTTP GET リクエストを Fabric Connector API に送信します。Authorization ヘッダー内の Bearer トークンには、注入された SQL が含まれます。パターン例:
Authorization: Bearer aaa' OR '1'='1
これにより、バックエンドの SQL クエリが true と評価され、トークン検証がバイパスされます。さらに悪用を進める場合、データベースの構成と権限に応じて、データ読み取りのための UNION ベースのインジェクションや、ファイル書き込み・OS コマンド実行のためのスタックドクエリが使用される可能性があります。
以下は、検知ルールの検証目的のみで文書化されています。
GET /api/fabric/device/status HTTP/1.1
Host: <fortiweb-ip>
Authorization: Bearer aaa' OR '1'='1
このリポジトリの検知ルールは、HTTP ログおよびネットワークトラフィック内のこれおよび類似のインジェクションパターンを識別するように調整されています。
YARA ルールは rules/yara/ にあります。
cve_2025_25257_http.yar - HTTP ログファイルおよびキャプチャされたトラフィック内の悪用パターンを検知しますcve_2025_25257_webshell.yar - 悪用後に配置された可能性のある Web シェルを検知しますcve_2025_25257_payload.yar - ディスク上の未加工のペイロードアーティファクトを検知しますHTTP アクセスログをスキャン:
yara -r rules/yara/cve_2025_25257_http.yar /var/log/fortiweb/
Web ルートで配置されたファイルをスキャン:
yara -r rules/yara/cve_2025_25257_webshell.yar /var/www/html/
キャプチャした PCAP をスキャン:
yara rules/yara/cve_2025_25257_http.yar capture.pcap
ディレクトリに対してすべてのルールを再帰的に実行:
yara -r rules/yara/ /path/to/scan/
KQL クエリは rules/kql/ にあります。各ファイルは特定の検知カテゴリを対象としています。
Sigma ルールは rules/sigma/ にあります。これらは sigma-cli または pySigma を使用して任意の SIEM 形式に変換できます。
Splunk SPL に変換:
sigma convert -t splunk rules/sigma/cve_2025_25257_sqli.yml
Elastic EQL に変換:
sigma convert -t elasticsearch rules/sigma/cve_2025_25257_sqli.yml
FortiWeb アプライアンスの CLI で以下を実行します:
get system status | grep Version
影響を受けるバージョン: 7.0.x から 7.6.0
修正済み: 7.6.1 以降
脆弱なエンドポイントをシミュレートする基本的な Nginx リバースプロキシを、検知テストに使用できます。ログベースの検知検証には、実際の FortiWeb イメージは必要ありません。
# Pull the test lab container
docker run -d \
--name fortiweb-sim \
-p 8443:443 \
-v $(pwd)/src/lab/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:alpine
# Send a simulated exploitation request
curl -k -H "Authorization: Bearer aaa' OR '1'='1" \
https://localhost:8443/api/fabric/device/status
これにより、D-01 の検知パターンに一致するアクセスログエントリが生成されます。
テストリクエストを送信した後、シミュレートされたログ出力を確認します:
docker logs fortiweb-sim | grep "fabric/device/status"
期待されるログエントリのパターン:
"GET /api/fabric/device/status HTTP/1.1" 401 - "Bearer aaa' OR '1'='1"
ログに対して YARA ルールを実行します:
yara rules/yara/cve_2025_25257_http.yar /var/log/nginx/access.log
期待される出力:
CVE_2025_25257_SQLi_AuthHeader /var/log/nginx/access.log
cve-2025-25257-detection/
├── README.md
├── LICENSE
├── .gitignore
├── rules/
│ ├── yara/
│ │ ├── cve_2025_25257_http.yar
│ │ ├── cve_2025_25257_webshell.yar
│ │ └── cve_2025_25257_payload.yar
│ ├── kql/
│ │ ├── 01_web_exploitation.kql
│ │ ├── 02_process_spawn.kql
│ │ ├── 03_command_execution.kql
│ │ ├── 04_file_creation.kql
│ │ ├── 05_persistence.kql
│ │ ├── 06_config_modification.kql
│ │ └── 07_threat_hunting.kql
│ ├── sigma/
│ │ ├── cve_2025_25257_sqli.yml
│ │ └── cve_2025_25257_process_spawn.yml
│ └── splunk/
│ ├── web_exploitation.spl
│ └── process_anomaly.spl
├── docs/
│ ├── iocs.md
│ ├── mitre_attack.md
│ └── false_positive_analysis.md
├── src/
│ ├── poc.py
│ └── lab/
│ └── nginx.conf
└── sysmon/
└── sysmon_config_snippet.xml
このリポジトリは防御および教育目的のみで提供されます。すべての検知コンテンツは、セキュリティチームが悪用の試みを特定し対応するのに役立つことを目的としています。このリポジトリのコンテンツを、所有していない、または明示的な書面によるテスト許可を得ていないシステムに対して使用しないでください。
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE を参照してください。
| 項目 | 詳細 |
|---|
| CVE | CVE-2025-25257 |
| EDB-ID | 52473 |
| 製品 | Fortinet FortiWeb |
| 影響を受けるバージョン | 7.0.x から 7.6.x |
| 脆弱性の種類 | RCEにつながる事前認証SQLインジェクション |
| 攻撃ベクトル | HTTP API エンドポイント(未認証) |
| 必要な認証 | なし |
| CVSS スコア | 9.8(緊急) |
| 利用可能なパッチ | あり。7.6.1 以降にアップグレード |
| 公開日 | 2026-02-04 |
| 研究者 | Milad Karimi (Ex3ptionaL) |
| ID | カテゴリ | 検知方法 | ソース | カバレッジレベル |
|---|
| D-01 | Web リクエストの悪用 | Authorization ヘッダー内の SQLi パターン | Web/プロキシログ、WAF | 高 |
| D-02 | Web リクエストの悪用 | 有効なトークンなしの /api/fabric/device/status へのリクエスト | Web ログ | 高 |
| D-03 | プロセス実行の異常 | Web サーバープロセスによって生成されたシェルプロセス | EDR / Sysmon | 高 |
| D-04 | プロセス実行の異常 | nginx または httpd の子プロセスとしての sh、bash、python | EDR | 高 |
| D-05 | 不審なファイル作成 | FortiWeb Web ルートに書き込まれた Web シェル | EDR / ファイル整合性 | 中 |
| D-06 | 不審なファイル作成 | Web ディレクトリ内の予期しない .php、.jsp、.py | ファイル監視 | 中 |
| D-07 | 永続化メカニズム | 悪用後の Cron ジョブの変更 | EDR / Auditd | 中 |
| D-08 | 永続化メカニズム | SQLi 後に API 経由で作成された新しい管理者アカウント | API / 認証ログ | 高 |
| D-09 | コンテナアクティビティ | FortiWeb コンテナ名前空間での異常なプロセス | コンテナランタイム | 中 |
| D-10 | 脅威ハンティング | Fabric Connector API 呼び出しレートのベースラインからの乖離 | SIEM / 分析 | 中 |
| D-11 | 脅威ハンティング | /api/fabric/ に対して 200/403 パターンを繰り返す送信元 IP | Web ログ | 高 |
| D-12 | 設定改ざん | Web リクエスト後の FortiWeb 設定ファイルの変更 | ファイル整合性 / EDR | 高 |
| D-13 | 設定改ざん | アプライアンス上の /data/ または /etc/ への予期しない書き込み | Auditd / EDR | 中 |
| ファイル | 説明 |
|---|
01_web_exploitation.kql | Authorization ヘッダー内の SQL インジェクションパターン |
02_process_spawn.kql | Web サーバーからの異常な子プロセス |
03_command_execution.kql | 不審なコマンド実行チェーン |
04_file_creation.kql | Web ディレクトリへの予期しないファイル書き込み |
05_persistence.kql | 永続化メカニズムのインジケータ |
06_config_modification.kql | 設定ファイルの改ざん |
07_threat_hunting.kql | 高度な脅威ハンティングクエリ |