Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-32945 — PJSIP DNS 压缩指针堆越界读取(远程拒绝服务) | Kitploit
工具/GitHubGitHub/johanneslks/cve-2026-32945
动态分析 (沙盒)漏洞分析漏洞利用模糊测试二进制分析
GitHubjohanneslks/cve-2026-32945

CVE-2026-32945

PJSIP DNS 压缩指针堆越界读取(远程拒绝服务)

查看仓库
95个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-32945

PJSIP DNS 压缩指针堆越界读取(远程拒绝服务)

描述

pjlib-util/src/pjlib-util/dns.c 中的 get_name_len() 和 get_name() 通过 pj_memcpy(&offset, p, 2) 读取一个 2 字节的 DNS 压缩指针,但未检查这两个字节是否都位于数据包缓冲区之内。当 0xC0 字节(压缩指针标记)恰好是 DNS 响应的最后一个字节时,memcpy 会读取超出堆分配边界的一个字节。

单个 20 字节的精心构造的 DNS 响应即可触发越界读取,并使任何通过网络控制的 DNS 服务器解析域名的 PJSIP 应用程序(包括 Asterisk 和 FreeSWITCH)崩溃。

ASan 确认:heap-buffer-overflow READ of size 2, 0 bytes after 20-byte region,发生在 get_name_len() 中。

这是自 2022 年以来 pjproject 的 dns.c 中第三个 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.sh构建并运行 ASan 测试工具
Dockerfile从源码构建带 ASan 的 pjproject 2.16
docker-compose.yml用于 pjlib 测试工具的 Docker 配置
proof_output.txt实际验证的完整 ASan 输出