
Outil d'analyse et de correction pour CVE-2021-44228 et les préoccupations liées à log4j.
| Télécharger le binaire Linux |
| Télécharger le .jar Java |
🚑 Remarque : les clients SAS souhaitant corriger leurs déploiements SAS 9.4 ou SAS Viya 3.x doivent suivre les instructions spécifiques fournies dans la documentation du SAS Help Center.
Ce projet est un fork précoce de logpresso/CVE-2021-44228-Scanner, initialement modifié pour inspecter récursivement les archives et pour ajouter la prise en charge de la compression tar/gz. Depuis le fork, le projet a évolué en parallèle de l'original et implémente de nombreuses fonctionnalités similaires, même si la majorité du code a été réécrite. Alors que la fonctionnalité « fix » d'origine a été remplacée par une méthode patch qui prend en charge certains cas particuliers d'imbrication profonde et est plus tolérante aux échecs et aux restaurations, le mécanisme de détection (la commande scan) continue de fonctionner de manière très similaire à l'original.
Vous pouvez télécharger une version de l'outil depuis la page Releases ou en suivant les liens en haut de cette page. L'image native est un exécutable autonome qui fonctionnera sur EL7 et versions ultérieures. Le fichier jar peut être exécuté avec java -jar sur JRE 1.8+. C'est actuellement la meilleure façon de l'exécuter sur d'autres plateformes et sur des versions plus anciennes de glibc (y compris Windows, AIX, Solaris, etc.).
Après avoir téléchargé l'image native, il est nécessaire d'exécuter chmod +x sur le fichier avant de pouvoir le lancer.
La syntaxe des commandes est la même, que vous appeliez le .jar ou l'exécutable natif. Par exemple, ceci :
./loguccino help
est fonctionnellement identique à ceci
java -jar ./loguccino-all.jar help
La commande loguccino help fournit la documentation sur les commandes disponibles.
./loguccino scan /path/to/approot
Cela parcourra tous les sous-répertoires de /path/to/approot, y compris en traversant récursivement toutes les archives imbriquées .tar.gz, .tgz, .tar, .zip, .ear, .war et .jar.
Un fichier .csv nommé loguccino-scan-[datetime].csv sera créé dans le répertoire de travail, contenant les données suivantes :
/opt/sas/config/Lev1/Web/Staging/sas.webreportstudio4.4.21w47AIX.ear/install/deploy/21w47SASConfig/Lev5/Web/Staging/sas.webreportstudio4.4.21w47AIX.earopt/sas/config/Lev1/Web/Staging/sas.webreportstudio4.4.21w47AIX.ear::sas.webreportstudio.war::WEB-INF/lib/log4j-core-2.1.jarPlus d'informations sur la commande scan sont disponibles via ./loguccino help scan.
Si des vulnérabilités sont trouvées, le fichier loguccino-scan-[datetime].csv est utilisé comme entrée pour la commande patch :
./loguccino patch ./loguccino-scan-23122021003311.csv
Cela supprime chaque vulnérabilité trouvée et crée un répertoire loguccino-patch-[timestamp] contenant une sauvegarde de chaque fichier corrigé. Lorsqu'un fichier a été corrigé pour plusieurs vulnérabilités (comme une archive de sauvegarde plus volumineuse contenant plusieurs outils ou versions de logiciels), plusieurs versions du fichier corrigé sont sauvegardées à chaque étape du processus pour permettre une restauration progressive en cas d'échec.
Remarque :
Corriger un fichier sur le disque ne corrige pas la version du programme déjà en cours d'exécution sur l'hôte. N'oubliez pas que vous devez arrêter les services / applications concernés avant la correction et les redémarrer après la correction pour que les changements prennent effet.
Plus d'informations sur la commande patch sont disponibles via ./loguccino help patch.
Lors de l'analyse des vulnérabilités, certaines archives peuvent être signalées comme corrompues (cela se produit également avec les archives imbriquées où les méthodes de compression ne correspondent pas à l'extension de l'archive). La commande scan imprimera le chemin vers celles-ci dans le fichier logpresso-scan-[datetime].log. Si elles sont jugées significatives, ces archives doivent être décompressées et inspectées (ou analysées) manuellement pour confirmer qu'elles sont en réalité corrompues.
Si vous rencontrez des bogues ou un comportement inattendu, veuillez ouvrir un problème et joindre toutes les étapes pour reproduire le bogue ainsi que d'autres informations contextuelles.
Les demandes de tirage (pull requests) et les mises à jour du code sont les bienvenues et encouragées.