Zip 文件覆盖漏洞曝光,Java、.NET、Go 生态集体中枪

简介:

来自 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 中尤为普遍存在,因为没有中央仓库提供高级别归档文件处理,导致存在大量易受攻击的代码和库。

145606_VINo_2896879.png

安全团队在发现漏洞后,私下向所有易受攻击的库和项目维护人员透露了 Zip Slip 漏洞的存在。直到 6 月 5 日,他们正式在 GitHub 上公开了该漏洞的具体细节。目前不少软件已通过更新版本或发布补丁修复了该漏洞。

145949_ETYs_2896879.png

据悉,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

本文来自云栖社区合作伙伴“开源中国”

本文作者:王练

原文链接

相关文章
|
17天前
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
|
17天前
|
Java C# 开发者
【干货】Java开发者快速上手.NET指南
【干货】Java开发者快速上手.NET指南
|
1月前
|
存储 Java 文件存储
如何用 Java 压缩 ZIP 文件?
【2月更文挑战第21天】
34 1
|
2月前
|
Go API
一文搞懂Go读写Excel文件
一文搞懂Go读写Excel文件
52 0
|
5月前
|
Go 区块链
go 编译 自定义 图标 ico文件
go 编译 自定义 图标 ico文件
40 0
|
11天前
|
SQL 安全 Java
Java安全编程:防范网络攻击与漏洞
【4月更文挑战第15天】本文强调了Java安全编程的重要性,包括提高系统安全性、降低维护成本和提升用户体验。针对网络攻击和漏洞,提出了防范措施:使用PreparedStatement防SQL注入,过滤和转义用户输入抵御XSS攻击,添加令牌对抗CSRF,限制文件上传类型和大小以防止恶意文件,避免原生序列化并确保数据完整性。及时更新和修复漏洞是关键。程序员应遵循安全编程规范,保障系统安全。
|
23天前
|
存储 测试技术 Go
掌握Go语言:深入探究Go语言中的命令源码文件与参数处理技巧(3)
掌握Go语言:深入探究Go语言中的命令源码文件与参数处理技巧(3)
|
5月前
|
机器学习/深度学习 安全 Java
【网安AIGC专题10.19】论文6(顶会ISSTA 2023):提出新Java漏洞自动修复数据集:数据集 VJBench+大语言模型、APR技术+代码转换方法+LLM和DL-APR模型的挑战与机会
【网安AIGC专题10.19】论文6(顶会ISSTA 2023):提出新Java漏洞自动修复数据集:数据集 VJBench+大语言模型、APR技术+代码转换方法+LLM和DL-APR模型的挑战与机会
290 0
|
2月前
|
Shell Go
go 编辑yaml 文件
在Go语言中编辑YAML文件通常涉及以下步骤: 1. 读取YAML文件内容到字符串。 2. 使用YAML解析库(如`gopkg.in/yaml.v2`)将字符串解析为Go数据结构(如`map[string]interface{}`或自定义的结构体)。 3. 修改数据结构中的值以更新YAML内容。 4. 将修改后的数据结构编码回YAML格式的字符串。 5. 将字符串写回到YAML文件。 以下是一个简单的例子,展示了如何使用`gopkg.in/yaml.v2`库来编辑YAML文件: 首先,确保你已经安装了`gopkg.in/yaml.v2`包: ```bash go get gopkg.i
|
2月前
|
SQL 安全 Java
Java Web安全性:常见的漏洞及防护措施
Java Web安全性:常见的漏洞及防护措施
146 0