DataSunrise sponsorise AWS re:Invent 2024 à Las Vegas, veuillez nous rendre visite au stand n°2158 de DataSunrise

Exécution de Code à Distance

Exécution de Code à Distance

Image contenu Exécution de Code à Distance

Qu’est-ce que l’Exécution de Code à Distance (RCE) ?

L’Exécution de Code à Distance, souvent abrégé RCE, est un type d’attaque informatique qui permet à un attaquant d’exécuter un code arbitraire sur une machine cible ou dans un environnement cible. Cela donne à l’attaquant un contrôle total sur l’application ou le système vulnérable. Les attaques RCE sont extrêmement dangereuses car elles permettent à un adversaire d’effectuer toute action pour laquelle l’application compromise ou l’utilisateur a des permissions.

Les vulnérabilités RCE surviennent souvent en raison d’une validation et d’une sanitation insuffisantes des entrées dans les applications qui traitent des entrées non fiables de l’utilisateur. Si les entrées fournies par l’utilisateur ne sont pas correctement validées avant d’être utilisées dans des opérations sensibles à la sécurité comme les requêtes de bases de données, les opérations sur le système de fichiers ou les commandes système, un attaquant pourrait être capable d’injecter et d’exécuter un code malveillant.

Impact des Attaques d’Exécution de Code à Distance

L’impact d’une attaque RCE réussie peut être sévère, en fonction des privilèges de l’application exploitée. Dans le pire des cas, RCE peut permettre à un attaquant de prendre complètement le contrôle du système vulnérable et d’accéder à des données sensibles, installer des logiciels malveillants et utiliser la machine compromise pour de nouvelles attaques. Certaines conséquences potentielles de RCE incluent :

  • Vol de données sensibles : L’attaquant peut accéder et exfiltrer des informations sensibles stockées sur le système ou accessibles à l’application, comme des données de clients, des enregistrements financiers, de la propriété intellectuelle, etc.
  • Installation de logiciels malveillants : RCE permet souvent l’installation de logiciels malveillants comme des rançongiciels, des logiciels espions, des trojans, des rootkits et des bots, permettant à l’attaquant de maintenir l’accès et le contrôle même après l’attaque initiale.
  • Mouvement latéral : Une machine compromise peut être utilisée comme tête de pont pour lancer d’autres attaques contre d’autres systèmes sur le même réseau, permettant à l’attaquant de se déplacer latéralement et de compromettre d’autres actifs.
  • Dégradation de la réputation : Les attaques RCE resultant en des violations de données ou des perturbations de services peuvent gravement endommager la réputation d’une organisation et entraîner une perte de confiance des clients.

Types d’Attaques d’Exécution de Code à Distance

Les attaques RCE peuvent prendre différentes formes en fonction de la vulnérabilité exploitée. Certains types courants de RCE incluent :

Injection SQL

L’injection SQL est un type d’attaque RCE qui cible les applications qui construisent des requêtes SQL basées sur des entrées utilisateur sans validation appropriée. Un attaquant crée une entrée malveillante contenant du code SQL, lequel est ensuite exécuté par la base de données. Par exemple :



SELECT * FROM users WHERE username = '' OR 1=1--' AND password = '';

Cette entrée transforme la requête SQL en :


SELECT * FROM users WHERE username = '' OR 1=1-- AND password = '';

Le double tiret (–) commente le reste de la requête, supprimant effectivement la vérification du mot de passe. La condition 1=1 est toujours vraie, ce qui connecte alors l’attaquant comme le premier utilisateur de la base de données.

Pour permettre cette attaque, l’application aurait besoin de construire la requête en interpolant directement l’entrée de l’utilisateur, comme :


$query = "SELECT * FROM users WHERE username = '$_POST[username]' AND password = '$_POST[password]'";

Pour prévenir l’injection SQL, les entrées utilisateur ne doivent jamais être incluses directement dans les requêtes SQL. À la place, des requêtes paramétrées ou des déclarations préparées devraient être utilisées.

Injection de Commandes

L’injection de commandes RCE se produit lorsqu’une application transmet une entrée utilisateur non sécurisée à un shell système. Les attaquants peuvent injecter des commandes shell qui sont ensuite exécutées avec les privilèges de l’application vulnérable. Par exemple, considérez une application web qui permet aux utilisateurs de pinguer une adresse qu’ils fournissent :


system("ping -c 4 " . $_POST['address']);

Un attaquant pourrait fournir une entrée comme :


127.0.0.1 && cat /etc/passwd

Cela entraînerait l’exécution de la commande suivante :


ping -c 4 127.0.0.1 && cat /etc/passwd

Après ping l’adresse localhost, la commande injectée par l’attaquant (cat /etc/passwd) serait exécutée, affichant des informations sensibles du système.

Pour prévenir l’injection de commandes, les fonctionnalités de l’application nécessitant des commandes shell devraient être réimplémentées de manière plus sécurisée si possible. Si les commandes shell sont inévitables, les entrées utilisateur doivent être strictement validées par rapport à une liste blanche de valeurs sûres.

Attaques de Désérialisation

De nombreux langages de programmation permettent de sérialiser des objets en chaînes de caractères qui peuvent être désérialisées plus tard pour redevenir des objets. Si une application désérialise des données contrôlées par l’utilisateur sans validation suffisante, un attaquant peut manipuler la chaîne sérialisée pour injecter du code malveillant qui est exécuté lors de la désérialisation.

Par exemple, considérez une application Java qui désérialise les cookies de session fournis par l’utilisateur :


Cookie sessionCookie = request.getCookies()[0];
byte[] serializedObject = Base64.getDecoder().decode(sessionCookie.getValue());
ObjectInputStream objectInputStream = new ObjectInputStream(new ByteArrayInputStream(serializedObject));
Object deserializedObject = objectInputStream.readObject();

Un attaquant pourrait soigneusement fabriquer un objet sérialisé malveillant qui, lorsqu’il est désérialisé, exécute du code arbitraire via la méthode readObject, lui donnant un RCE.

Pour prévenir les attaques de désérialisation, évitez de désérialiser des données non fiables si possible. Si la désérialisation est nécessaire, utilisez les fonctionnalités de sécurité spécifiques au langage comme le ValidatingObjectInputStream en Java. Les objets désérialisés devraient être traités comme non fiables et validés minutieusement.

Résumé et Conclusion

Les attaques d’Exécution de Code à Distance permettent aux attaquants d’exécuter un code arbitraire sur des systèmes cibles, leur donnant potentiellement un contrôle total. Les RCE résultent souvent d’une mauvaise gestion des entrées utilisateurs non fiables dans les applications. Les principaux types de RCE incluent l’injection SQL, qui cible les requêtes de base de données non sécurisées ; l’injection de commandes, qui exploite une composition incorrecte des commandes shell ; et la désérialisation non sûre, qui abuse des failles de sérialisation pour injecter du code malveillant.

L’impact des RCE peut être sévère, incluant l’exposition des données sensibles, l’installation de logiciels malveillants, le mouvement latéral vers d’autres systèmes, et les dommages à la réputation. Pour se protéger contre les RCE, les applications doivent valider et assainir toutes les entrées non fiables avant de les utiliser dans toute opération sensible. Les mesures de prévention spécifiques dépendent du type de vulnérabilité mais peuvent inclure l’utilisation de requêtes paramétrées, la validation par rapport à des listes blanches strictes, et l’évitement de la désérialisation non sécurisée.

Pour des solutions permettant de protéger vos données et systèmes contre les RCE et autres menaces, envisagez les outils conviviaux et flexibles de DataSunrise pour la sécurité des bases de données, la découverte de données sensibles (y compris l’OCR pour trouver des données sensibles dans les images), et la conformité. Contactez notre équipe pour planifier une démonstration en ligne et découvrir comment DataSunrise peut aider à protéger votre organisation.

Suivant

Politique de Suppression

Politique de Suppression

En savoir plus

Besoin de l'aide de notre équipe de support ?

Nos experts seront ravis de répondre à vos questions.

Informations générales :
[email protected]
Service clientèle et support technique :
support.datasunrise.com
Demandes de partenariat et d'alliance :
[email protected]