Zip Slip漏洞:任意文件覆盖与远程代码执行

什么是Zip Slip漏洞?

Zip Slip是一种任意文件覆盖漏洞,通过在压缩文件中包含特制的路径(如../../../evil.sh),攻击者可以在解压缩时将文件写入到系统的任意目录中,从而可能导致远程代码执行(RCE)或其他安全问题134

漏洞成因

该漏洞主要是由于代码中没有对压缩包中的文件名进行合法性校验,导致存在路径遍历风险。攻击者可以通过构造恶意压缩文件来覆盖系统中的敏感文件12

漏洞利用示例

1. 创建恶意压缩文件

攻击者可以创建一个包含恶意文件的压缩包,文件名中包含路径遍历字符,如../../../evil.sh

2. 解压缩漏洞

在解压缩时,如果代码没有正确校验文件名,恶意文件将被写入到系统的任意目录中。

3. 远程代码执行

如果恶意文件是可执行的,并且被系统或用户调用,攻击者可以实现远程代码执行。

代码示例

Java示例(易受攻击代码)

java 复制代码
Enumeration<ZipEntry> entries = zip.getEntries();
while (entries.hasMoreElements()) {
    ZipEntry e = entries.nextElement();
    File f = new File(destinationDir, e.getName()); // 没有校验文件名
    InputStream input = zip.getInputStream(e);
    IOUtils.copy(input, new FileOutputStream(f));
}

Python示例(创建恶意压缩文件)

python 复制代码
import zipfile

# 创建一个压缩文件
with zipfile.ZipFile("poc.zip", "a", zipfile.ZIP_DEFLATED) as zipFile:
    # 添加一个文件,文件名包含路径遍历
    zipFile.write("evil.sh", "../../../evil.sh")

修复方案

  1. 校验文件名 :在解压缩前,检查文件名是否包含路径遍历字符,如../
  2. 使用安全库:使用已知安全的解压缩库,并确保它们正确处理路径遍历问题。
  3. 限制写入目录:仅允许写入到指定的安全目录中。

案例分析

  • ollama/ollama漏洞:攻击者通过Zip Slip创建恶意文件,实现远程代码执行。修复后,相关代码已更新以防止此类攻击原文

总结

Zip Slip漏洞是由于解压缩时未正确校验文件名导致的路径遍历问题,可能导致任意文件覆盖和远程代码执行。通过合理的代码审计和安全措施,可以有效防止此类攻击。

相关推荐
叶落方知秋8 小时前
大模型学习笔记:模型怎么练出来、数据怎么存起来
架构
叶落方知秋9 小时前
大模型学习笔记:AI 学什么数据,决定了它能有多聪明
架构
QQ_21696290969 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
roman_日积跬步-终至千里9 小时前
【数据工程(3)-数据架构】好的数据架构不是技术蓝图,而是管理变化的能力
大数据·架构
郑州光合科技余经理10 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
IT_陈寒10 小时前
Vue的嵌套组件竟然吃掉了我的事件?
前端·人工智能·后端
大辉狼_音频架构11 小时前
进阶:从源码编译 SOF 固件与 topology
后端
大辉狼_音频架构11 小时前
上板:让 SOF 在 FRDM-i.MX8MP 上跑起来
后端
大辉狼_音频架构12 小时前
FRDM-IMX8MP UUU 烧录 eMMC 指南
后端
运行时异常12 小时前
【WMS 仓储系统集成 AI Agent 实战】第 3 讲:Spring Security 6 + JWT——addFilterBefore 一词之差,全站 401
java·后端