2022-09-30 20:11 Temps de lecture : 24 min

Comment analyser et corriger la vulnérabilité Log4j ?

La faille de sécurité Log4j représente l'une des menaces les plus sérieuses pour les systèmes informatiques contemporains.

La gestion des logs est une fonction essentielle des applications modernes, et la bibliothèque de logging Log4j est une référence dans ce domaine.

Cette bibliothèque est intégrée dans un grand nombre d'applications, de services et de systèmes. De ce fait, une vulnérabilité Log4j découverte l'année dernière affecte toutes les applications qui l'utilisent.

Face aux préoccupations croissantes en matière de cybersécurité, les organisations et les particuliers prennent des mesures pour protéger leurs applications, systèmes et informations.

La découverte de cette faille a intensifié la pression sur les experts en sécurité et les entreprises.

Par conséquent, la détection et la correction de la vulnérabilité Log4j sont primordiales si vous souhaitez sécuriser vos données, votre réseau, votre réputation et la confiance de votre clientèle.

Dans cet exposé, nous allons explorer la vulnérabilité Log4j, ainsi que les méthodes pour la localiser et la corriger.

Commençons par définir ce qu'est Log4j et son utilité.

Qu'est-ce que Log4j ?

Log4j est un outil de journalisation open source, écrit en Java, principalement utilisé pour stocker, formater et diffuser les enregistrements de logs générés par les applications et les systèmes, facilitant ainsi la recherche d'erreurs. Les enregistrements peuvent varier : des pages web aux données de navigateur, en passant par les informations techniques d'un système où Log4j est en fonction.

Plutôt que de développer du code de zéro, les développeurs peuvent intégrer la bibliothèque Log4j à leurs applications.

Grâce à Log4j, les développeurs peuvent suivre l'ensemble des événements liés à leurs applications avec des logs précis. Cela leur permet de superviser les applications, d'identifier rapidement les problèmes et de les résoudre avant qu'ils ne deviennent plus complexes, tant au niveau des performances que de la sécurité.

Cette bibliothèque, conçue en Java par Ceki Gülcü, a été lancée en 2001 sous la licence Apache 2.0. Elle utilise les services Java Naming and Directory Interface (JNDI) pour permettre aux applications de communiquer avec d'autres applications, comme LDAP, DNS ou CORBA, et de profiter de la fonctionnalité de répertoire et de nommage pour les applications basées sur Java. Log4j s'appuie sur trois composants pour son fonctionnement :

  • Des enregistreurs, pour saisir les enregistrements de log
  • Des mises en page, pour formater ces logs de différentes manières
  • Des appenders, pour diffuser les logs vers différentes destinations

Log4j est, de fait, l'une des bibliothèques de logging les plus populaires sur internet, utilisée par des organisations de divers secteurs et pays. Elle a été intégrée à de nombreuses applications, y compris les principaux services cloud de Google, Microsoft, Apple, Cloudflare, Twitter, etc.

Son créateur, l'Apache Software Foundation, a développé Log4j 2, une version améliorée de Log4j, pour pallier les lacunes des versions précédentes. L'an passé, une faille a été découverte dans Log4j, qui, si elle n'est pas corrigée, peut permettre à des individus malveillants de pénétrer les applications et les systèmes, de subtiliser des données, d'infecter des réseaux et de mener d'autres activités néfastes.

Examinons cela plus en détail.

Qu'est-ce que Log4Shell – la vulnérabilité Log4j ?

Log4Shell est une faille de cybersécurité grave de la bibliothèque Log4j, qui impacte le fonctionnement central de cette dernière. Elle permet à un attaquant de contrôler un appareil ou une application connectée à internet en exécutant du code à distance. S'ils y parviennent, ils peuvent :

  • Exécuter n'importe quel code sur l'appareil ou le système
  • Accéder à l'ensemble des réseaux et données
  • Modifier ou crypter tout fichier sur l'application ou l'appareil compromis

Cette vulnérabilité a été signalée pour la première fois le 24 novembre 2021 par Chen Zhaojun, un expert en sécurité chez Alibaba (géant chinois de l'e-commerce). La vulnérabilité touchait leurs serveurs Minecraft, découverte par l'équipe de sécurité cloud d'Alibaba le 9 décembre.

Par la suite, le NIST a publié cette vulnérabilité dans la base de données nationale des vulnérabilités, sous le nom de CVE-2021-44228. L'Apache Software Foundation a ensuite attribué à cette vulnérabilité une note de 10 sur l'échelle de gravité CVSS. Une telle note est rare et signale une faille très grave, car elle a un potentiel d'exploitation large et simple, entraînant d'importants dégâts pour les organisations et les individus.

En réponse, Apache a publié un correctif pour cette vulnérabilité, mais certains points n'ont pas été résolus, ce qui a mené à d'autres vulnérabilités :

  • CVE-2021-45046, qui a facilité les attaques par déni de service (DoS) via les recherches JNDI
  • CVE-2021-45105, permettant aux pirates de manipuler les informations du contexte de thread et de provoquer des attaques DoS en interprétant une chaîne conçue sur mesure
  • CVE-2021-44832, affectant toutes les versions de Log4j 2 via l'injection de code à distance (RCE)

Comment Log4Shell fonctionne-t-elle ?

Afin de comprendre la sévérité et les dommages que Log4Shell peut engendrer, il est utile de connaître le fonctionnement de cette faille Log4j.

La vulnérabilité Log4Shell permet à un attaquant d'injecter à distance n'importe quel code arbitraire dans un réseau et d'en prendre le contrôle total.

Cette attaque débute avec la bibliothèque de journalisation, comme Log4j, qui collecte et stocke les informations de log. En l'absence de bibliothèque de journalisation, toutes les données du serveur seraient archivées instantanément après leur collecte.

Cependant, si vous souhaitez analyser ces données ou prendre des mesures basées sur des informations de log spécifiques, une bibliothèque de journalisation est nécessaire pour traiter les données avant leur archivage.

En raison de la faille Log4j, tout système ou application utilisant Log4j devient vulnérable aux cyberattaques. La bibliothèque de journalisation exécute le code en fonction des données saisies. Un pirate peut contraindre la bibliothèque de log à exécuter un code malveillant, la vulnérabilité lui permettant de manipuler les données saisies.

Pendant ce temps, de nombreuses actions se déroulent en arrière-plan. Lorsque Log4j reçoit une chaîne spécialement conçue, elle appelle un serveur LDP et télécharge le code hébergé dans son répertoire pour l'exécuter. Ainsi, les attaquants peuvent créer un serveur LDAP pour stocker le code malveillant qui leur permettra de contrôler tout serveur où le code est exécuté. Ils envoient ensuite une chaîne dirigeant ce code malveillant vers une application ou un système cible et en prennent le contrôle total.

Voici comment la vulnérabilité Log4j peut être exploitée :

  • Un attaquant repère un serveur avec une version vulnérable de Log4j.
  • Il envoie au serveur cible une requête get avec le lien de son serveur LDAP malveillant.
  • Le serveur cible, au lieu de vérifier la requête, se connecte directement à ce serveur LDAP.
  • Les attaquants envoient ensuite au serveur cible une réponse du serveur LDAP contenant du code malveillant. En raison de la faille de Log4j, qui autorise la réception et l'exécution du code sans vérification, le pirate peut profiter de cette faiblesse pour infiltrer le serveur cible et exploiter les systèmes, réseaux et appareils connectés.

Comment la vulnérabilité Log4j peut-elle nuire aux utilisateurs ?

La vulnérabilité Log4j est préoccupante en raison de son usage étendu dans une multitude d'applications logicielles et de systèmes.

La journalisation étant une fonctionnalité fondamentale dans la plupart des applications logicielles et Log4j une solution phare dans ce domaine, elle se retrouve dans divers systèmes.

Parmi les services et applications populaires utilisant Log4j, on trouve Minecraft, AWS, iCloud, Microsoft, Twitter, les routeurs internet, les outils de développement de logiciels, les outils de sécurité, etc. Les attaquants peuvent donc cibler un grand nombre d'applications, de services et de systèmes d'utilisateurs à domicile, de développeurs de code, de fournisseurs de services, et d'autres professionnels ou particuliers.

De plus, la vulnérabilité Log4j est extrêmement facile à exploiter. Le processus global ne nécessite pas de compétences de niveau expert pour mener une attaque. C'est la raison pour laquelle le nombre d'attaques exploitant cette vulnérabilité augmente.

Les conséquences de la faille Log4j sont :

  • Attaques DoS
  • Attaques de la chaîne d'approvisionnement
  • Extraction de cryptomonnaie
  • Injections de logiciels malveillants tels que les rançongiciels et les chevaux de Troie
  • Injection de code arbitraire
  • Exécution de code à distance

Et bien d'autres encore.

Ces attaques peuvent vous faire perdre le contrôle de vos applications, systèmes et appareils. Vos données peuvent devenir la proie d'attaquants qui pourraient les vendre, les manipuler ou les exposer au grand jour. Cela peut nuire à votre entreprise en termes de confidentialité des données client, de confiance, de secrets d'organisation, voire de vos ventes et revenus, sans mentionner les risques de non-conformité.

Selon un rapport, plus de 40 % des réseaux d'entreprise mondiaux ont été attaqués en raison de cette faille.

Par conséquent, même si vous n'utilisez pas de version vulnérable de Log4j dans vos applications, vos intégrations tierces peuvent l'utiliser, rendant votre application sensible aux attaques.

Il est à noter que toutes les versions de Log4j antérieures à Log4j 2.17.0 sont affectées. Il est donc impératif de mettre à jour l'enregistreur si vous l'utilisez. De plus, les fournisseurs connus qui sont impactés par cette faille sont Adobe, AWS, IBM, Cisco, VMware, Okta, Fortinet, etc. Si vous utilisez leurs services, surveillez constamment vos applications et utilisez des systèmes de sécurité pour résoudre les problèmes dès leur apparition.

Comment détecter les programmes affectés par Log4j et résoudre les problèmes

La faille Log4Shell a un score de 10 sur l'échelle CVSS. De ce fait, tous les problèmes de Log4j ne sont pas encore corrigés. Il est possible que vous ou votre fournisseur tiers utilisiez Log4j, que vous ayez intégré à votre application.

Par conséquent, si vous souhaitez sécuriser vos données, vos systèmes et votre réseau, vous devez suivre certaines étapes de correction.

#1. Mettre à jour votre version de Log4j

Mettre à jour votre version actuelle de Log4j vers la version Log4j 2.17.1 est la méthode de correction la plus efficace si vous voulez protéger votre appareil et vos applications contre les attaques liées à la faille Log4j.

Log4Shell est un type d'attaque zero-day qui peut potentiellement perturber votre écosystème logiciel. Apache a corrigé certaines vulnérabilités dans les versions récentes. Cependant, si votre système a été compromis avant la mise à niveau, vous restez à risque.

Ainsi, en supposant ce scénario, il est nécessaire non seulement de mettre à jour la version, mais aussi de mettre en place immédiatement vos procédures de réponse aux incidents. Il faut s'assurer qu'aucune faille n'est présente dans vos systèmes et applications, et atténuer les attaques. Vous devez également vérifier tous les logs de votre serveur pour identifier des signes de compromission (IOC), et surveiller vos systèmes et votre réseau en permanence.

#2. Utiliser les derniers pare-feux et systèmes de sécurité

Les pare-feux, comme les pare-feux d'application web (WAF) et les pare-feux de nouvelle génération, peuvent contribuer à protéger votre périmètre réseau contre les attaquants. Ils analysent les paquets de données entrants et sortants et bloquent les paquets suspects. Utilisez donc les derniers pare-feux pour votre réseau, et définissez des règles de sortie strictes sur vos serveurs pour prévenir les attaques liées à la faille Log4j.

Bien que les attaquants puissent contourner les pare-feux, ils offrent une certaine protection en bloquant les requêtes des attaquants.

De plus, mettez à jour l'ensemble de vos systèmes de sécurité (systèmes de détection d'intrusion (IDS), systèmes de prévention d'intrusion (IPS), etc.) avec les dernières signatures et règles. Ces systèmes contribueront à bloquer ou filtrer le trafic RMI et LDAP qui tente de se connecter à un serveur LDAP malveillant.

#3. Mettre en œuvre l'AMF

L'activation de l'authentification multifacteur (MFA) dans vos applications et systèmes renforcera la sécurité contre les attaquants. Elle fournira une deuxième couche de sécurité, même si un attaquant parvient à franchir la première. Vous pouvez utiliser des données biométriques (empreintes digitales, scan de l'iris, etc.), définir une question de sécurité ou activer un code PIN de sécurité.

L'utilisation de l'AMF augmentera la difficulté et le temps nécessaires aux attaquants pour réaliser une attaque complète. De plus, elle peut également vous alerter immédiatement en cas d'incident, afin que vous puissiez prendre des mesures correctives tant qu'il est encore temps.

Il est également nécessaire d'appliquer des politiques VPN strictes afin de limiter les violations de données. Cela permettra aux utilisateurs d'accéder en toute sécurité à vos systèmes, depuis n'importe quel endroit, sans craindre les attaques.

#4. Modifier les propriétés du système

Si vous ne pouvez pas effectuer une mise à jour vers la dernière version de la bibliothèque Log4j, il est impératif de modifier immédiatement les propriétés de votre système Java si vous utilisez une version allant de Log4j 2.10 à Log4j 2.14.1.

Vous devez la configurer de manière à bloquer les recherches que les attaquants utilisent pour identifier les vulnérabilités, et trouver ensuite des moyens de les exploiter.

#5. Supprimer JNDI

Cette faille de sécurité critique est due à sa conception. Le plugin JNDI Lookup présente un défaut de conception qui permet aux attaquants de mener une attaque.

JNDI est utilisé pour l'exécution de code en fonction des données d'entrée dans son log, que chacun peut manipuler facilement car le log accepte toute requête sans vérification.

Des chercheurs en sécurité ont découvert que ce plugin autorisait toujours les données non analysées depuis sa sortie en 2013 et les envoyait à la bibliothèque Log4j.

La faille Log4j peut donc être exploitée via une simple injection de chaîne de caractères. Dès que l'attaquant l'injecte, le logger acceptera l'opération demandée dans la chaîne et l'exécutera immédiatement sans vérification.

Par conséquent, pour sécuriser vos systèmes et applications, il est impératif de désactiver la classe JndiLookup. Cela empêchera le logger d'agir en fonction des données du log.

En réalité, la recherche JNDI est désactivée par défaut dans Log4j 2.16.0, dans le but de sécuriser vos applications et systèmes.

Si vous utilisez une version de Log4j antérieure à la 2.16.0, assurez-vous de désactiver la recherche JNDI.

#6. Contacter vos fournisseurs

Même si vos pare-feux et systèmes de sécurité sont à jour, votre version de Log4j est mise à jour, la recherche JNDI désactivée, etc., il ne faut pas relâcher votre vigilance.

Même si vous n'utilisez pas de version vulnérable de Log4j dans vos applications, vos fournisseurs tiers peuvent l'utiliser. Il est donc possible de ne pas savoir comment votre application ou votre système a été piraté, car le problème réel pourrait être lié à votre intégration tierce.

Il est donc essentiel de dialoguer avec vos fournisseurs pour vous assurer qu'ils ont également mis à jour Log4j vers la dernière version et appliqué les autres pratiques de sécurité mentionnées précédemment.

#7. Utiliser un scanner de vulnérabilité Log4j

Il existe de nombreux outils d'analyse des vulnérabilités Log4j sur le marché, qui vous permettent de détecter facilement les failles Log4j dans vos systèmes et applications.

Lorsque vous recherchez ces outils, vérifiez leurs taux de précision, car beaucoup génèrent de faux positifs. Choisissez également un outil qui répond à vos besoins, car certains peuvent être spécialisés dans l'identification de la faille Log4j, le signalement de l'exposition, ou la correction de la faille.

Si votre objectif est la détection, choisissez un scanner de vulnérabilité Log4j capable de détecter le problème, ou un outil qui peut à la fois détecter et résoudre le problème.

Voici quelques outils d'analyse Log4j réputés :

  • Microsoft 365 Defender : Microsoft propose une gamme de solutions et d'outils de sécurité pour vous aider à détecter et à prévenir les exploits Log4j sur votre réseau. Il vous permettra de repérer les tentatives d'exécution et d'exploitation de code à distance, vous protégeant des failles Log4j sur les appareils Windows et Linux.
  • Amazon Inspector et AWS : Amazon a créé un outil d'analyse pour détecter la faille Log4j sur les instances Amazon EC2 et Amazon ECR.
  • CloudStrike Archive Scan Tool (CAST) : CloudStrike a également conçu un outil d'analyse performant pour détecter la faille Log4j et vous aider à résoudre les problèmes à temps avant que les attaquants ne puissent l'exploiter.
  • Détection Google Cloud Logging : la solution de détection de logs cloud de Google vous permet de détecter les exploits Log4j grâce à l'explorateur de logs. Vous pouvez créer une requête de log dans cet outil et rechercher des chaînes d'exploitation potentielles.
  • Google a également créé log4jscanner, un scanner de système de fichiers open source pour détecter la faille Log4j.
  • BurpSuite Log4j Scanner : Il s'agit d'un plugin de sécurité destiné aux professionnels et aux entreprises, conçu pour les aider à détecter la faille Log4j.
  • Huntress Log4Shell Vulnerability Tester : cet outil génère un identifiant unique aléatoire que vous pouvez utiliser lors du test de vos champs de saisie. Si une faille est détectée dans l'application ou le champ de saisie, son serveur LDAP sécurisé mettra fin instantanément à la connexion malveillante et vous protégera.
  • WhiteSource Log4j Detect : WhiteSource a conçu un outil CLI gratuit, WhiteSource Log4j Detect, hébergé sur GitHub, pour vous aider à détecter et à corriger les failles Log4j – CVE-2021-445046 et CVE-2021-44228.
  • Outils d'analyse open source JFrog pour Log4j : JFrog a créé diverses solutions et outils open source pour détecter les vulnérabilités Log4j dans vos binaires et votre code source.

Conclusion

La faille Log4j représente un problème de sécurité critique. Cette bibliothèque de journalisation étant largement utilisée dans diverses applications et systèmes, la faille Log4j s'est répandue, permettant aux attaquants d'exploiter un grand nombre de systèmes et d'applications.

Par conséquent, si vous souhaitez protéger vos systèmes et applications de cette faille, il est impératif de mettre à niveau la bibliothèque Log4j vers la dernière version et d'appliquer les meilleures pratiques de sécurité décrites ci-dessus.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.