Aikido

Prevenção contra ataques de dia zero para NodeJS com Aikido

Timo KösslerTimo Kössler
|
#
#

TLDR: 

Os ataques 0-day, que exploram vulnerabilidades desconhecidas pelos fornecedores de software, representam uma ameaça cibernética significativa. Os firewalls de aplicações web (WAFs) tradicionais muitas vezes não conseguem impedir esses ataques, exigindo atualizações frequentes. A Runtime Application Self Protection (RASP) adota uma abordagem diferente, que não depende de regras escritas, mas monitora ativamente o comportamento das aplicações por meio de integrações nativas, levando a uma maior proteção contra ataques 0-day. 

O objetivo ao criar Aikido para NodeJS era permitir que os programadores adaptassem as suas aplicações e as protegessem por padrão contra classes comuns de ataques de injeção, como injeções SQL, injeções shell, traversal de caminho e SSRF. O programador não deve estar protegido apenas contra erros no seu próprio código, mas também contra falhas desconhecidas nas bibliotecas que está a utilizar.

Para avaliar a sua eficácia, avaliámos o Zen em relação a várias CVEs. Este documento técnico explica a abordagem, classifica a eficácia e apresenta as vantagens e limitações. Para este documento, a equipa identificou 17 vulnerabilidades zero-day, das quais 11 foram bloqueadas pelo Zen sem conhecimento prévio sobre a exploração específica.

Introdução

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

Por Libicki et al. - (em inglês) (2015) O Dilema do Defensor: Traçando um Rumo para a Cibersegurança, Rand Corporation ISBN: 978-0-8330-8911-3., Domínio Público, https://commons.wikimedia.org/w/index.php?curid=147095222

Um WAF analisa os dados da ligação de entrada (cabeçalhos, corpo, etc.) antes que eles cheguem à sua aplicação. Ele verifica os dados em busca de padrões suspeitos (injeções SQL, traversals de caminho) e bloqueia ou remove os dados suspeitos. Embora seja eficaz, ele tem a tendência de criar muitos falsos positivos, conforme observado na pesquisa da System Weakness.

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

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

A Abordagem Aikido do Aikido

Ao concentrar-se em monitorizar e interceptar atividades maliciosas no momento em que estas tentam aceder ou manipular recursos críticos, Aikido consegue reduzir significativamente os falsos positivos, adotando uma estratégia que apenas bloqueia os ataques quando estes interagem com os sistemas subjacentes. 

Isso é feito através da implementação de um sistema que examina vários tipos de interações com o ambiente subjacente. Entre elas estão:

  • Interações com bases de dados: monitorizar chamadas feitas para bibliotecas de bases de dados, tanto SQL como NoSQL, permite a deteçã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 à base de dados, atividades maliciosas podem ser identificadas e bloqueadas antes que causem danos.

  • Chamadas externas: monitorar chamadas externas feitas por HTTP, HTTPS ou outros protocolos pode revelar tentativas de comunicação com servidores de comando e controlo, 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 ficheiros e execução do Shell: A monitorização do acesso ao sistema de ficheiros pode detetar tentativas de leitura, escrita ou modificação de ficheiros confidenciais, ou de execução de código malicioso. Através da análise dos caminhos dos ficheiros, permissões e operações envolvidas nestes acessos, é possível identificar e bloquear atividades não autorizadas.

  • Tentativas de falsificação de pedidos do lado do servidor (SSRF): os ataques SSRF podem ser devastadores, permitindo que os invasores aproveitem a confiança do seu servidor para aceder a recursos internos ou até mesmo interagir com serviços externos em seu nome. Ao monitorizar de perto o destino e a natureza dos pedidos internos originários dos seus servidores, o Zen é capaz de bloquear ataques SSRF.

Ao concentrar-se nesses pontos críticos de interação com os sistemas subjacentes, a abordagem Zen permite uma deteção e bloqueio mais precisos e eficazes dos ataques, minimizando o número de falsos positivos que podem atrapalhar atividades legítimas. Essa estratégia também fornece informações valiosas sobre a natureza e os alvos dos ataques, que podem ser usadas para melhorar a postura geral de segurança.

Investigação

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

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

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

Bloqueado

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 Injeção de concha
CVE-2020-7687 npm:fast-http Atravessamento de Caminho
CVE-2020-7765 npm:@firebase/util Poluição do protótipo
CVE-2020-8116 npm:dot-prop Poluição do protótipo
CVE-2020-26301 npm:ssh2 Injeção de concha
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: analisar-git-config Poluição do protótipo
CVE-2025-25977 npm:canvg Poluição do protótipo
CVE-2025-27152 npm:axios SSRF
CVE-2025-28269 npm:js-utilidades-de-objetos Poluição do protótipo
CVE-2025-32020 npm:crud-query-parser SQL Injection

Não bloqueado

CVE Software afetado Tipo Motivo
CVE-2014-9682 sincronização de DNS Command Injection Utiliza uma versão antiga e não suportada do ShellJS. As versões mais recentes são suportadas pelo Zen.
CVE-2015-1369 sequelizar SQL Injection Problema não detectado inicialmente, corrigido na versão 1.7.0.
CVE-2024-21511 mysql2 Injeção de código Estamos a perder o rasto das entradas do utilizador devido a um problema no AsyncContext no Node.js.
CVE-2024-56198 limpador de caminho Atravessamento de Caminho Não podemos rastrear a carga útil perigosa até a entrada do utilizador devido a uma modificação.
CVE-2025-1302 jsonpath-plus Execução remota de código Devido a um mecanismo de segurança incorporado no V8, o comportamento do eval mudaria se o instrumentássemos.
Estamos a planear resolver isso com uma abordagem diferente no futuro.
CVE-2024-42352 @nuxt/ícone SSRF Pacote ainda não suportado.

Aikido continuamente a pesquisar e expandir a proteção zero-day Aikido proteção zero-day suporte a novas estruturas e algoritmos aprimorados.

Um princípio fundamental é manter um impacto mínimo no desempenho (≤ 5%) para 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 o tempo de solicitação em 2 a 10 vezes), estamos a desenvolver ativamente abordagens alternativas e eficientes.

Considere Aikido como uma camada *adicional* de proteção, complementando os componentes reativos abrangentes Aikido, como verificação de código, testes de API e outros recursos de segurança robustos.

Conclusão

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

4.7/5

Proteja seu software agora

Comece Gratuitamente
Não é necessário cc
Agendar uma demonstração
Seus dados não serão compartilhados · Acesso somente leitura · Não é necessário cartão de crédito

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.