本文讲的是 DNS查询竟然可以黑掉Systemd,Systemd是Linux社区最钟爱的基石,但可能会被恶意DNS服务器劫持或弄崩溃。补丁已出,受影响用户应尽快安装。
无论是PC、服务器、平板,还是什么其他小玩意儿,在装了脆弱Systemd的计算设备上查询主机名称,都足够邪恶DNS服务触发攻击的了:该软件的解析组件易遭欺骗,为查询响应分配过小内存,导致收到大回复时引发数据溢出,让攻击者可覆盖内存,弄崩进程或远程执行代码——这意味着远程的恶意DNS服务可在你的计算机上运行恶意软件。
克里斯·科尔森,Ubuntu厂商Canonical雇员,发现了该“systemd-resolved”(网络名称解析服务)越界写漏洞。他解释道:“恶意DNS服务器可响应特别构造的TCP攻击载荷,诱骗systemd-resolved分配过小缓存,再写入任意数据溢出该缓存。”
该编程缺陷是2015年6月被意外引入Systemd版本223的,漏洞编号CVE-2017-9445,且直到今年3月发布的233版本中都还存在。
也就是说,Ubuntu 17.04 和 16.10 版也存在该漏洞。Canonical公司已推出了针对 17.04 和 16.10 版的2个补丁。
该漏洞技术上存在于 Debian Stretch (Debian 9)、Buster (10) 和 Sid (不稳定版)中,但Debian默认禁用systemd-resolved。所以,Debian用户要么悠闲自行打上补丁,要么坐等下一个版本发布。
其他各具特色的Linux发行版也使用Systemd:请检查是否有任何可用更新,做好用普通包管理器安装自家systemd-resolved补丁的准备。Linux用户都知道怎么做。
同时,Alpine Linux 的包管理器apk中也有几个安全漏洞:CVE-2017-9669和CVE-2017-9671。这几个漏洞可通过包文件处理中的缓冲区溢出,让攻击者获得在 Alpine Linux 实例(包括Docker容器中运行的实例)上远程执行代码的权限。
利用该漏洞的唯一先决条件,只是找出进程的内存布局而已。地址空间布局随机化(ASLR)或其他强化安全措施可阻止攻击者成功利用漏洞,但绕过安全措施也不是不可能。