Buffer Overflow
hackingDéfinition
Un Buffer Overflow (dépassement de tampon) est une vulnérabilité mémoire fondamentale, référencée sous CWE-120 et CWE-121 selon sa localisation, survenant lorsqu'un programme écrit des données au-delà des limites d'un buffer mémoire préalablement alloué pour les contenir, écrasant ainsi des zones mémoire adjacentes non destinées à recevoir ces données, typiquement dans des langages comme C ou C++ ne procédant pas à une vérification automatique des limites d'accès mémoire contrairement à des langages managés comme Java ou Python. Lorsque le débordement affecte la pile d'exécution (stack overflow), l'attaquant peut potentiellement écraser l'adresse de retour d'une fonction, redirigeant le flux d'exécution du programme vers une adresse arbitraire de son choix, historiquement vers un shellcode injecté directement dans le buffer débordé, technique aujourd'hui largement contrée par les protections DEP/NX et ASLR mais contournable via des techniques avancées comme le Return-Oriented Programming. Le débordement de tas (heap overflow) corrompt les structures de gestion mémoire dynamique, pouvant conduire à une corruption de métadonnées exploitables pour une exécution de code arbitraire. Au minimum, un débordement provoque un crash de l'application, tandis qu'une exploitation aboutie permet l'exécution de code arbitraire avec les privilèges du processus compromis. La prévention repose sur des fonctions sécurisées limitant la taille des écritures, la validation stricte des entrées, et l'emploi de langages memory-safe comme Rust pour les développements critiques.
Description
L'injection NoSQL dans MongoDB cible les opérateurs de requête JSON. Des payloads avec $gt, $ne ou $where permettent de contourner l'authentification, d'exfiltrer des données ou d'exécuter du JavaScript côté serveur si les entrées ne sont pas correctement validées et typées.
Exploitation
L'attaquant soumet {"password": {"$gt": ""}} pour s'authentifier sans connaître le mot de passe. L'opérateur $where permet d'injecter des fonctions JavaScript arbitraires exécutées lors de l'évaluation des requêtes MongoDB.
Défense
- Valider et typer strictement toutes les entrées avant construction de requêtes NoSQL
- Désactiver l'opérateur $where et les fonctions JavaScript dans la configuration MongoDB
- Utiliser des ODM avec validation de schéma pour rejeter les structures d'opérateurs inattendues
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h