Aikido

Prevenção de ataques zero-day para NodeJS com Aikido Zen

Escrito por
Timo Kössler

TLDR: 

Ataques de dia zero (0-day), explorando vulnerabilidades desconhecidas pelos fornecedores de software, representam uma ameaça cibernética significativa. Firewalls de aplicação web (WAFs) tradicionais frequentemente falham em prevenir esses ataques, exigindo patching frequente. Runtime Application Self Protection (RASP) adota uma abordagem diferente que não depende de regras escritas, mas monitora ativamente o comportamento da aplicação através de integrações nativas, levando a uma proteção aprimorada contra 0-Days. 

O objetivo ao construir o Aikido Zen para NodeJS foi permitir que os desenvolvedores adaptassem seus aplicativos e os protegessem por padrão contra classes comuns de ataques de injeção, como SQL injections, shell injections, path traversal e SSRF. O desenvolvedor não só deve ser protegido contra erros em seu próprio código, mas também contra falhas desconhecidas nas bibliotecas que está utilizando.

Para avaliar sua eficácia, avaliamos o Zen contra uma série de CVEs. Este whitepaper explica a abordagem, classifica a eficácia e apresenta os tradeoffs e as limitações. Para este artigo, a equipe identificou 17 vulnerabilidades zero-day, das quais 11 foram bloqueadas pelo Zen sem conhecimento prévio sobre o exploit específico.

Introdução

WAFs sempre foram uma última esperança contra 0-days, pois dependiam de uma combinação de sorte e padrões recorrentes para detectar 0-days durante sua janela de "ataque zero-day" (conforme mostrado abaixo). Somente após as vulnerabilidades serem divulgadas publicamente (t0) as regras do WAF podem ser atualizadas para interromper o novo ataque. 

Por Libicki et al. - (em inglês) (2015) The Defender’s Dilemma: Charting a Course Toward Cybersecurity, Rand Corporation ISBN: 978-0-8330-8911-3., Domínio Público, https://commons.wikimedia.org/w/index.php?curid=147095222

Um WAF analisará os dados de conexão de entrada (cabeçalhos, corpo, ..) antes que atinjam sua aplicação. Ele escaneia os dados em busca de padrões suspeitos (SQL injections, path traversals) e bloqueia ou remove os dados suspeitos. Embora eficaz, ele tem a tendência de criar muitos falsos positivos, como visto em pesquisas da System Weakness.

 Se você tiver 10.000 clientes, a melhor solução ainda poderia bloquear 56 deles. 

Aikido Zen adota uma abordagem fundamentalmente diferente para a segurança de aplicações web. Em vez de depender apenas de assinaturas e padrões conhecidos, ele se concentra em compreender e mitigar comportamentos de ataque em um nível de aplicação mais profundo. 

A Abordagem Aikido Zen

Ao focar no monitoramento e interceptação de atividades maliciosas no ponto em que tentam acessar ou manipular recursos críticos, o Aikido Zen consegue proporcionar uma redução significativa de falsos positivos ao adotar uma estratégia que bloqueia ataques apenas quando interagem com os sistemas subjacentes. 

Isso é realizado pela implementação de um sistema que examina vários tipos de interações com o ambiente subjacente. Estes incluem:

  • Interações com Banco de Dados: O monitoramento de chamadas feitas a bibliotecas de banco de dados, tanto SQL quanto NoSQL, permite a detecção de consultas não autorizadas, tentativas de exfiltração de dados ou ataques de injeção. Ao analisar o conteúdo e a estrutura dessas chamadas de banco de dados, atividades maliciosas podem ser identificadas e bloqueadas antes que causem danos.

  • Chamadas Externas: O monitoramento de chamadas externas feitas via HTTP, HTTPS ou outros protocolos pode revelar tentativas de comunicação com servidores de comando e controle, download de malware ou exfiltração de dados. Ao inspecionar o conteúdo e o destino dessas chamadas, o tráfego malicioso pode ser identificado e bloqueado.

  • Acesso ao Sistema de Arquivos e Execução de Shell: O monitoramento do acesso ao sistema de arquivos pode detectar tentativas de ler, gravar ou modificar arquivos sensíveis, ou de executar código malicioso. Ao analisar os caminhos dos arquivos, permissões e operações envolvidas nesses acessos, atividades não autorizadas podem ser identificadas e bloqueadas.

  • Tentativas de Server-Side Request Forgery (SSRF): Ataques SSRF podem ser devastadores, permitindo que invasores usem a confiança do seu servidor para acessar recursos internos ou até mesmo interagir com serviços externos em seu nome. Ao monitorar de perto o destino e a natureza das requisições internas originadas de seus servidores, o Zen é capaz de bloquear ataques SSRF.

Ao focar nesses pontos críticos de interação com os sistemas subjacentes, a abordagem Zen permite uma detecção e bloqueio de ataques mais precisos e eficazes, minimizando o número de falsos positivos que podem interromper atividades legítimas. Essa estratégia também fornece insights valiosos sobre a natureza e os alvos dos ataques, que podem ser usados para melhorar a postura de segurança geral.

Pesquisa

Como um esforço contínuo, a equipe do Aikido Zen realiza testes contra vulnerabilidades descobertas recentemente para medir a eficácia do Aikido Zen. A equipe identifica novos 0-days, cria um ambiente de teste reproduzível, valida a vulnerabilidade com uma injeção de payload bem-sucedida e, em seguida, instala o Aikido Zen para verificar se o ataque é bloqueado. 

Para este artigo, a equipe identificou 17 vulnerabilidades, das quais 11 foram bloqueadas pelo Zen e 6 não foram por uma infinidade de razões. 

Os resultados da nossa pesquisa podem ser encontrados abaixo e todos os ambientes de teste, exploits e recursos necessários para a reprodução foram disponibilizados como código aberto.

Bloqueados

ID de CVE Software afetado Tipo
CVE-2014-3744 npm:st Atravessamento de Caminho
CVE-2015-1369 npm:sequelize SQL Injection
CVE-2019-15597 npm:node-dfs Shell Injection
CVE-2020-7687 npm:fast-http Atravessamento de Caminho
CVE-2020-7765 npm:@firebase/util Prototype Pollution
CVE-2020-8116 npm:dot-prop Prototype Pollution
CVE-2020-26301 npm:ssh2 Shell Injection
CVE-2023-31719 npm:@frangoteam/fuxao SQL Injection
CVE-2024-24806 libuv (usado pelo Node.js) SSRF
CVE-2024-39338 npm:axios SSRF
CVE-2024-53900 npm:mongoose Injeção de Código JS
CVE-2025-23084 Node.js Path traversal
CVE-2025-25975 npm:parse-git-config Prototype Pollution
CVE-2025-25977 npm:canvg Prototype Pollution
CVE-2025-27152 npm:axios SSRF
CVE-2025-28269 npm:js-object-utilities Prototype Pollution
CVE-2025-32020 npm:crud-query-parser SQL Injection

Não Bloqueado

CVE Software afetado Tipo Motivo
CVE-2014-9682 dns-sync Command Injection Usa uma versão antiga e sem suporte do ShellJS. Versões mais recentes são suportadas pelo Zen.
CVE-2015-1369 sequelize SQL Injection Problema não detectado inicialmente, corrigido na versão 1.7.0.
CVE-2024-21511 mysql2 Injeção de Código Estamos perdendo o rastreamento da entrada do usuário devido a um problema no AsyncContext no Node.js.
CVE-2024-56198 path-sanitizer Atravessamento de Caminho Não conseguimos rastrear o payload perigoso até a entrada do usuário devido a uma modificação.
CVE-2025-1302 jsonpath-plus Execução Remota de Código Devido a um mecanismo de segurança integrado ao V8, o comportamento de `eval` mudaria se o instrumentássemos.
Estamos planejando resolver isso com uma abordagem diferente no futuro.
CVE-2024-42352 @nuxt/icon SSRF Pacote ainda não suportado.

Aikido está pesquisando e expandindo continuamente a proteção zero-day do Aikido Zen com suporte a novos frameworks e algoritmos aprimorados.

Um princípio fundamental é manter um impacto mínimo no desempenho (≤ 5%) para uma proteção contínua. Embora isso nos impeça de implementar imediatamente certos algoritmos de proteção que consomem muitos recursos (o que poderia aumentar os tempos de requisição em 2x-10x), estamos desenvolvendo ativamente abordagens alternativas e eficientes.

Considere o Aikido Zen uma camada de proteção *adicional*, complementando os componentes reativos abrangentes do Aikido, como varredura de código, teste de API e outras capacidades de segurança robustas.

Conclusão

O Aikido Zen representa um grande avanço na segurança de aplicações web. Ele oferece forte proteção contra ataques zero-day sem exigir patching constante, concentrando-se nos comportamentos de ataque e utilizando tecnologias de ponta. O Aikido Zen oferece uma solução potencial para garantir a segurança contínua de aplicações web à medida que o cenário de ameaças muda.

Compartilhar:

https://www.aikido.dev/blog/zero-day-nodejs

Assine para receber notícias sobre ameaças.

Comece hoje, gratuitamente.

Comece Gratuitamente
Não é necessário cc

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.