14-16 Mar 2026
Voltar ao catalogo

DeviceTokenController sem autenticacao (mass assignment + enumeracao)

HIGH-01
HighAchado ConfirmadoSegurancaRodada 1

Descricao

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.

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