はじめに
自宅サーバーで運用しているハニーポット(AIBOT RADAR)のログに、CVE 番号を自動付与する仕組みを作りました。
具体的には、Suricata の Emerging Threats(ET)Open ルールセットから URI パターンと CVE 参照を抽出し、ハニーポットのアクセスログと突合するスクリプトです。
試してみたところ、SAP NetWeaver 脆弱性(CVE-2025-31324)に関連する偵察アクティビティが 1ヶ月以上継続していることが見えてきたので報告します。
システム構成
ハニーポット側
- AIBOT RADAR: Django + Channels + Daphne で構築した自作ハニーポット
- アクセスログを
monitor_accesslogテーブル(SQLite)に記録 - 記録項目: timestamp, IP, method, path, user_agent, country など
突合ツール(threat-correlator)
ET Open ルール(66,696件)
↓ et_rules_fetch.py でパース
et_signatures テーブル(CVE付き: 2,766件、URIパターン付き: 1,730件)
↓
monitor_accesslog × et_signatures × cves を突合
↓
correlate.py でレポート生成
NVD API と CIRCL CVE API から CVE メタデータ(CVSS スコア、説明文)を取得し、SQLite に格納しています。
突合の仕組み
ET Open ルールには以下のような形式で CVE 参照と URI パターンが記述されています。
alert http any any -> any any (
msg:"ET WEB_SPECIFIC_APPS Possible Atlassian Confluence CVE-2023-22515 ...";
http.uri;
content:"/setup/setupadministrator.action";
reference:cve,2023-22515;
sid:2048469; ...
)
このルールをパースして sid → CVE ID → URI パターン のマッピングテーブルを作り、ハニーポットのアクセスログの path フィールドと照合します。
ET Open ルールは実運用で磨かれたシグネチャのため、自前でキーワードマッチングするよりも精度が高くなります。
注意: 突合スクリプトは URI パターンの部分一致で検出しているため、HTTP メソッドやリクエストボディの条件(Suricata が実際にアラートを上げる際に必要な追加条件)は評価していません。正確には「ET ルールが発火した」ではなく「ET ルール内の URI パターンとアクセスログのパスが一致した」という意味合いです。この点は後述の CVE-2025-31324 の観測でも触れます。
誤検知への対処
運用してわかった課題が 2 点あります。
短すぎるパターンの除外
/public/(7文字)のような汎用的なパターンは、関係のないスキャンにもマッチします。8 文字未満のパターンを除外することで誤検知を削減しました。
パスの汎用性に注意
.env 系のパスは多くの CVE シグネチャに含まれますが、.env 総当たりスキャンとの区別が難しい場合があります。パターンが具体的であるほど信頼度が上がります。
観測結果
直近 30 日間(2026年5月〜6月)のログ 74,628 件を ET Open ルールと突合した結果、16 種の CVE に対応するプローブを検出しました。以下は代表的な 7 件です(hits 数上位・または CVSS が高いもの)。
| CVE | CVSS | hits(30日) | 対象 |
|---|---|---|---|
| CVE-2025-4123 | 7.6 | 269 | Grafana(.envスキャンとの重複あり) |
| CVE-2025-31324 | 10.0 | 10 | SAP NetWeaver Visual Composer |
| CVE-2023-0656 | N/A | 45 | SonicWall SonicOS |
| CVE-2021-34473 | 9.1 | 3 | Microsoft Exchange |
| CVE-2023-35078 | 10.0 | 2 | Ivanti Endpoint Manager |
| CVE-2024-1709 | 10.0 | 2 | ConnectWise ScreenConnect |
| CVE-2024-44000 | 9.8 | 2 | WordPress LiteSpeed Cache |
注: ET ルールとの突合による 30 日ヒット数は 10 件ですが、パス完全一致(
/developmentserver/metadatauploader)で集計すると観測期間全体(約 2ヶ月)で 44 件のアクセスを確認しています。以降の分析は 44 件のデータを使用しています。
CVE-2025-31324 の詳細観測
脆弱性の概要
CVE-2025-31324 は SAP NetWeaver Visual Composer の Metadata Uploader に存在する、認証不要のリモートコード実行(RCE)脆弱性です。
- CVSS: 10.0(Critical)
- 実際の攻撃手法:
POST /developmentserver/metadatauploaderで任意ファイルをアップロード - 2025年4〜5月に世界規模での悪用が報告
ハニーポットへのアクセスログ(抜粋)
2026-06-23 00:42 20.106.xx.xx (US) GET /developmentserver/metadatauploader zgrab/0.x
2026-06-22 16:20 135.237.xx.xx (US) GET /developmentserver/metadatauploader zgrab/0.x
2026-06-21 17:36 20.65.xx.xx (US) GET /developmentserver/metadatauploader zgrab/0.x
2026-06-21 08:27 20.65.xx.xx (US) GET /developmentserver/metadatauploader zgrab/0.x
...(5月22日から毎日継続)
※ IP アドレスは下 2 オクテットをマスクしています。
なお、観測されているのはすべて GET リクエストです。実際の脆弱性悪用は POST によるファイルアップロードが必要なため、今回観測しているのは脆弱なホストの存在確認を目的とした偵察アクティビティと考えられます。
特徴的なパターン
User-Agent: Mozilla/5.0 zgrab/0.x
zgrab2 は ZMap プロジェクトが開発したバナー取得・スキャンツールです。セキュリティ研究者による資産調査から攻撃者のプローブまで幅広く使われており、今回のスキャンの主体(攻撃者・研究者・資産調査会社など)はデータからは特定できません。
送信元 IP レンジ
44 件の大半は Microsoft/Azure 系とみられるアドレス帯(20.x.x.x 40.x.x.x 13.x.x.x 52.x.x.x など)からのアクセスでした。一部 45.148.x.x 74.249.x.x 135.x.x.x 等の異なるレンジも含まれています。毎回異なる IP を使いながら、ほぼ毎日 1〜2 件のペースで継続しており、自動化されたクラウドベースのスキャン活動と考えられます。
信頼度が高い理由
/developmentserver/metadatauploader は SAP NetWeaver Visual Composer 固有のパスであり、一般的な Web アプリで偶然出現する可能性は低いです。ET ルールとのパターン一致ではなく、パスの特異性そのものが高い信頼度を担保しています。
今回マッチした ET Open ルール(sid: 2061924)は以下のとおりです。
alert http any any -> $HOME_NET any (
msg:"ET WEB_SPECIFIC_APPS SAP Netweaver Unauthenticated File Upload Attempt (JSP Webshell) (CVE-2025-31324)";
flow:established,to_server;
http.method; content:"POST";
http.uri; content:"/developmentserver/metadatauploader"; fast_pattern; startswith;
http.request_body; content:"Content-Disposition|3a 20|form-data|3b 20|name|3d 22|file|22 3b 20|filename|3d 22|";
content:".jsp|22|"; within:100;
...(リクエストボディの条件が続く)
reference:cve,2025-31324;
sid:2061924; rev:1; ...
)
このルールは http.method: POST およびリクエストボディへの JSP ウェブシェル埋め込みを検出条件としており、今回観測した GET リクエストはルールの発火条件を満たしていません。あくまで URI パターン /developmentserver/metadatauploader の一致によって相関付けしたものであり、「偵察段階のアクセスを CVE と紐付けた」という位置づけになります。
なお、ET Open には GET/HEAD による偵察を対象とした HUNTING ルール(sid: 2064149)も存在しますが、こちらはクエリ文字列付きのコマンドインジェクション試行が対象であり、今回のシンプルな GET とは異なります。
本記事の相関は ET Open のシグネチャ内の URI パターンに基づくものであり、アクセス元が実際に当該脆弱性を悪用しようとしていたことを証明するものではありません。
タイムライン
2026-05-22 初観測
2026-06-10〜 ほぼ毎日観測
2026-06-23 執筆時点でも継続中(約1ヶ月)
まとめ
- ET Open ルールセットとハニーポットログの突合により、アクセスログに CVE 番号と CVSS スコアを自動付与できた
- 突合は URI パターンの部分一致によるもので、Suricata の発火条件(HTTP メソッド・ボディ等)は評価しない点に注意
- CVE-2025-31324(SAP NetWeaver、CVSS 10.0)に関連する偵察アクティビティが、クラウドベースの自動化スキャンとして 1ヶ月以上継続していることを観測
- 観測されているのは GET による存在確認のみで、実際の攻撃(POST によるファイルアップロード)の成否はハニーポットからは判断できない
- ET ルールのパターン精度には注意が必要で、パターン長や特異性による絞り込みが重要
SAP NetWeaver を運用している組織は、/developmentserver/metadatauploader へのアクセス制限と Visual Composer の無効化を確認することを推奨します。