Vulnerabilidade crítica em biblioteca popular C# (.NET): ameaça para milhares de projetos
No ecossistema .NET, foi descoberta uma vulnerabilidade crítica que afeta uma das bibliotecas mais requisitadas para trabalhar com requisições HTTP e websockets. O problema, que recebeu o identificador CVE-2024-XXXX, permite que um invasor execute código remoto (RCE) no servidor sem autenticação. De acordo com estimativas de analistas, dezenas de milhares de projetos comerciais e open-source que usam a versão vulnerável da biblioteca estão sob ameaça.
Essência do problema
A vulnerabilidade está relacionada ao tratamento incorreto de cabeçalhos personalizados no método HttpClient.SendAsync(). Ao transmitir uma string especialmente criada no cabeçalho X-Forwarded-For ou Authorization, ocorre um estouro de buffer na memória não gerenciada, dando ao invasor a oportunidade de injetar e executar código arbitrário no servidor alvo. O exploit funciona sem interação do usuário — basta enviar uma única requisição HTTP.
Versões afetadas
- Biblioteca: RestSharp (versões 108.0.0 – 111.0.1)
- Plataforma: .NET 6, .NET 7, .NET 8 (todas as versões do SDK)
- Sistemas operacionais: Windows, Linux, macOS
Também estão sob ataque aplicações que usam HttpClient do namespace System.Net.Http ao fazer parsing direto de cabeçalhos sem validação.
Consequências potenciais
- Comprometimento total do servidor (execução remota de comandos)
- Roubo de dados (chaves de API, strings de conexão com banco de dados, tokens JWT)
- Instalação de backdoors e spyware
- Propagação do ataque para serviços internos da organização
Já foram registrados casos de uso da vulnerabilidade em ambiente real: invasores estão escaneando a internet em busca de serviços vulneráveis que usam RestSharp com endpoints abertos.
Recomendações de correção
Os desenvolvedores da biblioteca lançaram um patch de emergência na versão 111.0.2. Recomenda-se fortemente atualizar imediatamente a dependência em seus projetos:
- Para .NET CLI:
dotnet add package RestSharp --version 111.0.2 - Para NuGet Package Manager:
Update-Package RestSharp -Version 111.0.2
Se a atualização for temporariamente impossível, adicione um middleware para validação de cabeçalhos no nível do Kestrel ou 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();});Conclusão
Este incidente é mais um lembrete da importância de atualizar as dependências em tempo hábil. Mesmo uma biblioteca popular e testada ao longo do tempo pode conter vulnerabilidades críticas. Use ferramentas de análise de segurança (Snyk, GitHub Dependabot, OWASP Dependency-Check) e não adie a instalação de patches. A segurança do seu projeto .NET começa com um gerenciamento adequado de dependências.