14-16 Mar 2026
Voltar ao catalogo

TimeZoneInfo usa Windows timezone ID em container Linux

P-16
MediumAchado ConfirmadoArquiteturaRodada 4

Descricao

Usa TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time") que e um ID Windows. Em containers Linux, o sistema usa IDs IANA.

Evidencia
`aspnet-core/src/cargo_fleet.Application/Utilities/TimeZoneConverter.cs` — `TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time")`.
Impacto Tecnico

O metodo GetBrasiliaTimeNow() pode lancar TimeZoneNotFoundException em ambiente Linux. Todas as datas podem estar em UTC ou causar crash loop.

Impacto de Negocio

Datas de ofertas, registros e notificacoes podem estar com fuso horario incorreto em producao.

Recomendacao

Usar o pacote NuGet TimeZoneConverter ou IANA ID "America/Sao_Paulo" diretamente.

Arquivos Afetados

aspnet-core/src/cargo_fleet.Application/Utilities/TimeZoneConverter.cs

Acoes Relacionadas

{
  "id": "P-16",
  "title": "TimeZoneInfo usa Windows timezone ID em container Linux",
  "severity": "Medium",
  "type": "achado confirmado",
  "category": "architecture",
  "description": "Usa `TimeZoneInfo.FindSystemTimeZoneById(\"E. South America Standard Time\")` que e um ID Windows. Em containers Linux, o sistema usa IDs IANA.",
  "evidence": "`aspnet-core/src/cargo_fleet.Application/Utilities/TimeZoneConverter.cs` — `TimeZoneInfo.FindSystemTimeZoneById(\"E. South America Standard Time\")`.",
  "technicalImpact": "O metodo `GetBrasiliaTimeNow()` pode lancar `TimeZoneNotFoundException` em ambiente Linux. Todas as datas podem estar em UTC ou causar crash loop.",
  "businessImpact": "Datas de ofertas, registros e notificacoes podem estar com fuso horario incorreto em producao.",
  "recommendation": "Usar o pacote NuGet `TimeZoneConverter` ou IANA ID `\"America/Sao_Paulo\"` diretamente.",
  "files": [
    "aspnet-core/src/cargo_fleet.Application/Utilities/TimeZoneConverter.cs"
  ],
  "pass": 4,
  "relatedActions": [
    "ACT-7.3.6"
  ]
}