Incidente do CrowdStrike: Uma rápida análise do Pré-Apocalipse

Escrito por  Rafael Felix

“Essa noite, eu tive um sonho de sonhador
Maluco que sou, eu sonhei
Com o dia em que a Terra parou
Com o dia em que a Terra parou”

O Dia Em Que a Terra Parou – Raul Seixas

Hoje, 19/07/2024, o mundo se tornou um caos. Hospitais pararam, bancos se tornaram inoperantes, faróis nas ruas ficaram intermitentes, voos foram cancelados, aviões tiveram que pousar. Tudo por uma atualização errada de um dos sistemas de segurança mais usados do mundo: o CrowdStrike.
O primeiro registro que se tem foi por volta de 01:57hs da madrugada. Ao amanhecer, sistemas no mundo todo estavam completamente inoperantes. Diante disso, nossa equipe buscou analisar o que outros profissionais estão escrevendo sobre a falha e buscamos nós mesmos verificar o que de fato aconteceu. Aqui alguns pontos que identificamos:

O Que Verificamos

  • Uma das possibilidades que foram comentadas, seria alguma falha no “CSAgent.sys”. Nós fizemos diferenciação de binário do CSAgent.sys que acompanhou a atualização (versão 7.15.18513.0 – SHA256: 070242d1703d89b10ce3cc53e6e295cf07dbc2c1e4b3481156fb2530251444c8) e verificamos que apesar de haver mudança de hash, não houve nenhuma mudança de código entre o driver novo e o driver antigo utilizando BinDiff. Portanto a falha não foi ocasionada por isso.

BinDiff indicando similaridade entre as duas versões do CSAgent
  • Algumas pessoas no X (Twitter) disseram [1, 2] que a falha teria acontecido porque o “channel update file” “C-00000291-*.sys” estava todo zerado e por isso o driver não conseguiu parsear o arquivo. Verificamos que esta informação é falsa. O arquivo “C-00000291-00000000-00000032.sys:ad492bc8b884f9c9a5ce0c96087e722a2732cdb31612e092cdbf4a9555b44362 não estava todo zerado, muito pelo contrário, os arquivos de canal do CrowdStrike são arquivos binários proprietários utilizados para aplicar updates on-demand, com um formato proprietário, todos começam com os magic bytes “0xAA, 0xAA, 0xAA, 0xAA, 0x01, 0x00, 0x23, 0x01”, e eles de fato, não estavam vazios, cada arquivo contém informações de update incluindo, também, informações do cliente atual do CrowdStrike.
  • O problema em si acontece quando o CSAgent.sys tenta parsear os arquivos de update de canal corrompidos, por falta de gerenciamento de erros apropriada, o parser retorna um valor nulo, que quando somado com outro endereço de memória, causa o driver a acessar um espaço de memória invalido, levando a uma derefencia de ponteiro nula, e já como estamos no kernel, qualquer problema de acesso ou erro no código, pode acarretar a uma tela azul, a famosa BSOD (Blue screen of death, ou tela azul da morte).
  • Um profissional de cybersegurança disse que o formato do arquivo de atualização não era um PE válido e isso seria um possível motivo para a falha. Nossa equipe verificou que o arquivo de atualização da CrowdStrike segue um formato próprio e possivelmente criptografado ou compactado. Portanto não seguiria um formato PE válido mesmo. Logo isso não seria o motivo da falha por mais que o arquivo tenha a extensão .sys.

Detalhes fornecidos pela CrowdStrike

  • Máquinas Windows que não foram impactadas não necessitam de nenhuma ação, já que o arquivo de canal problemático já foi revertido.
  • Máquinas Windows que se conectaram após 0527 UTC não serão impactadas
  • A falha não impacta máquinas Mac ou Linux
  • Arquivos “C-00000291*.sys” com timestamp 0527 UTC ou posterior já estão revertidos para a versão corrigida.
  • Arquivo “C-00000291*.sys” com timestamp 0409 UTC é a versão problemática.
Nota: é normal múltiplos arquivos “C-00000291*.sys” estarem presentes no diretório da CrowdStrike – contanto que um dos arquivos na pasta tenha um timestamp 0527 UTC ou posterior, esse será o conteúdo ativo.

Remediações

  • Política de atualização do CrowdStrike: Uma funcionalidade que o CrowdStrike oferece, é a possibilidade de mudar a frequência de atualizações, assim como, em quantas versões pra trás ficar em cada update (Latest, N-1, N-2), N, indicando o numero de versões para ficar atrás, e Latest, indicando para ficarmos na última versão sempre. Sempre recomendamos que atualizações sejam feitas com 1 ou mais versões para trás, impedindo, assim, que ataques de atualização instantânea como esse aconteça. Também recomendamos adicionar um cronograma de atualizações assim, permitindo que atualizações sejam feitas somente no período de tempo definido na política de atualização do CrowdStrike.

Painel do CrowdStrike Falcon com as políticas de atualização.

 

  • Caso alguma máquina já está afetada pelo problema, recomendamos:
    1. Reinicie a máquina em Modo de Segurança ou em Ambiente de Windows Recovery
    2. Vá até o diretório %WINDIR%\System32\drivers\CrowdStrike
    3. Localize o arquivo “C-00000291*.sys” e o delete.
    4. Reinicie a máquina normalmente.
  • Para ambientes Cloud ou virtualizados ainda é possível realizar um roll back para um snapshot anterior a 0409 UTC.

Timeline

IOCs

  • C:\Windows\System32\drivers\CrowdStrike\C-00000291*.sys < 7.15.18513.0

Autor

Logo da Hakai.