En coulisse

Vulnérabilitéde Log4Shell: Steam, Apple, Minecraft et bien d'autres sont vulnérables

Dominik Bärlocher
14/12/2021
Traduction: traduction automatique

Log4Shell est l'une des plus grandes failles de sécurité de ces dernières années. L'outil de journalisation concerné, Log4j, se trouve dans pratiquement toutes les applications Java. Il y a un risque de perte de données et pire encore.

Depuis le 9 décembre 2021, Log4j est considéré comme un danger pour tous les utilisateurs de PC, de smartphones, de consoles de jeux et d'Internet en général. En effet, Log4j présente une faille qui permet à un pirate malveillant d'introduire du code arbitraire dans un système. C'est ce qu'on appelle l'exécution de code à distance.

En dehors des cercles de développeurs, Log4j ne dit rien à personne. Il ne devrait d'ailleurs pas l'être, car le composant de journalisation lit en arrière-plan des applications Java et renseigne les développeurs sur les erreurs et autres processus. Mais c'est cette bibliothèque de programmes qui ouvre la porte aux pirates malveillants. Le problème est que Log4j est extrêmement répandu, ce qui fait que de très nombreux systèmes sont vulnérables.

Sont notamment concernés :

  • Apple
  • Tencent
  • Steam
  • Twitter
  • Baidu
  • CloudFlare
  • Amazon
  • Tesla
  • Minecraft
  • VMWare
  • WebEx
  • LinkedIn
  • ...

Cette liste n'est pas exhaustive et ne vise qu'à donner une idée de l'ampleur du problème.

La faille a été baptisée Log4Shell.

Que peuvent faire les utilisateurs contre Log4Shell ? Comment puis-je me protéger ?

Tu es en grande partie à la merci de Log4Shell. L'expert en sécurité Manuel Atug conseille les mesures suivantes:

  1. Sauvegarder toutes les données personnelles.
  2. Installer toutes les mises à jour qui seront proposées dans les jours à venir.

Que peuvent faire les administrateurs contre Log4Shell ?

Les administrateurs ont à leur disposition l'un des moyens les plus puissants. En modifiant légèrement leur système, ils peuvent bannir définitivement Log4Shell de leurs serveurs.

Log4Shell est corrigé par une mise à jour. Si Log4j fonctionne à la version 2.16.0, la faille n'est plus dans le code.

Cette mise à jour a déjà été ajoutée au dépôt officiel avant la publication de Log4Shell. C'est ce qu'on appelle la "Responsible Disclosure". Les découvreurs d'Alibaba ont collaboré avec la Apache Software Foundation et se sont engagés à garder le secret jusqu'à ce qu'Apache ait publié un correctif.

Pour savoir si une version vulnérable de Log4js fonctionne sur ton système, la société de sécurité Huntress Labs a publié le logiciel log4shell-tester. Celui-ci indique si ton système exécute log4j dans une version non actualisée.

Qu'est-ce que Log4j ?

Log4j est un composant de journalisation. Il enregistre les événements système qui peuvent être étudiés par les exploitants de serveurs afin de corriger les erreurs ou d'améliorer les performances.

Log4j n'est pas un nouveau composant, mais il est régulièrement mis à jour. Il a été inventé par le codeur Ceki Gülcü et publié en 2001. La mise à jour la plus récente avant la publication de la vulnérabilité date du 6 décembre 2021. Le correctif de la vulnérabilité a été intégré dans cette mise à jour.

Log4j est open source et peut être utilisé par tous.

Log4j est écrit dans le langage de programmation Java et est utilisé par des applications Java. Java est souvent utilisé pour le développement d'applications web.

Log4j est même si répandu que l'éditeur de sécurité Malwarebytes affirme que la faille est "partout", même sur Mars.

Qu'est-ce que Log4Shell ?

En raison de sa gravité, la faille de Log4j a reçu son propre nom. Elle s'appelle "Log4Shell". Dans les milieux de la sécurité, le terme "shell" suggère qu'une personne malveillante peut exécuter son propre code sur l'ordinateur vulnérable en utilisant la faille.

Log4Shell ne se produit pas seulement sur ton smartphone ou ton ordinateur. La faille se trouve dans toutes les applications qui utilisent Log4j. Parmi elles, de nombreux serveurs, car ils exécutent des logiciels avec Log4j.

Après sa découverte, Log4Shell a reçu une note indiquant à quel point la vulnérabilité est grave. Elle a obtenu un 10 sur une échelle de 1 à 10 et le Mitre, l'administration internationale des vulnérabilités, lui a attribué le numéro d'identification CVE-2021.
-44228
a été attribué.

En bref, un pirate informatique malveillant peut faire tourner n'importe quel code malveillant sur de nombreux serveurs dans le monde. Ou des composants middleware comme les commutateurs de réseau de la marque Cisco, par exemple.

Pire encore : Log4Shell est extrêmement facile à exploiter.

Qu'est-ce que l'exécution de code à distance ?

Remote Code Execution se traduit par "exécution de code à distance". Un attaquant peut se trouver aux Bahamas et exécuter du code sur un ordinateur suisse, voire le contrôler. En règle générale, cela ne devrait pas être le cas. Même sur un système Windows ou macOS, tu ne peux pas exécuter tout le code que tu veux. Si un système détecte un code malveillant, il affiche un message d'erreur et n'exécute pas le code.

L'exécution de code à distance contourne ce problème. Un attaquant peut faire n'importe quoi avec ton système. Peu importe s'il fait simplement planter ton serveur Minecraft ou s'il télécharge une copie de toutes les données des clients dans ta boutique en ligne.

Dans le cas de Log4Shell, une simple chaîne de caractères suffit pour exécuter un code étranger sur les serveurs de la plateforme de distribution de jeux Steam - sans que les mécanismes de sécurité ne se déclenchent.

Comment fonctionne Log4Shell ?

Log4Shell fonctionne en plusieurs étapes. C'est ainsi que la faille a réussi à survivre sans être détectée pendant plus d'une décennie. Log4Shell ne se déclenche que lorsque Log4j reçoit des commandes pour la "Java Naming and Directory Interface" (JNDI). Ce code malveillant, appelé "charge utile" dans le jargon technique, se présente comme suit dans le cas de l'exemple abstrait suivant :

Es braucht nur eine Code-Zeile, damit der Angriff zum Erfolg wird.
Es braucht nur eine Code-Zeile, damit der Angriff zum Erfolg wird.

attacker.com est un site web contrôlé par l'attaquant.

L'entreprise de sécurité LunaSec décrit le déroulement de Log4Shell comme suit :

  1. Les données de l'attaquant sont transmises au serveur via un protocole quelconque.
  2. Le serveur écrit les données dans un journal créé par Log4j. Si ces données contiennent la charge utile et font appel à JNDI, Log4j envoie alors une requête au site web de l'agresseur.
  3. La réponse du site web de l'attaquant contient la deuxième partie de l'attaque. LunaSec donne comme exemple le code http://second-stage.attacker.com/Exploit.class.
  4. La réponse de l'attacker.com est exécutée par le processus vulnérable qui tourne sur le serveur. Il s'agit de la véritable injection de code.
  5. Ce code injecté ouvre la porte à l'attaquant pour qu'il exécute d'autres codes.

La première phase de l'attaque donne à l'attaquant un accès au shell, la deuxième phase donne de la flexibilité à l'attaque, fait des dégâts ou vole des données.

Qui a découvert Log4Shell ?

Log4Shell a été découvert par Chen Zhaojun, membre de l'équipe Alibaba Cloud Security. Il a informé les développeurs Log4js et a publié la vulnérabilité avec eux le 9 décembre 2021, ce qui a laissé suffisamment de temps aux développeurs pour réparer la vulnérabilité, tester la réparation et ajouter le correctif au dépôt Github. Les personnes concernées peuvent ainsi réparer immédiatement leurs systèmes. Dans le jargon technique, on parle dans un tel cas de "Responsible Disclosure".

La faille de JNDI n'est pas nouvelle. En 2016 déjà, les hackers Alvaro Muñoz et Oleksandr Mirosh ont parlé de la vulnérabilité dans JNDI lors de la conférence de sécurité Black Hat.

Log4Shell est-il utilisé par des pirates malveillants ?

Oui, plus de 500 attaques ont été signalées par des inconnus qui cherchent à exploiter la méthode Log4Shell quelques heures seulement après sa découverte. Mais pour autant que l'on sache, ces attaques n'étaient pas ciblées. Elles ne doivent pas l'être non plus, car Log4j est utilisé partout. Tout ce que le script d'un pirate malveillant doit faire, c'est transmettre la première partie de l'attaque à n'importe quel serveur. Si une réponse est reçue, la deuxième phase de l'attaque est automatiquement lancée. S'il n'y a pas de réponse ou si la tentative est bloquée, c'est comme ça.

On ne sait pas pour toutes les attaques ce qui a été transmis dans la charge utile. Le chercheur en sécurité John Hammond parle de "botnets et de Bitcoin Miner", mais aussi de ransomware ou de chevaux de Troie.

Et chez nous ?

"Nos propres développements, entre autres les boutiques, ne sont pas concernés par Log4Shell. Ils n'utilisent pas Java", explique Martin Wrona, Security Software Engineer chez Digitec Galaxus.

Néanmoins, nos ingénieurs de sécurité ont été occupés. Certains systèmes internes avec lesquels tu n'es jamais en contact en tant que client final - les systèmes de stockage, par exemple - sont basés sur Java. Tout comme d'autres parties de l'infrastructure de l'entreprise. Là où il y a Java, il y a Log4j et aussi Log4Shell. "Nous avons eu du pain sur la planche, mais actuellement, tous les systèmes sont corrigés ou modérés par la configuration", explique Martin.

Cet article plaît à 61 personne(s)


User Avatar
User Avatar

Journaliste. Auteur. Hackers. Je suis un conteur d'histoires à la recherche de limites, de secrets et de tabous. Je documente le monde noir sur blanc. Non pas parce que je peux, mais parce que je ne peux pas m'en empêcher.

Ces articles pourraient aussi vous intéresser

  • En coulisse

    Pegasus : pas de protection, mais des mesures de sécurité

    par Dominik Bärlocher

  • En coulisse

    Signal pirate Cellebrite : ultimatum lancé au logiciel de surveillance d'espionnage

    par Dominik Bärlocher

  • En coulisse

    « Mario Forever » contient un crypto-malware : à la recherche d’une version propre

    par Florian Bodoky

Commentaire(s)

Avatar