\

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

\

\\

近日,专注于开源及云安全监控防范工作的 Snyk 公司披露了一种可能会造成任意文件被覆写的安全漏洞,称为 Zip Slip。其相应的攻击手段是创建一种特制的ZIP压缩文件,在其中引用会对目录进行遍历的文件名。受该风险影响的项目多达数千个,包括 AWS Toolkit for Eclipse、Spring Integration、LinkedIn的Pinot OLAP数据库、 Apache/TwitterHeron、Alibaba JStorm、Jenkins 和 Gradle 等等。各大云服务提供商也纷纷发现了该问题的存在,InfoQ将对此问题的进展持续追踪。

\\

据该公司所分析,这一安全漏洞对于 Java 生态系统来说影响尤其严重,这是因为在 Java 生态中缺少对压缩文件进行高层次处理功能的这样一种集中式的库。目前已知包含这一漏洞的Java类库包括Java java.util.zip、Apache commons-compres、Apache Ant、ZeroTurnaround 的 zt-zip 和 zip4j。Snyk 的 CEO Guy Podjarny 同时也向InfoQ表示,由于该漏洞所影响的压缩文件格式是那些解压缩类库支持的、并且允许在压缩文件中出现相对路径的文件格式,因此 JAR/EAR/WAR 都有可能成为潜在的受害者。

\\

文件遍历攻击的目标是访问保存在 root 目录之外的文件或文件夹,只需在引用文件地址的变量中添加 “点-点-斜杠(../)“或类似的符号,又或者是使用绝对文件路径,攻击者就有可能访问保存在文件系统中的任意文件或目录,例如应用程序的源代码或是配置文件,乃至重要的系统文件。举例来说,如果某个ZIP压缩文件中包含一个路径为\"../../file.exe\"的文件,那么在进行解压时,该文件的实际地址就会脱离目标文件夹之外(注:常见的压缩工具并不支持这种路径,但ZIP格式本身并没有这种限制)。这种情形可能会出现在服务端,也可能出现在客户端。所导致的结果可能是恶意文件被写入磁盘,或是敏感的文件被覆写。如果某个可执行文件或配置文件被某个包含了恶意代码的文件所覆盖,那么就有可能导致恶意代码被执行的问题。

\\

Snyk 的白皮书通过以下这段代码举例说明在 Java 程序中出现的代码漏洞片段:

\\

    Enumeration entries=​​zip​.g​etEntries();\    while(entries​.h​asMoreElements()){\        ZipEntry e ​=​entries.nextElement();\        File f = new File(dir, e.​​getName());\        InputStream input =​​zip​.g​etInputStream(e);\        IOUtils​.c​opy(input, write(f));\    } \

\\

在这段代码中,e.getName() 在与目标目录 dir 进行字符串拼接之前没有经过任何校验,就确定了Java File对象f的最终地址。如果在文件名中包含了向上遍历的目录路径(比如路径以 ../../ 开头),那么在执行 IOUtils.copy 方法时,该文件就会被写入目标目录之外的地址。

\\

一旦你意识到这种写法可能会被恶意利用,那么对该漏洞的防范倒是非常直接了当的。因为ZIP压缩文件没有理由需要将一个文件写入解压目录之外,所以你只需简单地进行检查就可以防止它发生:

\\

    String canonicalDirPath=dir.getCanonicalPath();\    String canonicalDestPath=e.getName().getCanonicalPath();\    if(!canonicalDestPath.startsWith(canonicalDirPath)){\        throw new ArchiverException(\"Entry is outside of the target dir: \" \            + e.getName());\    }\

\\

Snyk 的开发总监 Simon Maple 向 InfoQ 表示,他们已联系过的大多数软件供应商都在几天时间内修复了这个问题。

\\

Java并非唯一一个受此漏洞影响的语言,但潜在的危害却是最大的。JavaScript的好处在于它的类库相对而言更集中化,并且它的两个具有解压缩文件功能的有风险的类库也已经修复了这个问题。.Net 生态中处理解压缩功能的类库也相对比较集中,在它的三个类库中已经有两个得到了修复,这两个发现了漏洞的库是 NuGet DotNetZip 与 SharpCompress。在 Go 生态系统中,mholt archiver 库发现了这一漏洞,但也已经修复。Snyk 的调查团队在 Ruby 和 Python 生态中还没有发现这一bug。

\\

Snyk 在 GitHub 上的相关项目将会由 Snyk 自身与各社区项目维护者时刻更新最新进展,该项目包含了各编程语言生态系统中与这一漏洞相关的最新信息的完整列表。

\\

查看英文原文:Zip Slip Directory Traversal Vulnerability Impacts Multiple Java Projects

Zip Slip目录遍历漏洞已影响多个Java项目相关推荐

  1. 目录遍历漏洞:入侵检测php程序中的目录遍历漏洞,目录浏览(目录遍历)漏洞

    目录浏览(目录遍历)漏洞 来源:信管网 2019年08月26日 [所有评论] 目录浏览漏洞属于目录遍历漏洞的一种 目录浏览(目录遍历)漏洞 目录浏览漏洞是由于网站存在配置缺陷,导致网站目录可以被任意浏 ...

  2. apache目录遍历漏洞利用_Apache漏洞—多后缀名解析、目录遍历和(CVE-2017-15715)

    文章目录 一.Apache httpd 多后缀解析漏洞 漏洞原理 漏洞复现 漏洞修复 二.Apache httpd 换行解析漏洞(CVE-2017-15715) 漏洞原理 漏洞复现 漏洞修复 三.Ap ...

  3. linux遍历目录漏洞,Mutiny 多个目录遍历漏洞(CVE-2013-0136)

    发布日期:2013-05-15 更新日期:2013-06-02 受影响系统: Mutiny Mutiny 5 描述: ----------------------------------------- ...

  4. linux bootstrap强制结束,Cisco UCCX bootstrap服务目录遍历漏洞

    发布日期:2010-06-10 更新日期:2010-06-12 受影响系统: Cisco CRS 7.x Cisco CRS 6.x Cisco CRS 5.x Cisco Unified IP IV ...

  5. 【BP靶场portswigger-服务端3】目录遍历漏洞-6个实验(全)

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

  6. 用友ERP-NC 目录遍历漏洞-实战

    漏洞描述 用友ERP-NC 存在目录遍历漏洞,攻击者可以通过目录遍历获取敏感文件信息. 漏洞影响 用友ERP-NC POC <ip:port>/NCFindWeb?service=IPre ...

  7. niagara在linux系统上的安装,TRIDIUM NiagaraAX目录遍历漏洞

    发布日期:2013-02-14 更新日期:2013-03-01 受影响系统: TriDComm NiagaraAX 3.7 TriDComm NiagaraAX 3.6 TriDComm Niagar ...

  8. python open 函数漏洞_python和django的目录遍历漏洞

    (20210205学习笔记) 攻击者通过请求 http://220.181.185.228/../../../../../../../../../etc/sysconfig/network-scrip ...

  9. python和django的目录遍历漏洞(任意文件读取)

    1. 什么是目录遍历漏洞 "目录遍历漏洞"的英文名称是Directory Traversal 或 Path Traversal.指攻击者通过在URL或参数中构造 ../ ..%2F ...

最新文章

  1. 梦想的地方!地球上最值得去的20个地方【组图】
  2. IE8下面的line-height的bug
  3. android调用系统相机图片不旋转,Android 处理调用系统相机生成的被旋转图片
  4. P5956-[POI2017]Podzielno【数学】
  5. jQuery函数的等价原生函数代码示例
  6. python中pillow库教程_Python图像处理库:Pillow 初级教程
  7. VB 在浏览器中打开指定网址
  8. weak和assign的区别
  9. jdbctemplate mysql blob_JdbcTemplate 操作Oracle Blob
  10. Atitit SpringCloud 使用总结 目录 1.1. 启动一个服务注册中心EurekaServer 1 1.2. 三、创建一个服务提供者 (eureka client) 2 1.3. 创建
  11. 我的世界手机版javaui材质包_我的世界手机版大乱斗卡比模组
  12. 微软笔记本服务器怎么重装系统,微软Surface Book重装win10系统教程
  13. 计算机原理--全加器
  14. oracle分组拼接
  15. 报错Check constraint “book_chk_1“ is violated。难道MySQL中insert 语句只能一条一条插入?
  16. 【Android -- Material Design】CollapsingToolbarLayout 的基本使用
  17. 详解如果用爬虫程序批量采集淘宝好评数据
  18. 2021年广东省安全员B证第三批(项目负责人)新版试题及广东省安全员B证第三批(项目负责人)作业模拟考试
  19. 三种主流RIA技术之争,你该如何选型?
  20. Pic18F25K80 16位模式下的定时器0配置

热门文章

  1. 软件之最大全电子书免费版
  2. 【shell】删除重复文件
  3. [分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦
  4. 反编译插件jadclips
  5. 卡联科技与正元地理合作 打造智慧城市
  6. flex Scroller
  7. 开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
  8. nagios搭建与配置
  9. 别的设计师比你又快又好,是因为你不知道他们在用介个!
  10. HTML5 如何实现拖放'N'拖放