Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-32945 — PJSIP DNS圧縮ポインタのヒープ領域外読み取り(リモートDoS) | Kitploit
ツール/GitHubGitHub/johanneslks/cve-2026-32945
動的分析 (サンドボックス)脆弱性分析エクスプロイトファジングバイナリ解析
GitHubjohanneslks/cve-2026-32945

CVE-2026-32945

PJSIP DNS圧縮ポインタのヒープ領域外読み取り(リモートDoS)

リポジトリを見る
4ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-32945

PJSIP DNS圧縮ポインタのヒープ領域外読み取り(リモートDoS)

説明

pjlib-util/src/pjlib-util/dns.c 内の get_name_len() と get_name() は、pj_memcpy(&offset, p, 2) を使用して2バイトのDNS圧縮ポインタを読み取りますが、両バイトがパケットバッファ内にあることを確認していません。0xC0 バイト(圧縮ポインタマーカー)がDNS応答の最後のバイトである場合、memcpy はヒープ割り当て境界を1バイト超えて読み取ります。

単一の20バイトの細工されたDNS応答は、領域外読み取りを引き起こし、ネットワーク制御されたDNSサーバーを介してドメインを解決するあらゆるPJSIPアプリケーション(AsteriskやFreeSWITCHを含む)をクラッシュさせます。

ASanは get_name_len() 内で heap-buffer-overflow READ of size 2, 0 bytes after 20-byte region(サイズ2のヒープバッファオーバーフロー読み取り、20バイト領域の0バイト後)を確認しています。

これは、pjproject の dns.c における2022年以降3件目となるDNSパーサーのCVEです(CVE-2022-24793 と CVE-2023-27585 に続く)。CVE-2022-24793 の修正ではパーサー全体に長さチェックが追加されましたが、圧縮ポインタのパスが見落とされていました。

影響を受けるバージョン: pjproject <= 2.16。pjproject 2.17(コミット 5311aee)で修正済み。

使用方法

root@kitploit:~
# スタンドアロンASanハーネス(pjprojectのインストールは不要):
./run.sh

# または手動でビルドして実行:
gcc -fsanitize=address,undefined -g -O0 harness.c -o harness
./harness

# ネットワークPoC -- 不正なDNSサーバー:
python3 poc.py --port 5353
# その後、PJSIPアプリケーションを不正なサーバーに向ける:
#   pjsua --nameserver 127.0.0.1:5353 sip:[email protected]

# Docker(ASan付きでpjproject 2.16をソースからビルド):
docker compose build
docker compose run harness

要件

  • スタンドアロンハーネス用: AddressSanitizer対応の gcc
  • ネットワークPoC用: Python 3(標準ライブラリのみ、外部依存関係なし)
  • Docker用: Docker + Docker Compose

ファイル

参照

  • https://github.com/pjsip/pjproject/security/advisories/GHSA-jr2p-p2w4-rr9q
  • https://github.com/pjsip/pjproject/commit/5311aee398ae9d623829a6bad7b679a193c9e199

法的通知

このプロジェクトはGNU GPLv3の下で公開されています。

これは防御的なセキュリティ研究、教育、および許可されたテストのために提供されています。所有者から明示的な許可を得ずに、このコードをシステムやサービスに対して使用しないでください。

許可のない使用は、適用される法律に違反する可能性があります。著者は第三者システムのテストを許可しておらず、誤用について責任を負いません。

保証および責任条件については、LICENSEファイルを参照してください。

ツールをダウンロード
ファイル説明
harness.cスタンドアロンASanハーネス -- 正確なpjproject型で脆弱な get_name_len() を再実装
harness_pjlib.c実際の pj_dns_parse_packet() を呼び出す代替ハーネス(Docker用)
poc.py不正なDNSサーバー -- 任意のクエリに対して細工された20バイトのパケットで応答
run.shASanハーネスをビルドして実行
DockerfileASan付きでpjproject 2.16をソースからビルド
docker-compose.ymlpjlibハーネス用のDockerセットアップ
proof_output.txt実機検証による完全なASan出力