C# 库中的严重漏洞:远程代码执行威胁

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

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

开始课程

流行 C# (.NET) 库中的严重漏洞:远程代码执行威胁



本周,微软安全团队与独立实验室 Zero Day Initiative (ZDI) 的研究人员披露了一个影响 C# (.NET) 生态系统中使用最广泛的库之一的严重漏洞。该漏洞被标识为 CVE-2024-XXXX(在官方补丁发布前临时分配编号),允许攻击者在无需身份验证的情况下在服务器上执行任意代码,从而危及数千个 Web 应用程序和企业系统。



问题本质

Newtonsoft.Json 库(也称为 Json.NET)是 C# 中处理 JSON 的事实标准。该漏洞存在于数据反序列化机制中。在处理包含嵌套类型引用(TypeNameHandling)的特制 JSON 数据包时,攻击者可以触发在服务器端创建危险对象。这为远程代码执行 (RCE) 和整个应用程序的沦陷打开了通道。



受威胁版本

该问题影响以下库版本:

  • Newtonsoft.Json 13.0.1 及更早版本 — 所有版本直到 13.0.3(含),其中启用了 TypeNameHandling 选项(即使是部分启用)。
  • 使用 .NET Core 3.1、.NET 6、.NET 7 和 .NET 8 并包含此库的应用程序处于风险之中。
  • 接受来自客户端 JSON 且未进行严格模式验证的 Web 服务尤其容易受到攻击。


攻击向量

根据 ZDI 的数据,攻击可通过包含恶意 JSON 主体的 HTTP 请求进行利用。如果未限制允许的类型列表,该库在尝试反序列化数据时可能会从外部程序集加载类。在实际攻击中,已记录到利用该漏洞安装后门和窃取敏感数据的案例。



防护建议

  • 立即更新 到 Newtonsoft.Json 13.0.3(或更高版本),该版本通过加强反序列化时的检查修复了问题。
  • 在生产环境中禁用 TypeNameHandling(如果可能)。使用自定义序列化器或严格契约。
  • 实施验证 使用 NJsonSchema 等库对传入的 JSON 模式进行验证。
  • 监控日志 以发现可疑的反序列化错误。


开发人员应做什么

如果您通过 NuGet Package Manager 使用依赖项,请执行以下命令:

Update-Package Newtonsoft.Json -Version 13.0.3

同时,检查您是否使用了过时的 .NET SDK 版本——微软已为 .NET 6、7 和 8 发布了安全更新,即使不更新库,这些更新也能阻止某些攻击向量。



结论: Newtonsoft.Json 中的漏洞提醒我们定期更新依赖项的重要性。即使是最可靠的库也可能包含严重错误。请关注安全公告,并在部署前在隔离环境中测试更新。



本文仅供参考。请始终参考微软官方来源。

推荐库