14-16 Mar 2026
Voltar ao catalogo

DeviceTokenController sem [Authorize] e mass assignment sobre entidade de dominio

SEC2-02
CriticalAchado ConfirmadoSegurancaRodada 2

Descricao

POST /api/app/device-token sem [Authorize] e aceita entidade DeviceToken como input direto, incluindo TenantId e UserId fornecidos pelo cliente sem validacao.

Evidencia
`DeviceTokenController.cs` linhas 27-35: `public async virtual Task<DeviceToken?> CreateAsync(DeviceToken input)` sem `[Authorize]`. Input inserido diretamente via `_deviceTokenRepository.InsertAsync(input)`.
Impacto Tecnico

Usuarios nao autenticados podem registrar tokens FCM para qualquer usuario/tenant. Notificacoes de aceite interceptadas.

Impacto de Negocio

Interceptacao de notificacoes push de operacoes criticas por concorrentes.

Recomendacao

Adicionar [Authorize]. Substituir por DTO com campo Token. Fixar TenantId/UserId a partir de CurrentTenant/CurrentUser.

Arquivos Afetados

aspnet-core/src/cargo_fleet.HttpApi/DeviceToken/DeviceTokenController.cs

Acoes Relacionadas

{
  "id": "SEC2-02",
  "title": "DeviceTokenController sem [Authorize] e mass assignment sobre entidade de dominio",
  "severity": "Critical",
  "type": "achado confirmado",
  "category": "security",
  "description": "`POST /api/app/device-token` sem `[Authorize]` e aceita entidade `DeviceToken` como input direto, incluindo `TenantId` e `UserId` fornecidos pelo cliente sem validacao.",
  "evidence": "`DeviceTokenController.cs` linhas 27-35: `public async virtual Task<DeviceToken?> CreateAsync(DeviceToken input)` sem `[Authorize]`. Input inserido diretamente via `_deviceTokenRepository.InsertAsync(input)`.",
  "technicalImpact": "Usuarios nao autenticados podem registrar tokens FCM para qualquer usuario/tenant. Notificacoes de aceite interceptadas.",
  "businessImpact": "Interceptacao de notificacoes push de operacoes criticas por concorrentes.",
  "recommendation": "Adicionar `[Authorize]`. Substituir por DTO com campo `Token`. Fixar `TenantId`/`UserId` a partir de `CurrentTenant`/`CurrentUser`.",
  "files": [
    "aspnet-core/src/cargo_fleet.HttpApi/DeviceToken/DeviceTokenController.cs"
  ],
  "pass": 2,
  "relatedActions": [
    "ACT-5.1.3"
  ],
  "relatedFindings": [
    "HIGH-01"
  ]
}