IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Plus de 35 000 packages Java impactés par les vulnérabilités Log4j, selon un rapport de l'équipe open source de Google

Le , par Stéphane le calme

256PARTAGES

13  0 
L'équipe open source de Google a déclaré avoir analysé Maven Central, le plus grand référentiel de packages Java, et a découvert que 35 863 packages Java utilisent des versions vulnérables de la bibliothèque Apache Log4j. Cela inclut les packages Java qui utilisent des versions Log4j vulnérables à l'exploit Log4Shell d'origine (CVE-2021-44228) et un deuxième bogue d'exécution de code à distance découvert dans le correctif Log4Shell (CVE-2021-45046).

Log4j est une bibliothèque de journalisation open source basée sur Java utilisée dans des millions d'applications. Il y a quelques jours, une vulnérabilité dans Log4J a été découverte. Elle permet à un attaquant de provoquer une exécution de code arbitraire à distance s'il a la capacité de soumettre une donnée à une application qui utilise la bibliothèque log4j pour journaliser l'évènement. Cette attaque peut être réalisée sans être authentifié, par exemple en tirant parti d'une page d'authentification qui journalise les erreurs d'authentification. Les entreprises spécialisées en cybersécurité ont indiqué que le nombre d'attaques profitant de cette faille se multiplient.

James Wetter et Nicky Ringland, membres de l'équipe Google Open Source Insights, ont déclaré dans un rapport que, bien souvent, lorsqu'une faille de sécurité Java majeure est détectée, elle n'affecte généralement que 2% de l'index Maven Central. Cependant, les 35 000 packages Java vulnérables à Log4Shell représentent environ 8 % du total de Maven Central d'environ 440 000, un pourcentage que les deux ont décrit en utilisant un seul mot : « énorme ».

« Plus de 35 000 packages Java, représentant plus de 8 % du référentiel Maven Central (le référentiel de packages Java le plus important), ont été touchés par les vulnérabilités log4j récemment divulguées, avec des retombées généralisées dans l'industrie du logiciel. Les vulnérabilités permettent à un attaquant d'exécuter du code à distance en exploitant la fonctionnalité de recherche JNDI non sécurisée exposée par la bibliothèque de journalisation log4j. Cette fonctionnalité exploitable était activée par défaut dans de nombreuses versions de la bibliothèque.

« Cette vulnérabilité a captivé l'écosystème de la sécurité de l'information depuis sa divulgation le 9 décembre en raison à la fois de sa gravité et de son impact généralisé. En tant qu'outil de journalisation populaire, log4j est utilisé par des dizaines de milliers de progiciels (appelés artefacts dans l'écosystème Java) et de projets dans l'ensemble de l'industrie du logiciel. Le manque de visibilité de l'utilisateur sur ses dépendances et ses dépendances transitives a rendu l'application des correctifs difficile ; cela a également rendu difficile la détermination du rayon d'explosion complet de cette vulnérabilité. En utilisant Open Source Insights, un projet pour aider à comprendre les dépendances open source, nous avons examiné toutes les versions de tous les artefacts dans le référentiel central Maven pour déterminer l'étendue du problème dans l'écosystème open source des langages basés sur JVM, et pour suivre les efforts en cours pour atténuer les paquets affectés ».

Depuis que la vulnérabilité a été divulguée, Wetter et Ringland ont déclaré que la communauté avait répondu positivement et avait déjà corrigé 4 620 des 35 863 packages qu'ils avaient initialement trouvés vulnérables. Ce nombre représente 13% de tous les packages vulnérables. « Ceci, plus que toute autre statistique, témoigne des efforts massifs déployés par les mainteneurs open source, les équipes de sécurité de l'information et les consommateurs du monde entier », ont déclaré Wetter et Ringland.

À titre de comparaison, les deux citent des statistiques similaires pour les failles de sécurité Java passées, où environ 48% des bibliothèques en amont et en aval sont mises à jour pour corriger les vulnérabilités. Cependant, les deux ne s'attendent pas à ce que le problème Log4Shell soit entièrement corrigé, du moins pour les années à venir.

La principale raison en est que Log4j n'est pas toujours inclus en tant que dépendance directe dans les packages Java, mais est également une dépendance d'une autre dépendance, également appelée dépendance indirecte.

Dans ces situations, les responsables de packages Java vulnérables doivent attendre d'autres développeurs avant de pouvoir mettre à jour leurs propres applications, prolongeant ce processus pendant des semaines et des mois, dans certains cas.

Selon Google, Log4j est une dépendance directe dans seulement 7 000 packages sur les 35 000 bibliothèques totales, et de nombreux développeurs Java devront très probablement remplacer les dépendances indirectes qui n'ont pas été mises à jour avec des alternatives sûres.

Quelle est l'étendue de la vulnérabilité log4j ?

« Au 16 décembre 2021, nous avons constaté que 35 863 des artefacts Java disponibles de Maven Central dépendent du code log4j affecté. Cela signifie que plus de 8 % de tous les packages sur Maven Central ont au moins une version impactée par cette vulnérabilité. (Ces chiffres n'incluent pas tous les packages Java, tels que les binaires directement distribués, mais Maven Central est un puissant indicateur de l'état de l'écosystème.) En ce qui concerne l'impact sur l'écosystème, 8 %, c'est énorme. L'impact moyen sur l'écosystème des avis affectant Maven Central est de 2 %, avec une médiane inférieure à 0,1 %.

« Les dépendances directes représentent environ 7 000 des artefacts affectés, ce qui signifie que l'une de ses versions dépend d'une version affectée de log4j-core ou log4j-api, comme décrit dans les CVE. La majorité des artefacts affectés proviennent de dépendances indirectes (c'est-à-dire les dépendances de ses propres dépendances), ce qui signifie que log4j n'est pas explicitement défini comme une dépendance de l'artefact, mais est intégré comme une dépendance transitive ».


Quels sont les progrès actuels dans la réparation de l'écosystème JVM open source ?

« Nous avons compté un artefact comme corrigé si l'artefact avait au moins une version affectée et a publié une version plus stable (selon la gestion sémantique des versions) qui n'est pas affectée. Un artefact affecté par log4j est considéré comme corrigé s'il a été mis à jour vers 2.16.0 ou s'il a complètement supprimé sa dépendance à log4j.

« Au moment de la rédaction de cet article, près de cinq mille des artefacts concernés ont été corrigés. Cela représente une réponse rapide et un effort colossal à la fois de la part des mainteneurs de log4j et de la communauté plus large des consommateurs open source.

« Cela laisse plus de 30 000 artefacts affectés, dont beaucoup dépendent d'un autre artefact à corriger (la dépendance transitive) et sont probablement bloqués ».


Pourquoi est-il difficile de réparer l'écosystème JVM ?

« La plupart des artefacts qui dépendent de log4j le font indirectement. Plus la vulnérabilité est profonde dans une chaîne de dépendances, plus il faut d'étapes pour qu'elle soit corrigée. Le diagramme suivant montre un histogramme de la profondeur avec laquelle un package log4j affecté (core ou api) apparaît pour la première fois dans les graphiques de dépendance des consommateurs. Pour plus de 80 % des packages, la vulnérabilité est profonde de plus d'un niveau, avec une majorité affectée à cinq niveaux (et certains jusqu'à neuf niveaux). Ces packages nécessiteront des correctifs dans toutes les parties de l'arborescence, en commençant par les dépendances les plus profondes.

« Une autre difficulté est causée par les choix au niveau de l'écosystème dans l'algorithme de résolution des dépendances et les conventions de spécification des exigences.

« Dans l'écosystème Java, il est courant de spécifier les exigences de version "soft" - les versions exactes qui sont utilisées par l'algorithme de résolution si aucune autre version du même package n'apparaît plus tôt dans le graphique de dépendance. La propagation d'un correctif nécessite souvent une action explicite de la part des responsables pour mettre à jour les exigences de dépendance vers une version corrigée.

« Cette pratique contraste avec d'autres écosystèmes, tels que npm, où il est courant pour les développeurs de spécifier des plages ouvertes pour les exigences de dépendance. Les plages ouvertes permettent à l'algorithme de résolution de sélectionner la version la plus récemment publiée qui répond aux exigences de dépendance, introduisant ainsi de nouveaux correctifs. Les consommateurs peuvent obtenir une version corrigée lors de la prochaine version une fois le correctif disponible, ce qui propage rapidement les dépendances. (Cette approche n'est pas sans inconvénients*; l'ajout de nouveaux correctifs peut également entraîner de nouveaux problèmes.) »

Combien de temps faudra-t-il pour que cette vulnérabilité soit corrigée dans l'ensemble de l'écosystème ?

« C'est difficile à dire. Nous avons examiné tous les avis critiques publiés concernant les packages Maven pour avoir une idée de la rapidité avec laquelle les autres vulnérabilités ont été entièrement corrigées. Moins de la moitié (48 %) des artefacts affectés par une vulnérabilité ont été corrigés, nous pourrions donc devoir attendre longtemps, probablement des années.

« Mais les choses semblent prometteuses sur le front de log4j. Après moins d'une semaine, 4 620 artefacts affectés (~ 13 %) ont été corrigés. Ceci, plus que toute autre statistique, témoigne de l'effort massif des mainteneurs open source, des équipes de sécurité de l'information et des consommateurs à travers le monde ».

Le rapport a été publié avant la découverte d'une vulnérabilité sur le deuxième correctif, conduisant à la publication de la version 2.17.0 de Log4j

Les membres de l’Apache Software Fondation ont développé un patch en catastrophe pour corriger la vulnérabilité, la version 2.15.0. Des contournements sont également possibles pour réduire les risques.

Mais les chercheurs ont signalé qu'il existe au moins deux vulnérabilités dans le correctif, publié sous le nom de Log4J 2.15.0, et que les attaquants exploitent activement l'une d'entre elles ou les deux contre des cibles du monde réel qui ont déjà appliqué la mise à jour. Les chercheurs ont exhorté les organisations à installer un nouveau correctif, publié en tant que version 2.16.0, dès que possible pour corriger la vulnérabilité, qui est suivie comme CVE-2021-45046.

Le correctif précédent, ont déclaré les chercheurs mardi soir, « était incomplet dans certaines configurations autres que celles par défaut » et permettait aux attaquants d'effectuer des attaques par déni de service, ce qui facilite généralement la mise hors ligne des services vulnérables jusqu'à ce que les victimes redémarrent leur serveurs ou prennent d'autres mesures. La version 2.16.0 « résout ce problème en supprimant la prise en charge des modèles de recherche de messages et en désactivant la fonctionnalité JNDI par défaut », selon l'avis de vulnérabilité lié ci-dessus.

La version 2.15.0 ne résolvait pas un autre problème - CVE-2021-45046 - qui permettait à un attaquant distant contrôlant le Thread Context Map (MDC) de préparer une entrée malveillante à l'aide d'un modèle de recherche JNDI. Le résultat pourrait être l'exécution de code à distance, heureusement pas dans tous les environnements.

La version 2.16.0 a résolu ce problème. Mais elle n'a pas corrigé CVE-2021-45105, que l'Apache Software Foundation décrit comme suit :

« Les versions 2.0-alpha1 à 2.16.0 d'Apache Log4j2 ne protégeaient pas contre la récursivité incontrôlée des recherches auto-référentielles. Lorsque la configuration de la journalisation utilise une disposition de modèle autre que celle par défaut avec une recherche de contexte (par exemple, $${ctx:loginId}), les attaquants contrôlant les données d'entrée de Thread Context Map (MDC) peuvent créer des données d'entrée malveillantes contenant une recherche récursive, ce qui entraîne une StackOverflowError qui mettra fin au processus. Ceci est également connu sous le nom d'attaque DOS (Denial of Service) ».

Source : Google

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de gabriel21
Membre chevronné https://www.developpez.com
Le 21/12/2021 à 23:48
Je vois dans les crises sécuritaires actuelles un problème plus profond :
L'architecture système repose sur une notion de couche et les développeurs ne comprennent plus rien aux bases, voir en ont rien à "bip".
Combien de fois j'ai pu entendre, j'en ai rien à faire de comment ça marche tant que ça marche de la part de nombreux développeurs (et pas uniquement Java ).
Il nous font "bip" tous ces administrateurs système avec leur "bip" de mise à jour qui casse mon super code de la mort qui tue tout. Parce que le problème, ce n'est pas nous, mais forcément les autres...
Combien de fois je suis épouvanté par le fait que juste pour afficher "Hello World", il faut un serveur avec 2 processeurs et 64Go de mémoire? Moi qui es commencé sur des systèmes avec des Pentium III et 64 Mo de ram.
Car pourquoi se faire "bip" par les dépendances quand il suffit d'intégrer un framework de 4 Go pour 3 fonctions qui pèsent 3Ko, et plusieurs fois dans le projet...

Mais moi qui fait un peu de programmation, mais qui suis administrateur système de vocation, je pleure.
Pour moi, le minimum est le mieux. Je pleure quand je dois faire 5 mises à jour de noyau Linux parce qu’il y a une faille sur une fonctionnalité que nous n'utilisons pas, mais vous comprenez avoir une personne qui compile un noyau qui correspond à notre besoin, ça coûte trop chère alors on utilise un noyau générique qui pèse 150Mo alors que l'on pourrait utiliser un noyau de 50 Mo qui ne demande pas de mise à jour régulière. Je regrettes ces serveur qui ont un Uptime de 3000 jours, car ayant un noyau optimisé pour leur matériel et n'utilisant pas le chargement dynamique de module du noyau Linux, n'ont pas de failles du moins connue...
9  0 
Avatar de vanquish
Membre chevronné https://www.developpez.com
Le 25/01/2022 à 10:52
Je suis dans le gratuit (pas l'open source) et je suis régulièrement confronté au problème.
C'est toujours un peu désagréable mais très compréhensible.
Déjà généralement votre interlocuteur est dans la structure depuis 3 ans, alors que le produit est là depuis 15.
Il sait que c'est là, mais n'a aucune idée du modèle économique, parce que ce n'est pas son boulot et qu'il a 150 autres sous-système qu'il ne fait que superviser.

Et en vrai, c'est rarement une question d'argent.
Quand on lui explique que c'est gratuit, ça lui pose souvent un problème, car gratuit cela veux dire pas de contrat et donc personne sur qui rejeter la responsabilité en cas de problème.
Il en a, rétrospectivement, des sueurs froides.
Certains utilisateurs qui pourraient avoir le produit gratuitement préfère payer pour avoir un lien contractuel.
9  1 
Avatar de tabouret
Membre éprouvé https://www.developpez.com
Le 25/01/2022 à 10:24
Quelqu'un peut m'expliquer le lien entre Curl et Log4j?

Sinon on peut aussi demander à Nespresso s'il sont sensibles à Log4j dans la foulée.
6  0 
Avatar de Escapetiger
Expert éminent sénior https://www.developpez.com
Le 24/12/2021 à 13:34
Nous sommes dans un forum spécialisé mais tout de même pour une question de clarté avec tous ces sigles :

IPS
« Un système de prévention d'intrusion (ou IPS, intrusion prevention system) est un outil des spécialistes en sécurité des systèmes d'information, similaire aux systèmes de détection d'intrusion (ou IDS, intrusion detection system), permettant de prendre des mesures afin de diminuer les impacts d'une attaque. C'est un IDS actif, il peut par exemple détecter un balayage automatisé malveillant, et bloquer les ports.

Les IPS peuvent donc parer les attaques connues et inconnues. Comme les IDS, ils ne sont pas fiables à 100 % et risquent même en cas de faux positif de bloquer du trafic légitime.
(.../...) »

EDR
« Un logiciel de type EDR désigne une technologie émergente de détection des menaces sur les EndPoints (ordinateurs, serveurs). Ce terme Endpoint Detection and Response (EDR), est utilisé pour la première fois en juillet 2013 par Anton Chuvakin1 de la société Gartner.
(.../...)
Combiné avec un moteur basé sur de l'intelligence artificielle, le logiciel EDR est très réactif dans la détection et l'arrêt de menaces (Malwares, virus, attaques zero Day, menaces persistantes avancées, ...). L'intelligence artificielle lui permet d'être auto-apprenant et de ne pas devoir se connecter sur internet pour mettre à jour des bases de données.
»

Sources Wikipedia :

Système de prévention d'intrusion

Endpoint detection and response
5  0 
Avatar de sekaijin
Expert éminent https://www.developpez.com
Le 24/12/2021 à 16:40
Lister les dépendances par transitivité pour connaitre les projet "Potentiellement" impactés
N'est en soit pas très compliqué mais très largement insuffisant surtout si on fait ça sur maven central.
En effet Maven Central garde aussi toute les vielles versions donc même s'il y a eu des corrections les version non corrigé restent.

On peut très vite avoir des chiffres énorme sans pour autant que ce soit la cata.

Quant à ce que que j'ai lu ici sur YAKAFOKON c'est très loin d'être si facile. Je m'occupe d'un outil qui est composé de centaines d'éléments divers avec un chargement dynamique la bête a tourné 8 ans sans interruption, avec des mise à jour à chaud, un changement de serveur physique à chaud (juste des arrêts partiels de certain composants quelques minutes).
Arriver à qualifier la compatibilité de plusieurs centaines de composants est un très long travail. Il nous est déjà arrivé de revenir en arrière après plusieurs mois de travail parce qu'un composants n'était plus compatible avec l'ensemble.

Quant à l'approche de google si j'avais suivi la même approche j'aurais à ce jour environs 200 projet impactés.
Hors tous dépendent d'une librairie qui est compilé avec log4j (donc une dépendance). Mais cette librairie importe une partie seulement de log4j et supprime tout le code inutile. La partie impactée par le PB de sécurité n'est plus dans le code de la lib. les 200 projets ne sont donc pas impactés.

à contraio je suis tombé sur un dev qui importe par transitivité un clone de log4j qui lui embarque le code en question et là l'approche de Google ne l'a pas trouvé et pour cause. Ouf il s'agissait d'un démonstrateur pas de prod.

Donc à tous les YAKAFOKON Oui il est très simple dans le gestionnaire de dépendance de surcharger la version de log4j pour en choisir une non impactée.
Mais sur les millions de lignes de code comment garantir que ce changement ne va pas introduire de bug ?
On pourrait imaginer que finalement ce ne sont que des log c'est pas si grave si on n'a pas la trace tant que le prog fonctionne mais voilà un changement de version de log4j sans précaution et up un nullpointerexception dans un log.info et le prog ne fonctionne plus.

Il n'y a rien de simple. C'est un travail permanent, une vigilance, et des mois de tests pour valider un assemblage.

A+JYT
5  0 
Avatar de TJ1985
Membre chevronné https://www.developpez.com
Le 14/01/2022 à 9:34
C'est ce qui m'a toujours effrayé lorsque j'ai assisté à l'explosion des bibliothèques et plateformes en ligne. Pour avoir commis une fois un bug dans une librairie partagée, je mesure pleinement l'impact que ça peut avoir. Là, j'avais encore la main dessus, et sur l'ensemble des applications qui l'utilisaient et ça a quand même fait des dégâts. Mais si elle avait été lâchée dans la nature... à moi la peur !
J'ai l'impression que nous avons perdu la tête. Toutes les entreprises ne font pas du commerce en ligne, toutes n'ont pas besoin d'un cloud externe et beaucoup bénéficieraient des services d'un bon analyste bien plus que d'une SSII avide de rentabilité - pour elle-même.
6  1 
Avatar de gabriel21
Membre chevronné https://www.developpez.com
Le 25/01/2022 à 11:36
Le mail ressemble beaucoup à des mails que je peux voir passé en interne ou du client quand le service SSI panique et comme il savent pas où ils habitent, ni ce que font les administrateurs et les développeurs, ils leurs posent la totalité des questions que le RSSI ou tout autre directeur leur a posé.
L'affaire est cocasse, surtout la réponse... Ah bon, vous ne travaillez pas pour nous...
Il s'agit là plus d'une incompétence personnel que d'une société, même si l'ultra procéduralisation et les équipes aux périmètres restreints et hermétiques peuvent être la cause profonde de ce genre de situation.
J'ai par exemple eu le cas d'une demande pour savoir si on avait bien patché une vulnérabilité noyau Windows sur nos serveurs applicatifs qui tournaient sur RHEL et AIX....
Des perles de ce type, j'en vois malheureusement très souvent.
5  0 
Avatar de dolu02
Membre averti https://www.developpez.com
Le 25/01/2022 à 10:47
Citation Envoyé par walfrat Voir le message
Personnellement je demande a voir la fin de l'histoire avant de basher la société.

Le premier mail de la société peut paraître agressif et stupide mais ça peut ni plus ni moins venir de personnes qui font ce genre de mail aussi bien à des sociétés privés sous contrat qu'a des gens du monde open source sans contrat, car ils ignorent la différence.

En outre le second mail de la société me paraît être un signe qu'ils sont pas si mal tombé.
C'est justement ce qui leur est reproché, d'être ignorants. S'ils ont des IT en interne (on peut le supposer pour une telle entreprise), pourquoi ne pas leur demander ce qu'il faut faire?
5  1 
Avatar de valtena
Membre confirmé https://www.developpez.com
Le 26/01/2022 à 15:06
Citation Envoyé par AoCannaille Voir le message
Le ton n'est pas arrogant, le mail est lisse, factuel et surtout impersonnel. En un mot : Une communication Professionnelle. Si tu trouve ce mail arrongant, j'espère que tu ne travaille pas dans des grosses boites car c'est tout simplement la seule méthode qu'ils ont pour communiquer par écrit.
Le mail arrive avec pas mal d'impératif. Quand tu lis la tournure du mail la réponse est due. C'est assez arrogant en dehors d'un lien de subordination. Qu'il soit lissé et automatisé n'enlève rien à la chose.
5  1 
Avatar de gabriel21
Membre chevronné https://www.developpez.com
Le 22/12/2021 à 12:23
Citation Envoyé par tabouret Voir le message
Un uptime de 300 jours est inconcevable d'un point de vue sécurité.
Peux tu expliquer en quoi c'est un problème de sécurité?
Si tu as :
- un noyau dédié qui n'embarque que le nécessaire et surtout pas de modules dynamiques (utile sur les stations de travail, inutile sur les serveurs);
- pas de mise à jour de sécurité sur les parties intégrés au noyau;
- pas besoin des nouvelles fonctionnalités;
- pas besoin des optimisations.

Il s'agit là de préconisations faite par l'ANSI, il y a encore 3 ans, lors d'un audit de sécurité sur les serveurs d'un OIV. L'agence disait déjà ça, il y a 20 ans pour les Unix, Linux, tout en conseillant l'application immédiates des patchs utiles avec redémarrage si nécessaire, voir passage sur ban de test pour certains serveurs industriels dont un arrêt brutal peux avoir des conséquences dramatiques.

Le fait que la majorité des patchs Windows nécessite un redémarrage est une problématique interne à Microsoft et effectivement sous Windows un Uptime de plus de 35 jours est purement suicidaire. Chez certains OIV, les serveurs Windows redémarrent automatiquement tous les 30 jours, ce qui est assez rare car finalement, la plupart serveurs ont tendance à être redémarré tous les 15 jours. C'est d’ailleurs une des raisons qui font que je me suis spécialisé sous Linux.
4  1