Aikido

Prévention des attaques zero-day pour NodeJS avec Aikido Zen

Timo KösslerTimo Kössler
|
#
#

En bref : 

Les attaques zero-day, exploitant des vulnérabilités inconnues des éditeurs de logiciels, représentent une menace cybernétique significative. Les pare-feu applicatifs (WAF) traditionnels sont souvent insuffisants pour prévenir ces attaques, nécessitant des mises à jour fréquentes. La Runtime Application Self Protection (RASP) adopte une approche différente qui ne repose pas sur des règles écrites, mais surveille activement le comportement des applications via des intégrations natives, ce qui conduit à une protection accrue contre les zero-day. 

L'objectif lors de la création d'Aikido Zen pour NodeJS était de permettre aux développeurs de moderniser leurs applications et de les protéger par défaut contre les classes courantes d'attaques par injection telles que les injections SQL, les injections de shell, les traversées de chemin et les SSRF. Le développeur devrait être protégé non seulement contre les erreurs dans son propre code, mais aussi contre les failles inconnues dans les bibliothèques qu'il utilise.

Pour évaluer son efficacité, nous avons évalué Zen par rapport à un certain nombre de CVE. Ce livre blanc explique l'approche, évalue l'efficacité et présente les compromis et les limitations. Pour ce document, l'équipe a identifié 17 vulnérabilités zero-day dont 11 ont été bloquées par Zen sans connaissance préalable de l'exploit spécifique.

Introduction

Les WAF ont toujours été un dernier recours contre les zero-day, car ils s'appuyaient sur une combinaison de chance et de schémas récurrents pour détecter les zero-day pendant leur fenêtre d'« attaque zero-day » (comme illustré ci-dessous). Ce n'est qu'après la divulgation publique des vulnérabilités (t0) que les règles WAF peuvent être mises à jour pour stopper la nouvelle attaque. 

Par Libicki et al. - (en anglais) (2015) The Defender’s Dilemma: Charting a Course Toward Cybersecurity, Rand Corporation ISBN: 978-0-8330-8911-3., Domaine public, https://commons.wikimedia.org/w/index.php?curid=147095222

Un WAF examine les données de connexion entrantes (en-têtes, corps, ..) avant qu'elles n'atteignent votre application. Il analyse les données à la recherche de schémas suspects (injections SQL, traversées de chemin) et bloque ou supprime les données suspectes. Bien qu'efficace, il a tendance à générer de nombreux faux positifs, comme le montre une recherche de System Weakness.

 Si vous avez 10 000 clients, la meilleure solution pourrait tout de même en bloquer 56. 

Aikido Zen adopte une approche fondamentalement différente de la sécurité des applications web. Au lieu de s'appuyer uniquement sur des signatures et des schémas connus, il se concentre sur la compréhension et l'atténuation des comportements d'attaque à un niveau d'application plus profond. 

L'approche Aikido Zen

En se concentrant sur la surveillance et l'interception des activités malveillantes au moment où elles tentent d'accéder ou de manipuler des ressources critiques, Aikido Zen est capable de réduire considérablement les faux positifs en adoptant une stratégie qui ne bloque les attaques que lorsqu'elles interagissent avec les systèmes sous-jacents. 

Ceci est accompli en mettant en œuvre un système qui examine divers types d'interactions avec l'environnement sous-jacent. Celles-ci incluent :

  • Interactions avec les bases de données : La surveillance des appels effectués vers les bibliothèques de bases de données, qu'elles soient SQL ou NoSQL, permet la détection de requêtes non autorisées, de tentatives d'exfiltration de données ou d'attaques par injection. En analysant le contenu et la structure de ces appels de base de données, les activités malveillantes peuvent être identifiées et bloquées avant qu'elles ne causent des dommages.

  • Appels externes : La surveillance des appels externes effectués via HTTP, HTTPS ou d'autres protocoles peut révéler des tentatives de communication avec des serveurs de commande et de contrôle, de téléchargement de logiciels malveillants ou d'exfiltration de données. En inspectant le contenu et la destination de ces appels, le trafic malveillant peut être identifié et bloqué.

  • Accès au système de fichiers et exécution de shell : La surveillance de l'accès au système de fichiers peut détecter les tentatives de lecture, d'écriture ou de modification de fichiers sensibles, ou d'exécution de code malveillant. En analysant les chemins de fichiers, les permissions et les opérations impliquées dans ces accès, les activités non autorisées peuvent être identifiées et bloquées.

  • Tentatives de Server-Side Request Forgery (SSRF) : Les attaques SSRF peuvent être dévastatrices, permettant aux attaquants d'exploiter la confiance de votre serveur pour accéder à des ressources internes ou même interagir avec des services externes en leur nom. En surveillant étroitement la destination et la nature des requêtes internes provenant de vos serveurs, Zen est capable de bloquer les attaques SSRF.

En se concentrant sur ces points d'interaction critiques avec les systèmes sous-jacents, l'approche Zen permet une détection et un blocage des attaques plus précis et efficaces, tout en minimisant le nombre de faux positifs qui peuvent perturber l'activité légitime. Cette stratégie fournit également des informations précieuses sur la nature et les cibles des attaques, qui peuvent être utilisées pour améliorer la posture de sécurité globale.

Recherche

Dans le cadre d'un effort continu, l'équipe Aikido Zen effectue des tests contre les vulnérabilités récemment découvertes afin de mesurer l'efficacité d'Aikido Zen. L'équipe identifie de nouveaux zero-day, crée un environnement de test reproductible, valide la vulnérabilité avec une injection de charge utile réussie, puis installe Aikido Zen pour vérifier que l'attaque est bloquée. 

Pour ce document, l'équipe a identifié 17 vulnérabilités dont 11 ont été bloquées par Zen et 6 ne l'ont pas été pour une multitude de raisons. 

Les résultats de notre recherche sont disponibles ci-dessous et tous les environnements de test, exploits et ressources nécessaires à la reproduction ont été mis en open source.

Bloqué

Identifiant CVE Logiciels affectés Type
CVE-2014-3744 npm:st Path Traversal
CVE-2015-1369 npm:sequelize Injection SQL
CVE-2019-15597 npm:node-dfs Injection Shell
CVE-2020-7687 npm:fast-http Path Traversal
CVE-2020-7765 npm:@firebase/util Pollution de prototype
CVE-2020-8116 npm:dot-prop Pollution de prototype
CVE-2020-26301 npm:ssh2 Injection Shell
CVE-2023-31719 npm:@frangoteam/fuxao Injection SQL
CVE-2024-24806 libuv (utilisé par Node.js) SSRF
CVE-2024-39338 npm:axios SSRF
CVE-2024-53900 npm:mongoose Injection de code JS
CVE-2025-23084 Node.js Traversée de chemin
CVE-2025-25975 npm:parse-git-config Pollution de prototype
CVE-2025-25977 npm:canvg Pollution de prototype
CVE-2025-27152 npm:axios SSRF
CVE-2025-28269 npm:js-object-utilities Pollution de prototype
CVE-2025-32020 npm:crud-query-parser Injection SQL

Non bloqué

CVE Logiciels affectés Type Raison
CVE-2014-9682 dns-sync Injection de commandes Utilise une ancienne version non prise en charge de ShellJS. Les versions plus récentes sont prises en charge par Zen.
CVE-2015-1369 sequelize Injection SQL Problème non détecté initialement, corrigé dans la version 1.7.0.
CVE-2024-21511 mysql2 Injection de code Nous perdons la trace des entrées utilisateur en raison d'un problème dans AsyncContext de Node.js.
CVE-2024-56198 path-sanitizer Path Traversal Nous ne pouvons pas retracer la charge utile dangereuse jusqu'à l'entrée utilisateur en raison d'une modification.
CVE-2025-1302 jsonpath-plus Exécution de code à distance En raison d'un mécanisme de sécurité intégré à V8, le comportement d'eval changerait si nous l'instrumentions.
Nous prévoyons de résoudre ce problème avec une approche différente à l'avenir.
CVE-2024-42352 @nuxt/icon SSRF Package pas encore pris en charge.

Aikido recherche et étend continuellement la protection contre les zero-day d'Aikido Zen avec un nouveau support de framework et des algorithmes améliorés.

Un principe fondamental est de maintenir un impact minimal sur les performances (≤ 5%) pour une protection continue. Bien que cela nous empêche d'implémenter immédiatement certains algorithmes de protection gourmands en ressources (ce qui pourrait augmenter les temps de requête de 2 à 10 fois), nous développons activement des approches alternatives et efficaces.

Considérez Aikido Zen comme une couche de protection *supplémentaire*, complétant les composants réactifs complets d'Aikido tels que l'analyse de code, les tests d'API et d'autres capacités de sécurité robustes.

Conclusion

Aikido Zen représente une avancée majeure dans la sécurité des applications web. Il offre une protection robuste contre les attaques zero-day sans nécessiter de correctifs constants, en se concentrant sur les comportements d'attaque et en utilisant des technologies de pointe. Aikido Zen offre une solution potentielle pour assurer la sécurité continue des applications web à mesure que le paysage des menaces évolue.

4.7/5

Sécurisez votre logiciel dès maintenant.

Essai gratuit
Sans CB
Planifiez une démo
Vos données ne seront pas partagées - Accès en lecture seule - Pas de CB nécessaire

Sécurisez-vous maintenant.

Sécuriser votre code, votre cloud et votre runtime dans un système centralisé unique.
Détectez et corrigez les vulnérabilités rapidement et automatiquement.

Pas de carte de crédit requise | Résultats du scan en 32 secondes.