Voltar ao catalogoHIGH-01
DeviceTokenController sem autenticacao (mass assignment + enumeracao)
HighAchado ConfirmadoSegurancaRodada 1
Evidencia
`aspnet-core/src/cargo_fleet.HttpApi/DeviceToken/DeviceTokenController.cs` — ausencia de `[Authorize]` no controller e nos metodos. Input e inserido diretamente via `_deviceTokenRepository.InsertAsync(input)`.
Impacto Tecnico
Usuarios nao autenticados podem registrar tokens FCM arbitrarios, potencialmente recebendo notificacoes destinadas a outros usuarios. GetListAsync permite enumeracao.
Impacto de Negocio
Vazamento de notificacoes confidenciais (valores de fretes, dados de rotas) para dispositivos nao autorizados.
Recomendacao
Adicionar [Authorize] ao controller. Vincular DeviceToken ao CurrentUser.Id no backend, nao aceitar UserId do cliente. Substituir entidade por DTO.
Arquivos Afetados
aspnet-core/src/cargo_fleet.HttpApi/DeviceToken/DeviceTokenController.cs
Acoes Relacionadas
{
"id": "HIGH-01",
"title": "DeviceTokenController sem autenticacao (mass assignment + enumeracao)",
"severity": "High",
"type": "achado confirmado",
"category": "security",
"description": "O `DeviceTokenController` nao possui `[Authorize]` no controller nem nos metodos. O metodo `CreateAsync` recebe a entidade `DeviceToken` diretamente do corpo da requisicao, permitindo mass assignment.",
"evidence": "`aspnet-core/src/cargo_fleet.HttpApi/DeviceToken/DeviceTokenController.cs` — ausencia de `[Authorize]` no controller e nos metodos. Input e inserido diretamente via `_deviceTokenRepository.InsertAsync(input)`.",
"technicalImpact": "Usuarios nao autenticados podem registrar tokens FCM arbitrarios, potencialmente recebendo notificacoes destinadas a outros usuarios. GetListAsync permite enumeracao.",
"businessImpact": "Vazamento de notificacoes confidenciais (valores de fretes, dados de rotas) para dispositivos nao autorizados.",
"recommendation": "Adicionar `[Authorize]` ao controller. Vincular `DeviceToken` ao `CurrentUser.Id` no backend, nao aceitar `UserId` do cliente. Substituir entidade por DTO.",
"files": [
"aspnet-core/src/cargo_fleet.HttpApi/DeviceToken/DeviceTokenController.cs"
],
"pass": 1,
"relatedActions": [
"ACT-2.1"
],
"relatedFindings": [
"SEC2-02"
]
}
Descricao
O
DeviceTokenControllernao possui[Authorize]no controller nem nos metodos. O metodoCreateAsyncrecebe a entidadeDeviceTokendiretamente do corpo da requisicao, permitindo mass assignment.