
PJSIP cve-2026-25994 バッファオーバーフロー POC
CVE-2026-25994 は、pjsip ≤ 2.16 の ICE(Interactive Connectivity Establishment)実装、具体的には PJNATH コンポーネントに影響を与えるスタックベースのバッファオーバーフロー脆弱性です。
この脆弱性は以下の関数に存在します:
pj_ice_sess_create_check_list()
場所:
pjnath/src/pjnath/ice_session.c
この問題は、ICE ユーザー名を構築する際の安全でない文字列処理によって引き起こされます:
char buf[128]; // Fixed-size stack buffer
username.ptr = buf;
pj_strcpy(&username, rem_ufrag); // No bounds checking
pj_strcat2(&username, ":");
pj_strcat(&username, &ice->rx_ufrag);
rem_ufrag は SDP 属性から直接取得されます:
a=ice-ufrag:
128 バイトのスタックバッファにコピーする前に長さの検証が行われません
これにより、攻撃者はスタックをオーバーフローさせ、以下の可能性があります:
リターンアドレス
スタックフレーム
カナリア / アライメントデータ
長い ice-ufrag を含む悪意のある SIP INVITE がオーバーフローを引き起こします
信頼性の高い悪用は、ペイロードが約130バイト以上の場合に発生します
実際には、約500バイト以上(例:520)で一貫したクラッシュ動作が発生します
✅ 影響あり: pjsip ≤ 2.16
❌ 修正済み: pjsip ≥ 2.17
修正では、適切な境界チェックが導入されています:
if (rem_ufrag->slen >= MAX_USERNAME_LEN ||
(rem_ufrag->slen + ice->rx_ufrag.slen + 1) >= 512)
{
return PJ_ETOOBIG;
}
セグメンテーション違反によるサービス拒否(DoS) 以下に応じてリモートコード実行(RCE)の可能性:
スタック保護(ASLR、NX、カナリア) メモリレイアウト エクスプロイトの洗練度
影響を受けたマシン: 1,200,000 台
Shodan link : https://www.shodan.io/search?query=pjmedia
提供される PoC は、過大な ice-ufrag を含む細工された SIP INVITE を送信してオーバーフローを引き起こします。
完全同期(asyncio なし) コマンドラインで設定可能 自動リトライ 現実的な SDP ペイロード タイムアウトによるクラッシュ検出
ICE を有効にして pjsua を起動します:
pjsua-x86_64-unknown-linux-gnu --use-ice --local-port=5060 --log-level=5 --no-tcp --auto-answer=200
python3 pjsip.py -i <target_ip> -p 5060 -a 3
Arguments
Option Description Default
-i, --ip Target IP address 127.0.0.1
-p, --port SIP port 5060
-a, --attempts Number of attempts 3
Expected Behavior
Vulnerable Target
No response from server
pjsip ≥ 2.17 にアップグレードする
SDP 属性に入力検証を適用する
スタック保護を使用する: スタックカナリア ASLR NX(非実行可能スタック)
この概念実証(PoC)は、教育およびセキュリティ研究目的のみで提供されます。
所有していない、またはテストする明示的な許可を得ていないシステムに対して、このコードを使用しないでください。
V.Nos