14-16 Mar 2026
Voltar ao catalogo

Dynamic LINQ injection via parametro sorting sem whitelist

SEC2-03
HighAchado ConfirmadoSegurancaRodada 2

Descricao

Parametro sorting passado diretamente ao OrderBy() do System.Linq.Dynamic.Core sem validacao ou whitelist em 6 repositorios/servicos.

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"
  ]
}