Olá, pessoal!

Viram que a Microsoft criou uma nova Política de Acesso Condicional em seus Tenants?

A política foi criada para bloquear Device Code Flow, que neste post vocês vão entender melhor do que se trata. Mas fique tranquilo, a política foi criada como Report-only, porém, após 45 dias da criação da política em seu tenant, ela será alterada para On.
Fique atento, analise os logs relecionadas a esta política para decidir como você irá mantê-la em seu ambiente.

A segurança de identidades na nuvem tornou-se um pilar essencial para qualquer organização moderna. Um dos vetores de ataque recentemente explorado por atores maliciosos é o Device Code Flow, uma alternativa de autenticação amplamente utilizada por dispositivos sem navegador, como CLI e aplicativos IoT.

Um exemplo recente e notório é a campanha conduzida pelo grupo STORM-2372, que abusou do Device Code Flow para comprometer contas corporativas, mesmo com autenticação multifator (MFA) habilitada.

🧩 O que é o Device Code Flow?

O Device Code Flow é um fluxo de autenticação suportado pelo protocolo OAuth 2.0, projetado para dispositivos sem interface gráfica/interativa ou sem navegador (ex: Terminal, Smart TVs, CLI).

Neste fluxo, o usuário é instruído a visitar um endereço (ex: https://microsoft.com/devicelogin) em um navegador e inserir um código fornecido pelo dispositivo. Isso permite a autenticação em segundo plano, sem que o dispositivo em si manipule diretamente as credenciais. Acredito que muitos aqui, já utilizaram para autenticar no Microsoft Azure, Netflix, Apple TV+ e assim por diante.

Exemplo de uso:

1
az login --use-device-code

az login

Esse comando exibe um código e solicita que o usuário vá até um navegador para concluir a autenticação. Após a conclusão, o terminal (ou aplicativo) recebe o token de acesso e pode operar com os privilégios do usuário autenticado.

⚠️ Como o STORM-2372 Explorou o Device Code Flow

O grupo de ameaça STORM-2372 (também conhecido como Midnight Blizzard, Nobelium, ou APT29) tem abusado do fluxo de código do dispositivo como parte de sua cadeia de ataque para evitar bloqueios comuns impostos por MFA e outros mecanismos de proteção.

A técnica funciona da seguinte forma:

  1. O ator malicioso inicia o Device Code Flow de forma programada, por exemplo usando az login --use-device-code ou outras APIs;
  2. Exibe um código único de autenticação;
  3. O atacante envia esse código para a vítima, muitas vezes com engenharia social sofisticada, induzindo-a concluir o login (acreditando que se trata de um processo legítimo);
  4. Ao concluir a autenticação com o código, o atacante recebe um token válido, “bypassando MFA”, pois a vítima já fez a autenticação com sucesso;

Por que esse ataque é eficaz?

  • MFA não é suficiente: Se a vítima insere o código e autentica com MFA, o token ainda vai para o atacante;
  • Difícil de detectar: O fluxo parece legítimo, e pode usar aplicações registradas que não levantam suspeitas;
  • Token de longa duração: Em alguns casos, o token tem validade prolongada, permitindo persistência no ambiente;

🛡️ Como se Proteger: Bloqueando o Device Code Flow

A Microsoft permite que administradores bloqueiem ou restrinjam o uso do Device Code Flow por meio de políticas de acesso condicional gerenciadas no Entra ID (Azure AD).

📌 O que são Políticas Gerenciadas?

Políticas gerenciadas são um novo recurso que permite aplicar configurações de segurança automatizadas e baseadas em recomendações da Microsoft, como o bloqueio do Device Code Flow, proteção contra autenticação herdada (legacy), entre outras. São políticas predefinidas que permitem aos administradores simplificar a gestão da segurança, oferecendo opções de configuração e modificações básicas. Estas políticas visam garantir um nível básico de segurança para todos os tenants, mesmo aqueles que não têm licenciamento Microsoft Entra ID P1 ou P2.

Não conhecia? Da uma olhada: Microsoft-managed Conditional Access policies

Veja que a Microsoft criou esta política como Report-only no seu tenant, para que você possa analisar os logs e ter este tipo de proteção para sua organização. É importante você monitorar se este tipo de autenticação é utilizado em seu ambiente. Caso não, habilite a politica. Caso sim, também habilite a política (rs), e trate a aplicação/recurso que precisa utilizar este tipo de autenticação, como exceção.

DeviceCodeFlow-PolicyManaged DeviceCodeFlow-PolicyManaged

✅ Etapas para Bloquear o Device Code Flow:

Você também pode criar a Conditional Access Policy manualmente:

  1. Acesse o portal do Microsoft Entra: https://entra.microsoft.com
  2. Vá para Protection > Conditional Access > Policies;
  3. Crie uma nova política, defina os usuários, em Target selecione todos os recursos (All cloud apps);
  4. Em Conditions selecione Authentication flows;
  5. Marque a opção Device code flow e Save;
  6. Habilite a política (On);

DeviceCodeFlow-Policy

Essa política bloqueará tentativas de autenticação usando esse fluxo, exceto para aplicativos e usuários explicitamente permitidos.

Mais informações em: Block authentication flows with Conditional Access policy

📌 Considerações importantes:

  • O bloqueio é recomendado para organizações que não utilizam dispositivos ou aplicativos que dependem do Device Code Flow.
  • Caso existam aplicações legítimas que dependem deste fluxo (ex: Azure CLI, Power BI Gateway), é possível criar exceções específicas usando uma política personalizada de acesso condicional.
  • Verifique os logs de autenticação para avaliar o uso atual desse fluxo antes de aplicar o bloqueio de forma ampla.

🔍 Como Identificar o Uso do Device Code Flow

Você pode usar o Sign-in Logs do Microsoft Entra ID para encontrar eventos onde o Authentication Protocol é definido como Device Code.

Exemplo via Portal:

  1. Vá no Microsoft Entra > Identity > Monitoring & health > Sign-in logs;
  2. Aplique o filtro por Authentication Protocol: Device Code;
  3. Se houver autenticações deste tipo, serão apresentadas nos resultados da busca;

DeviceCodeFlow-Policy DeviceCodeFlow-Details DeviceCodeFlow-Repor-only

Exemplo via Log Analytics (KQL):

1
2
3
4
SigninLogs
| where TimeGenerated > ago(7d)
| where AuthenticationProtocol == "deviceCode"
| summarize by AppDisplayName, UserId

🔗 Referências

✅ Conclusão

Embora o Device Code Flow seja útil em cenários legítimos, ele também representa um vetor de ataque explorável, especialmente contra usuários menos atentos. Ataques como o do STORM-2372 evidenciam a necessidade de rever continuamente as superfícies de autenticação permitidas no seu ambiente.

A recomendação da Microsoft é clara: bloqueie esse fluxo a menos que absolutamente necessário e, mesmo nesse caso, aplique exceções bem controladas e monitoradas.

Proteger sua identidade na nuvem vai além de MFA. Monitoramento contínuo, bloqueio de fluxos legados e políticas de acesso adaptáveis são essenciais para manter sua organização segura.

É isso meus amigos, até a próxima! 🤘