安全加

beta

推荐

安全头条

安全知识

登录注册
首页>安全头条>

下载 | Zip Slip漏洞可导致RCE 多个语言库受影响 JAVA影响最大 含POC

zip slip漏洞 远程代码执行漏洞 java漏洞

Zip Slip漏洞 “任意文件覆盖”和“目录遍历”问题的结合,可能导致攻击者可以将文件解压缩到正常解压缩路径之外并覆盖敏感文件,如关键OS库或服务器配置文件。虽然使用几种编程语言编写的库已知会受到影响,例如JavaScript,Python,Ruby,.NET,Go和Groovy,但这个问题主要影响Java生态系统。然而,开发人员还没有意识到这个问题。

安全研究人员今天透露了一个关于影响处理归档文件的开源编码库的重要漏洞的详细信息。

由Synk的研究人员发现,“Zip Slip”漏洞是在编码器、插件和库实现解压归档文件的过程中的一个问题。 许多打包格式,包括tar,jar,war,cpio,apk,rar和7z都会受到影响,这意味着这更像是逻辑问题,而不是特定的编码错误。

研究人员在2018年6月5日公开披露之前发现并负责任地披露了该团队,并影响了包括HP,亚马逊,Apache,Pivotal等在内的数千个项目 (CVE和全部列表) 。当然,这种类型的漏洞早已存在,但最近它已经在更多的项目和库中表现出来。

漏洞导致文件在错误的位置解压缩

Zip Slip是目录遍历的一种形式,可以通过从打包文件中提取文件来利用。 目录遍历漏洞的前提是攻击者可以访问文件系统中应该驻留的目标文件夹之外的部分文件系统。 然后,攻击者可以覆盖可执行文件并远程调用它们,或者等待系统或用户调用它们,从而实现 受害者机器上的 远程命令执行 此漏洞还可能通过覆盖配置文件或其他敏感资源而造成损害,并且可能会在客户端(用户)机器和服务器上受到攻击。

也就是说,Zip Slip是“任意文件覆盖”和“目录遍历”问题的结合,可能导致攻击者可以将文件解压缩到正常解压缩路径之外并覆盖敏感文件,如关键OS库或服务器配置文件。

“利用这个漏洞所需的两个部分是一个恶意的归档和提取代码,不会执行验证检查,”

研究人员表示,他们在4月份发现了这个漏洞,他们一直在与这些攻击易受攻击的几个开源库的维护者合作。

漏洞POC

利用此漏洞需要的两个部分是不执行验证检查的恶意归档和提取代码。 让我们依次查看这两部分。 首先,zip文件的内容在提取时需要有一个或多个脱离目标目录的文件。 在下面的例子中,我们可以看到一个zip文件的内容。 它有两个文件,一个 good.sh 文件将被解压缩到目标目录中,另一个 evil.sh 文件正在尝试遍历目录树以打开根目录,然后将文件添加到tmp目录中。 当您尝试 cd .. 在根目录中时,仍然会发现自己位于根目录中,因此恶意路径可能包含多个级别的目录 ../ 在尝试遍历敏感文件之前,有更好的机会到达根目录。

5 Tue Jun 5 11:04:29 BST 2018 good.sh

20 Tue Jun 5 11:04:42 BST 2018 ../../../../../../../../tmp/evil.sh

这个zip文件的内容必须手工制作。 尽管zip规范允许,档案创建工具通常不允许用户使用这些路径添加文件。 但是,使用特定的工具,使用这些路径创建文件很容易。

您需要利用此漏洞的第二件事是使用您自己的代码或库来提取归档文件。 解压缩代码忽略存档中文件路径的验证时存在此漏洞。 下面是一个易受攻击的代码片段的示例(以Java显示的示例)。

1 Enumeration<ZipEntry> entries = zip.getEntries();

2 while (entries.hasMoreElements()) {

3       ZipEntry e = entries.nextElement();

4       File f = new File(destinationDir, e.getName());

5       InputStream input = zip.getInputStream(e);

6       IOUtils.copy(input, write(f));

7 }

多个开源库受到影响 其中Java影响最广泛

虽然使用几种编程语言编写的库已知会受到影响,例如JavaScript,Python,Ruby,.NET,Go和Groovy,但这个问题主要影响Java生态系统,因为没有推荐用于处理归档文件的官方库。

相反,开发人员为此目的创建并使用了各种库,其中大多数都容易受到Zip Slip的影响。 此外,这个问题非常广泛,甚至一些在StackOverflow上共享的代码被发现容易受到Zip Slip的影响,这意味着许多用Java编写的桌面,移动或Web应用程序可能容易受到Zip Slip的影响,而开发人员甚至不知道。

研究人员还发布了概念验证Zip Slip存档,以便开发人员可以测试他们的应用程序是否存在漏洞。演示视频也在下面提供。

受影响的库和项目

受影响的库

Vendor Product Language Confirmed vulnerable Fixed Version CVE Fixed
npm library unzipper JavaScript YES 0.8.13 CVE-2018-1002203 17/4/2018
npm library adm-zip JavaScript YES 0.4.9 CVE-2018-1002204 23/4/2018
Java library codehaus/plexus-archiver Java YES 3.6.0 CVE-2018-1002200 6/5/2018
Java library zeroturnaround/zt-zip Java YES 1.13 CVE-2018-1002201 26/4/2018
Java library zip4j Java YES CVE-2018-1002202
.NET library DotNetZip.Semverd .NET YES 1.11.0 CVE-2018-1002205 7/5/2018
.NET library SharpCompress .NET YES 0.21.0 CVE-2018-1002206 2/5/2018
.NET library mholt/archiver Go YES e4ef56d4 CVE-2018-1002207 17/4/2018
Oracle java.util.zip Java * No High Level API Documentation Fix N/A
Apache commons-compress Java * No High Level API Documentation Fix N/A 23/4/2018
.NET library SharpZipLib .NET * No High Level API N/A
Ruby gem zip-ruby Ruby * No High Level API N/A
Ruby gem rubyzip Ruby * No High Level API N/A
Ruby gem zipruby Ruby * No High Level API N/A
Go library archive Go * No High Level API N/A

受影响的项目

Vendor Product Fixed date Fixed version CVE Vulnerable Code
Apache Storm Storm 2/5/2018 1.0.7 CVE-2018-8008 #1 #2 #3 #4
Apache Hadoop Hadoop 23/5/2018 CVE-2018-8009
Apache Hive Hive CVE-2018-8009
Apache Maven
Apache Ant 21/4/2018 1.9.12
Pivotal spring-integration-zip 3/5/2018 1.0.1 CVE-2018-1261
Pivotal spring-integration-zip 10/5/2018 1.0.2 CVE-2018-1263
HP Fortify Cloud Scan Jenkins Plugin 27/4/2018 #1
OWASP DependencyCheck 7/5/2018
Amazon AWS Toolkit for Eclipse 31/5/2018
SonarCube SonarCube 4/5/2018 #1
Cinchapi Concourse 30/5/2018 #1
Orient Technologies OrientDB 31/5/2018 #1 #2
FenixEdu Academic 30/5/2018 #1
Lucee Lucee 5/6/2018 5.2.7, 5.2.8.47 #1

更详细受影响的项目和库

https://github.com/snyk/zip-slip-vulnerability

zip slip技术分析白皮书

文章附件

文章无附件

*文章为作者独立观点,不代表安全加立场

本文由:安全加发布,版权归属于原作者。 如果转载,请注明出处及本文链接:

如果此文章侵权,请留言,我们进行删除。

作者

您可能对以下关键词感兴趣哟,请用鼠标滑过或点击关键词 :

相关文章

无相关文章
无相关文章

参与讨论

0/300 发表评论
当前无评论

快速注册

请填写正确的邮箱格式,不能为空
请填写验证码
密码应为数字、字母、英文标点符号,长度为6-14位
两次密码不统一
立即注册

已有账号?

登录忘记密码

快速登录

手机号或邮箱不存在
密码错误请重新输入
立即登录

还没有账号?

注册忘记密码
© 2018 安全加 社区. All Rights Reserved.