🔴 【深度分析】严重安全漏洞: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

漏洞原理分析

该漏洞的技术成因涉及两个关键环节的缺陷叠加:

  1. 不安全的批量赋值 (Mass Assignment): 端点 /v1/onboarding/config(其描述为用于初始配置)在处理 POST 请求时,未对输入数据进行严格的属性白名单过滤。尽管其后端使用 NestJS 框架的 ValidationPipe(验证管道)来校验请求体,但根据描述,全局的 ValidationPipe 并未启用 whitelist: true 配置。

    • 正常安全实践: 启用 whitelist: true 后,验证管道会自动剥离请求体中未在 DTO (Data Transfer Object, 数据传输对象,例如 SaveOnboardingConfigRequest) 中定义的任何属性。
    • 本次缺陷: 由于未启用该配置,攻击者可以在请求体中包含任意额外属性。服务层在处理时,会将这些“额外”的属性视作合法的 InfraConfig 条目,并将其直接写入数据库。
  2. 敏感密钥可被写入: 问题进一步恶化在于,诸如 JWT_SECRET 和 SESSION_SECRET 这类极其敏感的安全配置项,在 InfraConfig 的定义中是合法的键值(符合 InfraConfigEnum 值)。同时,在 SaveOnboardingConfigRequest 的验证逻辑中,并未对这些敏感键进行显式的拒绝或隔离。因此,攻击者可以像操作其他普通配置项一样,轻松地将它们覆写。

攻击向量 (Attack Vector) 分析:

  • AV:N (网络攻击): 攻击者无需任何物理或本地网络访问,只需通过网络即可发起攻击。
  • AC:L (攻击复杂度低): 端点无需身份验证,攻击者只需构造一个包含恶意属性的简单 JSON 请求体。
  • PR:N (无需权限): 攻击前无需任何用户账户或访问权限。
  • UI:N (无需用户交互): 攻击过程不依赖于任何用户(如管理员)的点击或操作。

影响评估

  • 实际威胁: 极高。该漏洞利用条件苛刻但一旦满足,危害是灾难性的。
    • 利用前提: 攻击者必须能够访问一个尚未完成初始配置(onboarding) 或尚无任何用户存在的 Hoppscotch 实例。这在自托管场景中是非常普遍的安全窗口期,例如刚部署完成还未初始化时。
    • 后果:
      1. Authentication Bypass & Privilege Escalation: 攻击者覆写 JWT_SECRET 后,可以使用自己的任意公钥生成一个被服务器信任的、具有管理员权限的 JWT。
      2. Full Server Compromise: 通过伪造的管理员 Token,攻击者可以调用所有管理员级别的 API,进而访问所有工作区、项目、API 密钥、环境变量、以及可能的数据集,实现完全的服务器数据窃取和进一步控制。
  • 影响范围: 影响 Confidentiality(机密性)和 Integrity(完整性)至高等级。由于 S:C(范围变更),攻击者可以影响超出原始脆弱组件的其他资源。
  • 利用难度: 低。攻击者仅需知道一个未初始化的实例地址,并发送一个简单的 POST 请求。

修复建议

  1. 立即升级(首要措施):

    • 将所有自托管的 Hoppscotch 后端服务升级到版本 2026.5.0。该版本已经修复了此问题。请参考官方升级指南进行操作。
  2. 临时缓解措施(在无法立即升级时):

    • 限制网络访问: 立即将 /v1/onboarding/config 端点限制为仅允许受信任的内部网络或 IP 地址访问。使用 Web 应用防火墙 (WAF) 或反向代理(如 Nginx, Caddy)规则,对未初始化的实例进行访问控制。
    • 手动锁定配置: 如果实例已经完成初始化并创建了管理员用户,请确认实例不再处于“可初始化”状态。某些情况下,可能存在重复触发的风险。
    • 检查日志: 检查服务器日志,看是否有来自未知 IP 的对 /v1/onboarding/config 的异常 POST 请求。
  3. 开发侧加固建议:

    • 对于开发团队,这是一个经典的教训:务必在所有全局的 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 上的安全建议)