🔴 严重 | CVE-2026-50160 — Hoppscotch is an API development ecosystem. In sel...
🔴 【深度分析】严重安全漏洞:CVE-2026-50160
CVSS 评分: 严重(10.0)🔴 状态: Received 发布时间: 2026-07-01
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-50160 |
| CVSS 评分 | 10.0 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N |
| CWE 分类 | CWE-915 |
| 发布时间 | 2026-07-01 |
| 最后更新 | 2026-07-02 |
| 状态 | Received |
| 数据来源 | security-advisories@github.com |
好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 原始数据,生成一篇专业、可读性强的漏洞深度分析文章。
⚠️ 严重警告
CVE ID: CVE-2026-50160
CVSS 评分: 10.0 (严重)
CVSS 向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
漏洞危害: 完全服务器失陷
漏洞概述
CVE-2026-50160 是存在于 hoppscotch-backend 自托管部署版本中的一个严重安全隐患。该漏洞允许未经身份验证的远程攻击者,在特定条件下(例如实例首次初始化或尚无用户存在时),通过向 /v1/onboarding/config 端点发送特制的 HTTP POST 请求,覆写服务器用于签名的 JWT_SECRET 和 SESSION_SECRET 等关键密钥。
成功利用此漏洞,攻击者可以完全控制 JSON Web Token (JWT) 的签名密钥,从而伪造任意用户(包括管理员)的合法令牌,最终导致对服务器和数据集的完全接管。此漏洞源于不安全的 批量赋值(Mass Assignment) 问题,CVSS 评分高达 10.0,属于极危级别。
受影响组件与版本
- 受影响组件:
hoppscotch-backend(Hoppscotch 的后端 API 服务) - 受影响版本: 版本
2026.4.1及之前的所有版本 - 不受影响版本: 版本
2026.5.0
漏洞原理分析
该漏洞的技术成因涉及两个关键环节的缺陷叠加:
不安全的批量赋值 (Mass Assignment): 端点
/v1/onboarding/config(其描述为用于初始配置)在处理 POST 请求时,未对输入数据进行严格的属性白名单过滤。尽管其后端使用 NestJS 框架的ValidationPipe(验证管道)来校验请求体,但根据描述,全局的ValidationPipe并未启用whitelist: true配置。- 正常安全实践: 启用
whitelist: true后,验证管道会自动剥离请求体中未在 DTO (Data Transfer Object, 数据传输对象,例如SaveOnboardingConfigRequest) 中定义的任何属性。 - 本次缺陷: 由于未启用该配置,攻击者可以在请求体中包含任意额外属性。服务层在处理时,会将这些“额外”的属性视作合法的
InfraConfig条目,并将其直接写入数据库。
- 正常安全实践: 启用
敏感密钥可被写入: 问题进一步恶化在于,诸如
JWT_SECRET和SESSION_SECRET这类极其敏感的安全配置项,在InfraConfig的定义中是合法的键值(符合InfraConfigEnum值)。同时,在SaveOnboardingConfigRequest的验证逻辑中,并未对这些敏感键进行显式的拒绝或隔离。因此,攻击者可以像操作其他普通配置项一样,轻松地将它们覆写。
攻击向量 (Attack Vector) 分析:
- AV:N (网络攻击): 攻击者无需任何物理或本地网络访问,只需通过网络即可发起攻击。
- AC:L (攻击复杂度低): 端点无需身份验证,攻击者只需构造一个包含恶意属性的简单 JSON 请求体。
- PR:N (无需权限): 攻击前无需任何用户账户或访问权限。
- UI:N (无需用户交互): 攻击过程不依赖于任何用户(如管理员)的点击或操作。
影响评估
- 实际威胁: 极高。该漏洞利用条件苛刻但一旦满足,危害是灾难性的。
- 利用前提: 攻击者必须能够访问一个尚未完成初始配置(onboarding) 或尚无任何用户存在的 Hoppscotch 实例。这在自托管场景中是非常普遍的安全窗口期,例如刚部署完成还未初始化时。
- 后果:
- Authentication Bypass & Privilege Escalation: 攻击者覆写
JWT_SECRET后,可以使用自己的任意公钥生成一个被服务器信任的、具有管理员权限的 JWT。 - Full Server Compromise: 通过伪造的管理员 Token,攻击者可以调用所有管理员级别的 API,进而访问所有工作区、项目、API 密钥、环境变量、以及可能的数据集,实现完全的服务器数据窃取和进一步控制。
- Authentication Bypass & Privilege Escalation: 攻击者覆写
- 影响范围: 影响
Confidentiality(机密性)和Integrity(完整性)至高等级。由于 S:C(范围变更),攻击者可以影响超出原始脆弱组件的其他资源。 - 利用难度: 低。攻击者仅需知道一个未初始化的实例地址,并发送一个简单的 POST 请求。
修复建议
立即升级(首要措施):
- 将所有自托管的 Hoppscotch 后端服务升级到版本
2026.5.0。该版本已经修复了此问题。请参考官方升级指南进行操作。
- 将所有自托管的 Hoppscotch 后端服务升级到版本
临时缓解措施(在无法立即升级时):
- 限制网络访问: 立即将
/v1/onboarding/config端点限制为仅允许受信任的内部网络或 IP 地址访问。使用 Web 应用防火墙 (WAF) 或反向代理(如 Nginx, Caddy)规则,对未初始化的实例进行访问控制。 - 手动锁定配置: 如果实例已经完成初始化并创建了管理员用户,请确认实例不再处于“可初始化”状态。某些情况下,可能存在重复触发的风险。
- 检查日志: 检查服务器日志,看是否有来自未知 IP 的对
/v1/onboarding/config的异常 POST 请求。
- 限制网络访问: 立即将
开发侧加固建议:
- 对于开发团队,这是一个经典的教训:务必在所有全局的
ValidationPipe中启用whitelist: true和forbidNonWhitelisted: true。 - 对于
SaveOnboardingConfigRequest等 DTO,应显式定义只允许设置的属性列表,并对JWT_SECRET、SESSION_SECRET等系统级密钥进行单独的、更严格的处理或禁止写入。建议使用独立的、只读的配置读取方法来加载此类密钥,而非通过 API 写入数据库。
- 对于开发团队,这是一个经典的教训:务必在所有全局的
参考资料
- NVD 官方页面: https://nvd.nist.gov/vuln/detail/CVE-2026-50160
- CWE 分类: CWE-915 - Improperly Controlled Modification of Dynamically-Determined Object Attributes (Mass Assignment)
- Hoppscotch 官方安全公告: (信息来源于
security-advisories@github.com,建议查阅 Hoppscotch 的 GitHub 仓库或官方博客获取最新公告和补丁详情) - GitHub Advisory: (预计已发布,请搜索
GHSA-xxxx-xxxx-xxxx以获取 GitHub 上的安全建议)