
Herramienta de escaneo y parcheo para CVE-2021-44228 y problemas relacionados con log4j.
| Descargar Java .jar |
🚑 Nota: los clientes de SAS que deseen parchear sus implementaciones de SAS 9.4 o SAS Viya 3.x deben seguir las instrucciones específicas proporcionadas en la documentación del Centro de ayuda de SAS.
Este proyecto es una bifurcación temprana de logpresso/CVE-2021-44228-Scanner, modificado inicialmente para inspeccionar archivos comprimidos de forma recursiva y añadir soporte para compresión tar/gz. Desde la bifurcación, el proyecto ha evolucionado en paralelo al original e implementa muchas funciones similares, aunque la mayor parte del código ha sido reescrita. Si bien la funcionalidad original de 'fix' ha sido reemplazada por un método patch que admite algunos casos extremos de anidamiento profundo y es más tolerante a fallos y reversiones, el mecanismo de detección (el comando scan) sigue funcionando de manera muy similar al original.
Puede descargar una versión de la herramienta desde la página de Releases o siguiendo los enlaces en la parte superior de esta página. La imagen nativa es un ejecutable independiente que se ejecutará en EL7 y versiones posteriores. El archivo jar se puede ejecutar con java -jar en JRE 1.8+. Actualmente, esta es la mejor manera de ejecutarlo en otras plataformas y versiones antiguas de glibc (incluyendo Windows, AIX, Solaris, etc.).
Después de descargar la imagen nativa, es necesario ejecutar chmod +x en el archivo antes de poder ejecutarlo.
La sintaxis del comando es la misma independientemente de si se invoca el .jar o el ejecutable nativo. Por ejemplo, esto:
./loguccino help
es funcionalmente idéntico a esto
java -jar ./loguccino-all.jar help
El comando loguccino help proporciona documentación sobre los comandos disponibles.
./loguccino scan /path/to/approot
Esto recorrerá todos los subdirectorios en /path/to/approot, incluyendo el recorrido recursivo de todos los archivos comprimidos anidados .tar.gz, .tgz, .tar, .zip, .ear, .war y .jar.
Se creará un archivo .csv con el nombre loguccino-scan-[datetime].csv en el directorio de trabajo, que contendrá los siguientes datos:
/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.jarPuede obtener más información sobre el comando scan mediante ./loguccino help scan.
Si se encuentran vulnerabilidades, el archivo loguccino-scan-[datetime].csv se utiliza como entrada para el comando patch:
./loguccino patch ./loguccino-scan-23122021003311.csv
Esto elimina cada vulnerabilidad encontrada y crea un directorio loguccino-patch-[timestamp] que contiene una copia de seguridad de cada archivo parcheado. Cuando un archivo se parchea para múltiples vulnerabilidades (como un archivo de copia de seguridad más grande que contiene múltiples herramientas o versiones de software), se guardan varias versiones del archivo parcheado en cada etapa del proceso para permitir una reversión por etapas en caso de fallo.
Nota:
Parchear un archivo en el disco no parchea la versión del programa que ya se está ejecutando en el host. Recuerde que debe detener los servicios/aplicaciones relevantes antes de parchear y reiniciarlos después del parche para que los cambios surtan efecto.
Puede obtener más información sobre el comando patch mediante ./loguccino help patch.
Al escanear en busca de vulnerabilidades, algunos archivos comprimidos pueden informarse como corruptos (esto también ocurre con archivos comprimidos anidados donde los métodos de compresión no coinciden con la extensión del archivo). El comando scan imprimirá la ruta de estos en el archivo logpresso-scan-[datetime].log. Si se consideran significativos, estos archivos comprimidos deben descomprimirse e inspeccionarse (o escanearse) manualmente para confirmar que de hecho están corruptos.
Si encuentra algún error o comportamiento inesperado, por favor abra un issue y adjunte los pasos para reproducir el error junto con otra información de contexto.
Las solicitudes de extracción (pull requests) y las actualizaciones del código son bienvenidas y se animan.