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

安全团队在发现漏洞后,私下向所有易受攻击的库和项目维护人员透露了 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

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

本文作者:王练

原文链接

相关文章
|
Linux Go iOS开发
Go语言100个实战案例-进阶与部署篇:使用Go打包生成可执行文件
本文详解Go语言打包与跨平台编译技巧,涵盖`go build`命令、多平台构建、二进制优化及资源嵌入(embed),助你将项目编译为无依赖的独立可执行文件,轻松实现高效分发与部署。
1816 162
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
393 2
|
数据采集 JSON 自然语言处理
Go语言实战案例-统计文件中每个字母出现频率
《Go语言100个实战案例》中的“文件与IO操作篇 - 案例19”教你如何统计文本文件中每个英文字母的出现频率。通过实战练习,掌握文件读取、字符处理、map统计等基础技能,适合Go语言初学者提升编程能力。
|
数据采集 Go
Go语言实战案例-批量重命名文件
《Go语言100个实战案例》中的“文件与IO操作篇 - 案例17:批量重命名文件”,适合初学者学习使用 Go 操作文件系统,实现文件批量重命名功能,包括添加前缀、后缀或编号等。
|
JSON 缓存 Go
Go语言实战案例-向文件写入内容
本案例讲解如何使用 Go 语言向文件写入内容,涵盖覆盖写入与追加写入两种模式,适用于日志记录、报告生成等场景。涉及 `os.WriteFile`、`os.OpenFile` 等核心函数,并演示如何处理文件权限与编码问题。
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
1004 3
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
XML JSON Go
Go语言中的文件与IO:JSON、CSV、XML处理
本文介绍了 Go 语言中对 JSON、CSV 和 XML 三种常见数据格式的处理方法。通过标准库 `encoding/json`、`encoding/csv` 和 `encoding/xml`,可以实现结构体与数据格式之间的序列化与反序列化。JSON 适合 Web API 和前后端通信,因其清晰易读;CSV 适用于表格数据和轻量级交换;XML 则支持复杂嵌套结构,常用于配置文件和 SOAP 协议。文中提供代码示例,涵盖基本使用、嵌套结构处理及实战建议,帮助开发者高效操作这些格式。
|
Unix Go
Go语言中的文件与IO:文件读写
本文介绍了 Go 语言中文件操作的基础方法,涵盖打开与关闭文件、读取和写入文件内容、追加写入以及复制文件等功能。通过 `os`、`bufio` 和 `io` 等标准库包,提供了高效且灵活的实现方式,如使用 `os.ReadFile` 读取整个文件、`bufio.Scanner` 逐行读取、`os.Create` 创建文件以及 `io.Copy` 复制文件内容。同时强调了错误处理的重要性,例如使用 `defer` 确保文件关闭,并推荐注意文件权限设置(如 UNIX 系统中的 `0644`)。最后以表格形式总结了常用操作及其推荐方法,便于快速查阅和应用。
|
Go 数据处理
Go语言中的文件与IO:bufio 和 scanner
Go 标准库中的 `bufio` 包高效读写功能,适用于文件和数据处理。`bufio.Reader` 支持按行或分隔符读取,`bufio.Writer` 提供高性能写入并需调用 `Flush()` 确保数据写入。`bufio.Scanner` 是处理文本文件(如日志、配置)的利器,可按行、单词等分割内容。本文详解其用法,并给出实践建议,如统计字符数、模拟 `tail -f` 和词频分析等。
|
数据采集 自然语言处理 JavaScript
Playwright多语言生态:跨Python/Java/.NET的统一采集方案
随着数据采集需求的增加,传统爬虫工具如Selenium、Jsoup等因语言割裂、JS渲染困难及代理兼容性差等问题,难以满足现代网站抓取需求。微软推出的Playwright框架,凭借多语言支持(Python/Java/.NET/Node.js)、统一API接口和优异的JS兼容性,解决了跨语言协作、动态页面解析和身份伪装等痛点。其性能优于Selenium与Puppeteer,在学术数据库(如Scopus)抓取中表现出色。行业应用广泛,涵盖高校科研、大型数据公司及AI初创团队,助力构建高效稳定的爬虫系统。
1056 2
Playwright多语言生态:跨Python/Java/.NET的统一采集方案