流行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项目的安全性始于对依赖项的有效管理。