FreeBSD 附带的 ping 实用程序中存在可远程利用的 root 漏洞

在 FreeBSD 中,基本发行版中包含的 ping 实用程序中发现了一个漏洞 (CVE-2022-23093)。 当对攻击者控制的外部主机执行 ping 操作时,该问题可能会导致以 root 权限远程执行代码。 FreeBSD 更新 13.1-RELEASE-p5、12.4-RC2-p2 和 12.3-RELEASE-p10 中提供了修复。 目前尚不清楚其他 BSD 系统是否受到已识别漏洞的影响(目前还没有 NetBSD、DragonFlyBSD 和 OpenBSD 中的漏洞报告)。

该漏洞是由为响应验证请求而接收的 ICMP 消息的解析代码中的缓冲区溢出引起的。 在 ping 中发送和接收 ICMP 消息的代码使用原始套接字并以提升的权限执行(该实用程序带有 setuid root 标志)。 通过重建从原始套接字接收的数据包的 IP 和 ICMP 标头,在 ping 端处理响应。 选定的 IP 和 ICMP 标头由 pr_pack() 复制到缓冲区中,而不考虑数据包中 IP 标头之后可能存在的附加扩展标头。

此类标头从数据包中提取并包含在标头块中,但在计算缓冲区大小时不予考虑。 如果主机响应发送的 ICMP 请求,返回带有附加标头的数据包,则其内容将被写入堆栈上缓冲区边界之外的区域。 因此,攻击者可以覆盖堆栈上最多 40 个字节的数据,从而可能允许其代码执行。 错误发生时,进程处于系统调用隔离(能力模式)状态,这使得利用漏洞后很难访问系统的其余部分,从而减轻了问题的严重性。

来源: opennet.ru

添加评论