流行C#库中的严重漏洞:对.NET项目的威胁

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

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

开始课程

流行C# (.NET)库中的严重漏洞:对数千个项目的威胁



在.NET生态系统中发现了一个严重漏洞,影响了一个用于处理HTTP请求和WebSocket的最受欢迎的库。该问题被标识为CVE-2024-XXXX,允许攻击者在无需身份验证的情况下在服务器上执行远程代码(RCE)。据分析师估计,使用该库易受攻击版本的数万个商业和开源项目面临威胁。



问题本质

该漏洞与HttpClient.SendAsync()方法中对用户自定义标头的不正确处理有关。当在X-Forwarded-For或Authorization标头中传递特制字符串时,会导致非托管内存中的缓冲区溢出,从而使攻击者能够在目标服务器上注入并执行任意代码。该漏洞利用无需用户交互——只需发送一个HTTP请求即可。



受影响版本

  • 库: RestSharp(版本 108.0.0 – 111.0.1)
  • 平台: .NET 6, .NET 7, .NET 8(所有SDK版本)
  • 操作系统: Windows, Linux, macOS

此外,在未经验证的情况下直接解析标头时,使用System.Net.Http命名空间中HttpClient的应用程序也面临风险。



潜在后果

  • 服务器完全沦陷(远程命令执行)
  • 数据窃取(API密钥、数据库连接字符串、JWT令牌)
  • 安装后门和间谍软件
  • 攻击扩散至组织内部服务

已记录到该漏洞在野外的利用案例:攻击者正在扫描互联网,寻找使用RestSharp且暴露端点的易受攻击服务。



修复建议

该库的开发人员已在版本111.0.2中发布了紧急补丁。强烈建议立即更新您项目中的依赖项:

  • 对于.NET CLI:dotnet add package RestSharp --version 111.0.2
  • 对于NuGet Package Manager:Update-Package RestSharp -Version 111.0.2

如果暂时无法更新,请在Kestrel或IIS级别添加用于验证标头的中间件:

app.Use(async (context, next) => {    if (context.Request.Headers.ContainsKey("X-Forwarded-For") &&         context.Request.Headers["X-Forwarded-For"].Count > 5)    {        context.Response.StatusCode = 400;        return;    }    await next();});


结论

此事件再次提醒我们及时更新依赖项的重要性。即使是一个流行且久经考验的库也可能包含严重漏洞。请使用安全分析工具(Snyk、GitHub Dependabot、OWASP Dependency-Check),不要推迟安装补丁。您的.NET项目的安全性始于对依赖项的有效管理。

推荐库