来自 Snyk 的安全团队今年 4 月份发现了一个广泛存在的文件覆盖漏洞,允许攻击者在系统上编写任意文件,并通过远程命令执行。它会在从档案文件中提取文件时触发目录遍历攻击,并影响包括 tar、jar、war、cpio、apk、rar 和 7z 在内的大量压缩文件。
该漏洞被称为 Zip Slip , 已影响来自 Google、HP、Amazon、Apache、Pivotal、Linkedin、Twitter 等企业的数千个项目。同时,安全团队在包括 Java、JavaScript、Ruby、.NET 和 Go 在内的多种生态系统中都发现了该漏洞,Zip Slip 在 Java 中尤为普遍存在,因为没有中央仓库提供高级别归档文件处理,导致存在大量易受攻击的代码和库。
安全团队在发现漏洞后,私下向所有易受攻击的库和项目维护人员透露了 Zip Slip 漏洞的存在。直到 6 月 5 日,他们正式在 GitHub 上公开了该漏洞的具体细节。目前不少软件已通过更新版本或发布补丁修复了该漏洞。
据悉,Zip Slip 是目录遍历的一种形式,可通过从存档中提取文件来利用。目录遍历漏洞的前提是攻击者可以访问文件系统中应该驻留的目标文件夹之外的部分文件系统。然后,攻击者可以覆盖可执行文件并远程调用它们,或者是等待系统或用户调用它们,从而实现在受害者机器上的远程命令执行。该漏洞还可能通过覆盖配置文件或其他敏感资源,从而在客户端(用户)机器和服务器上被利用。
安全团队还在 GitHub 上给出了两个恶意文件示例:
$ 7z l zip-slip.zip Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2018-04-15 22:04:29 ..... 19 19 good.txt 2018-04-15 22:04:42 ..... 20 20 ../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../tmp/evil.txt ------------------- ----- ------------ ------------ ------------------------ 2018-04-15 22:04:42 39 39 2 files
$ 7z l zip-slip-win.zip Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2018-04-15 22:04:29 ..... 19 19 good.txt 2018-04-15 22:04:42 ..... 20 20 ../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../Temp/evil.txt ------------------- ----- ------------ ------------ ------------------------ 2018-04-15 22:04:42 39 39 2 files