Explication des attaques par exécution de code à distance (RCE)
L'exécution de code à distance (RCE) constitue davantage une catégorie d'attaques qu'une attaque unique définie. L’exécution de code à distance peut avoir plusieurs visages, dans la mesure où le terme s’applique à de nombreux types d’attaques différents. Cependant, à un niveau fondamental, toutes les attaques pouvant être regroupées sous l'égide du RCE partagent un point commun : les attaques RCE sont toutes réalisées en exploitant les vulnérabilités de la configuration des ordinateurs/serveurs distants afin d'exécuter du code arbitraire sur le système cible.
Si un attaquant parvient à y parvenir, les conséquences peuvent être plus que significatives. Demander au serveur d'exécuter du code arbitraire (c'est-à-dire du code fourni par l'attaquant) pourrait permettre à l'attaquant de voler des informations confidentielles, de modifier ou de détruire des fichiers, d'effectuer un attaque par déni de service distribué (DDoS) , ou pire encore, prendre en charge l’ensemble du système.
La question mérite donc clairement une certaine attention.
Vulnérabilités requises
Pour qu’un attaquant puisse lancer une attaque par exécution de code à distance, le système cible doit disposer d’une vulnérabilité préexistante que l’attaquant pourra exploiter. Diverses vulnérabilités pourraient ouvrir la porte à une attaque RCE – il y en a trop pour les nommer. Cependant, les types de vulnérabilités suivants sont les plus couramment utilisés pour perpétrer des attaques RCE.
Entrée utilisateur non nettoyée
Si votre site/application Web autorise la saisie des utilisateurs sans que des mesures de nettoyage appropriées soient mises en place, vous ouvrez la porte à toutes sortes de comportements involontaires de la part de votre serveur, tels que l'exécution de code arbitraire. Ne faites jamais confiance aux commentaires des utilisateurs. Ce point est également lié à la confusion des types, expliquée ci-dessous.
Authentification brisée
Cette première vulnérabilité est un peu évidente, mais si l’on ne prend pas soin de configurer correctement les mécanismes d’authentification, les conséquences pourraient être désastreuses. En fait, cette vulnérabilité se classe deuxième dans la liste des dix principales vulnérabilités de l’OWASP – c’est un doozy.
Si les fonctions d’authentification et de gestion de session de votre site Web/application sont mal mises en œuvre, les attaquants pourraient compromettre les mots de passe, les clés ou les jetons de session. Ils pourraient également tenter d’exploiter d’autres vulnérabilités de l’application afin d’usurper l’identité d’autres utilisateurs disposant d’autorisations potentiellement sensibles. Une fois l’attaquant entré, il pourrait exécuter du code arbitraire et éventuellement prendre le contrôle de votre serveur avec les autorisations appropriées.
Mauvais contrôle d'accès
Les listes de contrôle d'accès (ACL) limitent les autorisations de vos utilisateurs à celles qui leur sont nécessaires pour terminer leur travail. Sans autorisations correctement segmentées, si un attaquant détourne un compte utilisateur disposant des privilèges root en raison d'un contrôle d'accès mal mis en œuvre, les dommages qu'il pourrait causer sont considérables. À l’inverse, si un attaquant compromet un compte utilisateur avec des autorisations limitées, les dommages qu’il peut causer sont limités aux autorisations dont il dispose. Ils peuvent toujours vous causer des problèmes, mais bien moins que s'ils disposaient de privilèges élevés ou root.
Débordements de tampon
Le logiciel est généralement programmé pour utiliser des tampons. Dans le monde de la programmation, un tampon est une quantité fixe de mémoire physique (RAM) utilisée pour stocker des informations temporaires jusqu'à ce qu'elles soient nécessaires ou déplacées vers un autre emplacement. Étant donné que le tampon constitue une quantité fixe de RAM, des mesures de vérification des limites doivent être écrites dans le code pour garantir que la capacité du tampon n'est pas dépassée. Si aucune mesure de vérification des limites n’est présente (c’est la vulnérabilité), la quantité de données écrites dans le tampon peut dépasser sa capacité. Lorsque cela se produit, les données débordantes écraseront les données légitimes des tampons voisins. Débordements de tampon peut détruire des données essentielles, faire planter le système et écraser des emplacements de mémoire avec du code arbitraire (logiciel malveillant) que le système exécute ultérieurement.
Tapez confusion
Une autre vulnérabilité couramment exploitée est la confusion des types. Dans un logiciel, chaque fois qu'une partie du programme transmet un objet (un fichier, une chaîne, un lien, etc.) à une autre partie du programme, le type d'objet doit être vérifié, afin que le programme sache quoi en faire et comment. Cependant, si cette vérification n’est pas inscrite dans le code, il devient possible de tirer parti de cet oubli pour exploiter le système. En écrivant un objet en mémoire sous la forme d’un « pointeur de type » (disons A), puis en le lisant comme un autre « pointeur de type » (disons B), un attaquant pourrait tromper le système et lui faire exécuter du code arbitraire. Si des contrôles appropriés étaient en place, le type de pointeur A ne pourrait pas être lu comme un type de pointeur B et le code malveillant ne s'exécuterait pas.
Manipulation de désérialisation
Chaque fois qu'un objet est transmis d'une partie du programme à une autre, cet objet doit d'abord être sérialisé (c'est-à-dire converti en binaire). Une fois que l'objet sérialisé arrive à destination, il doit être désérialisé (converti en objet d'origine). Les attaquants peuvent exploiter le processus de désérialisation pour produire des objets anormaux capables de manipuler le système pour exécuter des commandes involontaires.
Comment fonctionnent les attaques par exécution de code à distance ?
Toute attaque en ligne dans laquelle un attaquant exécute du code à distance sur votre système peut être considérée comme une attaque par exécution de code à distance. Il n’y a donc pas d’exemple de playbook. Et même si les vulnérabilités courantes répertoriées ci-dessus sont les plus fréquemment exploitées pour l'entrée, toute attaque qui exécute du code à distance sur un système peut être considérée comme une attaque d'exécution à distance, quelle que soit la manière dont l'attaquant est entré.
Néanmoins, les étapes générales ressemblent à ceci :
- L'attaquant analyse les machines sur Internet à la recherche de vulnérabilités connues susceptibles d'ouvrir la porte à une attaque.
- Une fois qu'une vulnérabilité appropriée est trouvée, l'attaquant l'exploite pour l'entrée et l'accès.
- Une fois que l'attaquant est entré, il exécute du code malveillant sur le système pour faire des ravages typiques : voler des informations, crypter ou détruire des fichiers, modifier les autorisations, télécharger davantage de logiciels malveillants, etc., en fonction des vulnérabilités trouvées, de l'état de la machine compromise ( (patchs de sécurité appliqués ou non par exemple) et les outils dont dispose l'attaquant.
L'exécution de code malveillant est généralement réalisée grâce à l'utilisation de scripts bash et de commandes de terminal. L'attaquant introduit le code dans une application vulnérable qui l'exécute (ou appelle le noyau pour l'exécuter).
Exemples d'attaques par exécution de code à distance
Certaines des attaques en ligne les plus connues se présentent sous la forme d’attaques RCE. Regardons quelques exemples.
Vouloir pleurer
Le 12 mai 2017, il a été révélé que des centaines de milliers d’ordinateurs dans le monde étaient infectés par le ransomware WannaCry. Les ransomwares cryptent généralement les fichiers sur l'ordinateur infecté, bloquant les utilisateurs et exigeant le paiement d'une rançon en échange du décryptage des fichiers.
WannaCry lui-même permet l'exécution de code à distance. Un attaquant doit envoyer un message spécialement conçu à un serveur Samba (SMB) – un protocole utilisé pour partager l'accès aux fichiers, imprimantes et autres ressources sur un réseau. Si le serveur Samba est vulnérable, l'attaquant accède au système.
L’attaquant analyse Internet à la recherche de ports SMB vulnérables et utilise l’un des outils d’espionnage présumés de la National Security Agency (NSA) des États-Unis, appelé « EternalBlue », qui peut détecter la vulnérabilité du protocole SMB de Microsoft. Une fois la vulnérabilité SMB confirmée, l'attaquant utiliserait un autre outil d'espionnage de la NSA appelé DoublePulsar pour installer le ransomware WannaCry sur la machine compromise.
EternalBlue et DoublePulsar ont été divulgués en avril 2017 par un groupe de hackers du nom de Shadow Brokers. Microsoft a corrigé les failles de sécurité exposées par Shadow Brokers en mars 2017. Cependant, il a été signalé qu'entre fin avril et début mai 2017, EternalBlue et DoublePulsar avaient infecté plus de 148 000 ordinateurs. Et bon nombre des machines compromises étaient des serveurs qui, une fois infectés, pouvaient infecter les machines clientes connectées aux serveurs infectés.
Une attaque désastreuse, bien sûr.
Certaines organisations notables qui ont été infectées par le malware WannaCry incluent Le National Health Service (NHS) britannique , le géant espagnol des télécommunications, Téléphonique , et le réseau ferroviaire allemand, Deutsche Bahn .
Vulnérabilités du NAS Western Digital My Cloud
Les vulnérabilités du Western Digital My Cloud NAS permettraient à un attaquant d'effectuer plusieurs attaques d'exécution de code à distance, par exemple en compromettant les données stockées sur le système, ou en permettant à un attaquant de télécharger des logiciels malveillants sur l'appareil, tels que des ransomwares, des cryptomineurs ou des botnets. Nous en révélons davantage sur les cinq vulnérabilités critiques affectant Western Digital Mon Cloud NAS appareils dans notre article complet.
Vulnérabilité HtmlHelper de Windows 10
Les fichiers d'aide Windows portent l'extension .chm. Chaque fois que vous cliquez sur un fichier .chm, un petit programme appelé HtmlHelper ouvre le fichier .chm et l'affiche dans une fenêtre que vous pouvez lire. Il s'avère que les chercheurs de Comparitech ont découvert que HtmlHelper contient plusieurs vulnérabilités et contourne même de nombreuses politiques de sécurité de Windows10. Cela signifie que HtmlHelper peut être amené à ouvrir des fichiers .chm compromis, ce qui peut conduire à une attaque RCE.
Vulnérabilités de Zoom RCE
Plus récemment, Zoom, le service de vidéoconférence populaire, s'est révélé vulnérable à un attaque par exécution de code à distance . L’attaque a été démontrée cette année lors de l’événement Pwn2Own, un concours de chasse aux bugs Zero Day organisé par Zero Day Initiative. Le but de l'événement est de rendre le monde du logiciel plus sécurisé en recherchant de manière proactive les bogues et en les divulguant aux fournisseurs pour qu'ils soient corrigés.
Cette attaque particulière exploiterait trois vulnérabilités afin de perpétrer l'attaque RCE. Mais les détails du fonctionnement interne de l’attaque n’ont pas été divulgués. Dans la démonstration, l’attaquant appelle la victime, attend un peu, puis est capable d’exécuter du code arbitraire, comme en témoigne le lancement par l’attaquant de l’application de calcul de la victime. Si l'attaquant avait pu lancer la calculatrice, il aurait probablement pu lancer n'importe quelle autre application, telle qu'un shell, et émettre des commandes arbitraires.
Comment se protéger contre les attaques RCE
Les attaques par exécution de code à distance sont complexes car le mode d’entrée n’est pas fixe. Les attaques RCE sont une catégorie d’attaques plutôt que des attaques spécifiques qui suivent un playbook. Et de nouvelles vulnérabilités et exploits font surface chaque jour. La défense contre les attaques RCE est donc un peu un jeu du chat et de la souris.
Cependant, chaque organisation doit suivre deux mesures afin de vous donner de meilleures chances d’éviter les attaques RCE.
Gardez toujours votre système d'exploitation et vos logiciels tiers à jour
Comme mentionné ci-dessus, des vulnérabilités apparaissent chaque jour – comptez-y. La meilleure façon de minimiser vos risques d'être victime d'une attaque RCE est de mettre à jour tous vos logiciels dès que les fournisseurs mettent les correctifs à disposition. Garder votre logiciel à jour pourrait bien vous éviter une attaque RCE. Les vulnérabilités anciennes et corrigées sont encore utilisées dans la nature pendant des années après la publication des correctifs. En effet, les pirates savent qu’il est difficile pour les organisations commerciales d’appliquer rapidement des correctifs aux logiciels et que, pour cette raison, de nombreuses organisations ont des pratiques de mise à jour « paresseuses ». Les attaquants tenteront donc toujours des attaques avec des vulnérabilités obsolètes, juste au cas où. Si votre logiciel n’a pas été corrigé, vous souhaiterez rapidement l’avoir fait.
Pourquoi est-il difficile pour les organisations commerciales d’appliquer des correctifs en temps opportun ? D’une part, cela nécessite beaucoup de ressources. L'application de correctifs aux logiciels signifie parfois que certaines fonctions sont obsolètes, vous avez donc besoin d'une solution de contournement avant la mise à jour. La mise à jour d'un logiciel peut rompre l'interopérabilité avec d'autres logiciels critiques, ce qui nécessitera également des solutions de contournement. De nombreuses organisations attendront le plus longtemps possible avant de mettre à jour leurs systèmes afin d’éviter de rompre leurs pipelines.
Une autre raison de cette difficulté est que la mise à jour d'un système nécessite généralement un redémarrage du système, ce qui entraîne des temps d'arrêt et une perte d'argent. Pourtant, ce n’est pas la première mesure de notre liste pour rien, et une attaque RCE vous coûtera probablement plus d’une heure ou deux de temps d’arrêt. Garder votre logiciel à jour, même s’il ne garantit pas que vous serez exempt de RCE, est l’étape la plus importante que vous puissiez prendre en termes de défense.
Utiliser la protection contre les débordements de tampon
La protection contre les débordements de mémoire tampon consiste en plusieurs mesures écrites dans le logiciel serveur pour détecter les débordements de mémoire tampon et les empêcher de devenir de graves failles de sécurité. La protection contre le débordement de tampon ajoute généralement une valeur Canary (un entier connu mais aléatoire) aux données allouées à la pile. Si la valeur Canary est écrasée, cela signifie qu'un tampon qui la précède en mémoire a été dépassé. En vérifiant la valeur Canary, vous pouvez détecter les débordements de tampon, mettre fin au programme concerné et empêcher un attaquant de l'exploiter.
Désinfecter les entrées des utilisateurs
Considérez que toutes les entrées des utilisateurs ne sont pas fiables. Une entrée utilisateur non vérifiée peut conduire à des attaques RCE. Traitez les entrées des utilisateurs authentifiés, des utilisateurs internes et des utilisateurs publics de la même manière : ne leur faites pas confiance, nettoyez-les.
Configurez correctement vos mécanismes d'authentification des utilisateurs
Vous pouvez avoir une tonne de caméras de sécurité et de détecteurs de mouvement dans votre maison. Mais si votre porte d’entrée est déverrouillée, les méchants peuvent toujours entrer. Les mécanismes d’authentification des utilisateurs constituent votre première ligne de défense pour empêcher les méchants d’entrer. Prenez le temps de bien les configurer.
Utiliser un pare-feu
Tout comme votre ordinateur personnel doit exécuter un pare-feu, envisagez d'installer un pare-feu d'application de site Web (WAF) pour votre site/application Web. Cela peut vous aider à prévenir les attaques automatisées courantes.
Utiliser les listes de contrôle d'accès (ACL)
Les listes de contrôle d'accès limitent les autorisations de vos utilisateurs. Les limites des autorisations de vos utilisateurs peuvent très bien limiter ce qu’un attaquant peut faire s’il parvient à compromettre l’un des comptes de vos utilisateurs. Prenez le temps de configurer correctement les ACL pour votre organisation et de les utiliser.
Utiliser un logiciel approprié de détection des menaces/intrusions
En plus de maintenir votre logiciel à jour, vous devez également utiliser un logiciel de détection des menaces. Une bonne application de détection des menaces pourrait faire toute la différence dans le monde. Les logiciels de détection des menaces peuvent analyser le trafic entrant, détecter les comportements suspects et les tentatives d'intrusion, entre autres. Il peut également bloquer immédiatement un hôte suspect dès sa détection, ce qui peut être une véritable bouée de sauvetage.
Une application de détection des menaces ne vous épargnera pas nécessairement chaque tentative d’attaque RCE. Cependant, ces applications vous avertiront que quelque chose pourrait se produire beaucoup plus tôt que si vous n’en utilisez pas. Plus vite vous passerez en mode contrôle des dégâts, mieux ce sera pour votre organisation.
Il existe de nombreuses applications différentes de détection des menaces. Certains sont propriétaires, tandis que d’autres sont open source. Il y en a trop pour les énumérer, mais deux options open source bien connues sont Snort et Suricata. Mais quelle que soit l’application de détection des menaces que vous choisissez, elle améliorera la sécurité de votre site Web/application, surtout si vous avez beaucoup de trafic entrant et sortant.
Avoir un plan de réponse
Préparez-vous à une telle éventualité. Dans le cas où votre organisation serait touchée par une attaque RCE, être préparé peut réduire considérablement la portée de l'attaque, y mettre fin plus tôt et réduire votre temps de récupération.
Conclusion
C'était donc notre cours intensif sur les attaques par exécution de code à distance (RCE). Il n’existe pas d’ensemble d’instructions fixes pour se défendre contre ce type d’attaques, au-delà de ce que vous devriez faire de toute façon. Les points d’entrée pourraient être presque n’importe quoi. Et à mesure que de nouvelles vulnérabilités et outils de piratage apparaissent, vous devrez vous adapter. La protection contre les attaques RCE est un processus continu et évolutif.
Que puis-je faire d'autre pour protéger ma vie privée et ma sécurité ?
Si vous êtes préoccupé par votre sécurité générale et votre confidentialité en ligne, notre liste d’outils recommandés ci-dessous peut vous être utile.
- Meilleurs VPN
- Meilleur antivirus
- Meilleurs gestionnaires de mots de passe
- Meilleure protection contre le vol d'identité