在 Systemd (linux 操作系统流行的 init 系统和服务管理器) 中发现了一个关键漏洞, 这使得远程攻击者有可能触发缓冲区溢出, 从而通过 dns 响应在目标计算机上执行恶意代码。
Systemd是什么
systemd 是一种系统初始化程序。和 sysVinit 以及 upstart 一样,systemd 会成为系统开机时启动的第一个进程(至少 PID 是 1),由它掌管计算机接下来要做的事情,例如读取 fstab 挂载磁盘和按照 runlevel 的设定启动各种服务。其安全的重要性不言而喻。
Systemd远程代码执行漏洞 CVE-2017-9445
该漏洞编号 CVE-2017-9445 ,实际上驻留在 " systemd-resolved " 的 "dns_packet_new" 函数中, 它是一个 dns 响应处理程序组件, 它为本地应用程序提供网络名称解析。
根据星期二发布的一个公告, 当系统试图在攻击者控制的 dns 服务上查找主机名时, 经过精心构造的恶意 dns 响应,可以远程崩溃 " systemd-resolved " 程序。
最终, 大量 dns 响应会溢出目标计算机的缓冲区, 从而使攻击者改写其内存,引发远程代码执行。这意味着攻击者可以通过其恶意的 dns 服务,在目标系统或服务器上,远程执行任何恶意软件。
ubuntu 开发者Chris Coulson在开发规范中这样描述,
“直到 233版本的 systemd , certain sizes passed to dns_packet_new in systemd-resolved can cause it to allocate a buffer that’s too small,”
"恶意 dns 服务器可以利用此漏洞,通过精心构造的 tcp Payload, 诱骗systemd-resolved 分配的缓冲区太小, 随后将任意数据写入它的末尾。
该漏洞涉及ubuntu、debian及其它使用Systemd的linux系统
自 Systemd 223 版本于 2015年6月 推出以来, 这一漏洞一直存在, 包括今年3月推出的 Systemd 233 版本。当然, 前提条件是 systemd-resolved 在您的系统上运行, 因为它很容易受到攻击。
该 bug 存在于 ubuntu 版本17.04 和版本16.10 中;debian 版本 Stretch (又名 debian 9), Buster (又名10) 和 sid (又名Unstable);以及其他各种使用 Systemd 的 linux 发行版。
已推出安全修补程序来解决此问题, 因此强烈建议用户和系统管理员安装它们, 并尽快更新他们的 linux 发行。