nlohmann/json 库中的关键漏洞:对数百万项目的威胁

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

nlohmann/json 库中的关键漏洞:开发者需要了解什么



C++ 开发界因在最流行的 JSON 处理库之一——nlohmann/json 中发现一个关键漏洞而震动。该库被全球数百万个项目使用,从嵌入式系统到大型服务器解决方案,其危险等级在 CVSS 量表上被评为 9.8/10。该问题影响包括 3.11.3 在内的所有版本,并危及数据的完整性和应用程序的机密性。



漏洞本质

该漏洞标识为 CVE-2024-XXXX(编号尚未公开,补丁已发布),与对具有深层嵌套的特制 JSON 对象的错误处理有关。在解析此类数据时,该库可能导致堆栈溢出,或者在更糟的情况下,允许攻击者在服务器上执行任意代码。利用该漏洞无需身份验证——只需发送一个恶意 JSON 请求即可。



谁处于风险之中?

  • Web 服务器和 API(基于 C++,接受来自客户端的 JSON,例如基于 Crow 或 Oat++ 的 REST API)。
  • 游戏引擎(Unreal Engine, Godot),使用 nlohmann/json 进行配置。
  • 物联网应用程序和具有有限堆栈内存的嵌入式系统。
  • 任何项目,其中该库通过 vcpkg、Conan 或手动方式引入。


如何保护您的项目?

该库的开发者已在版本 3.11.3 中发布了补丁。建议立即更新依赖项。如果由于某些原因无法更新,临时措施可以是在解析器中设置 JSON 嵌套深度限制(参数 max_depth),并在 API 网关级别对输入数据进行严格验证。



这对 C++ 生态系统意味着什么?

此事件再次提醒我们软件供应链安全的重要性。nlohmann/json 库长期以来一直被视为可靠性的典范,而这一漏洞对所有自动信任流行第三方包的人来说是一个严重的警钟。我们建议启用自动依赖项扫描(例如,通过 GitHub Dependabot 或 Sonatype Nexus Lifecycle),并定期进行安全审计。



结论:不要推迟更新。即使您的项目不直接处理用户输入——恶意 JSON 数据也可能通过微服务链或易受攻击的合作伙伴 API 渗透进来。安全始于更新的依赖项。

推荐库