Voltar ao catalogoSEC2-03
Dynamic LINQ injection via parametro sorting sem whitelist
HighAchado ConfirmadoSegurancaRodada 2
Evidencia
`EfCoreOfertaRepository.cs` linha 181: `query = query.OrderBy(sorting)`. Mesmo padrao em `EfCoreRotaRepository.cs:155`, `EfCoreGalileuCredentialRepository.cs:47,87`, `NotificationAppService.cs:29`, `EfCoreOfertaRecordRepository.cs:79,128`.
Impacto Tecnico
Dynamic LINQ permite invocar metodos .NET via expressao. Ordenacao por colunas nao intencionadas ou DoS via queries caras.
Impacto de Negocio
Vazamento de dados internos e potencial DoS.
Recomendacao
Implementar whitelist de campos permitidos para sorting. Rejeitar com BadRequest valores fora da lista.
Arquivos Afetados
aspnet-core/src/cargo_fleet.EntityFrameworkCore/Ofertas/EfCoreOfertaRepository.csaspnet-core/src/cargo_fleet.EntityFrameworkCore/Rotas/EfCoreRotaRepository.csaspnet-core/src/cargo_fleet.EntityFrameworkCore/GalileuCredentials/EfCoreGalileuCredentialRepository.cs
Acoes Relacionadas
{
"id": "SEC2-03",
"title": "Dynamic LINQ injection via parametro sorting sem whitelist",
"severity": "High",
"type": "achado confirmado",
"category": "security",
"description": "Parametro `sorting` passado diretamente ao `OrderBy()` do `System.Linq.Dynamic.Core` sem validacao ou whitelist em 6 repositorios/servicos.",
"evidence": "`EfCoreOfertaRepository.cs` linha 181: `query = query.OrderBy(sorting)`. Mesmo padrao em `EfCoreRotaRepository.cs:155`, `EfCoreGalileuCredentialRepository.cs:47,87`, `NotificationAppService.cs:29`, `EfCoreOfertaRecordRepository.cs:79,128`.",
"technicalImpact": "Dynamic LINQ permite invocar metodos .NET via expressao. Ordenacao por colunas nao intencionadas ou DoS via queries caras.",
"businessImpact": "Vazamento de dados internos e potencial DoS.",
"recommendation": "Implementar whitelist de campos permitidos para sorting. Rejeitar com `BadRequest` valores fora da lista.",
"files": [
"aspnet-core/src/cargo_fleet.EntityFrameworkCore/Ofertas/EfCoreOfertaRepository.cs",
"aspnet-core/src/cargo_fleet.EntityFrameworkCore/Rotas/EfCoreRotaRepository.cs",
"aspnet-core/src/cargo_fleet.EntityFrameworkCore/GalileuCredentials/EfCoreGalileuCredentialRepository.cs"
],
"pass": 2,
"relatedActions": [
"ACT-5.2.1"
]
}
Descricao
Parametro
sortingpassado diretamente aoOrderBy()doSystem.Linq.Dynamic.Coresem validacao ou whitelist em 6 repositorios/servicos.