
ZammadにおけるCVE-2026-102489の概念実証エクスプロイト: WebSocketセッションリークを認証済みセッションハイジャックおよび未認証のリモートコード実行へと連鎖させる。
このリポジトリには、Zammad における未認証リモートコード実行脆弱性 CVE-2026-102489 の概念実証が含まれています。このエクスプロイトは、WebSocket の情報漏洩の欠陥を連鎖させて、認証済みセッションの乗っ取りと、zammad OS ユーザーとしての任意コマンド実行に至ります。
Sessions::Event::Base は有効な Ruby 定数ですが、run() メソッドを持っていません。WebSocket エンドポイント経由で {"event":"base"} を送信すると NoMethodError が発生し、そのメッセージにはレシーバの完全な inspect が含まれます。これには @clients が含まれており、接続している全ユーザーのリクエストコンテキストのライブマップであり、彼らの Cookie ヘッダーも含まれます。
この PoC はこの漏洩を利用して、以下のことを行います:
@clients 開示を通じて、接続中のユーザーから有効な _zammad_session Cookie を収集します。根本原因、エクスプロイト、および侵害の指標を網羅した技術分析は、Horizon3.ai の攻撃リサーチブログで公開されています:
https://horizon3.ai/attack-research/disclosures/cve-2026-102489-zammad-session-leak-rce/
% python3 CVE-2026-102489.py -h
usage: CVE-2026-102489.py [-h] -u URL [-c COMMAND] [--out-file OUT_FILE]
options:
-h, --help show this help message and exit
-u URL, --url URL The base URL of the target
-c COMMAND, --command COMMAND
Command to execute on the target
--out-file OUT_FILE Output file path on the target (default:
/tmp/zammad_rce.txt)
デフォルトの id コマンドで実行:
python3 CVE-2026-102489.py -u http://zammad.example.com
任意のコマンドを実行:
python3 CVE-2026-102489.py -u http://zammad.example.com -c 'id'
注記: この情報漏洩を利用するには、エクスプロイト実行時に少なくとも 1 人の認証済みユーザーが WebSocket エンドポイントに接続している必要があります。
「このソフトウェアは、純粋に学術研究および効果的な防御技術の開発を目的として作成されたものであり、明示的に許可された場合を除き、システムを攻撃するために使用されることを意図していません。」プロジェクトメンテナーは、誤用に対する一切の責任を負いません。責任を持って使用してください。