ravindra hv
Con respecto a la Log4j JNDI vulnerabilidad de ejecución remota de código que ha sido identificada CVE-2021-44228 – (ver también referencias) – Me preguntaba si Log4j-v1.2 también se ve afectado, pero lo más cercano que obtuve de la revisión del código fuente es el JMS-Appender.
La pregunta es que, si bien las publicaciones en Internet indican que Log4j 1.2 también es vulnerable, no puedo encontrar el código fuente correspondiente.
¿Me estoy perdiendo algo que otros han identificado?
Log4j 1.2 parece tener una vulnerabilidad en el servidor de socket class, pero tengo entendido que debe habilitarse en primer lugar para que sea aplicable y, por lo tanto, no es una amenaza pasiva a diferencia de la vulnerabilidad de búsqueda JNDI que parece ser la identificada.
¿Tengo entendido que Log4j v1.2 no es vulnerable al error de ejecución jndi-remote-code correcto?
Referencias
Este publicación de blog de Cloudflare también indica el mismo punto que en AKX… ¡que se introdujo en Log4j 2!
Actualización #1 – Ya está disponible una bifurcación de apache-log4j-1.2.x (ahora retirado) con correcciones de parches para algunas vulnerabilidades identificadas en la biblioteca anterior (del autor original de log4j). el sitio es https://reload4j.qos.ch/. A partir del 21 de enero de 2022, se lanzó la versión 1.2.18.2. Las vulnerabilidades abordadas hasta la fecha incluyen aquellas relacionadas con JMSAppender, servidor de sockets y motosierra vulnerabilidades. Tenga en cuenta que simplemente estoy transmitiendo esta información. No he verificado las correcciones de mi parte. Consulte el enlace para obtener más detalles.
AKX
La función JNDI se agregó a Log4j 2.0-beta9.
Log4j 1.x por lo tanto no tiene el código vulnerable.
-
Resulta que log4j 1 podría ser vulnerable en ciertas configuraciones: github.com/apache/logging-log4j2/pull/…
– AKX
11 de diciembre de 2021 a las 0:03
-
Para agregar más confusión, RHEL ahora afirma que algunos de sus productos tienen una implementación que usa 1.2 que son vulnerables. Habrá mucha investigación sobre esta vulnerabilidad en las próximas semanas (de buenos y malos actores) que podría identificar variaciones del mecanismo utilizado. Si es posible en este punto, sería más seguro actualizar a 2.15. RHEL CVE-2021-4104
– Rikkouri
13 de diciembre de 2021 a las 12:23
-
Deje que esto sea una lección para nosotros: ¡no actualice a la última versión!
– Sridhar Sarnobat
13 dic 2021 a las 23:06
-
Tal vez pueda responder por mí mismo … JMSAppender debe agregarse como nuevo agregador en el archivo de configuración log4j (o mediante código), ¿verdad? Si ese no es el caso, no hay problema con respecto a esta vulnerabilidad. — ahora hay un CVE: nvd.nist.gov/vuln/detail/CVE-2021-4104
– Marcos
14 dic 2021 a las 15:40
-
Vale la pena señalar que, aunque Log4j 1.x no es vulnerable de la misma manera, tiene varios CVE abiertos en este punto (nvd.nist.gov/vuln/detail/CVE-2021-4104, nvd.nist.gov/vuln/detail/CVE-2019-17571) y ha estado al final de su vida útil desde agosto de 2015 (blogs.apache.org/foundation/entry/…). Podría valer la pena considerar: “Si ya hay varios exploits, ¿qué más se puede encontrar?” para una biblioteca que ya no recibe actualizaciones.
– Brent escribe el código
16 dic 2021 a las 23:25
jirafasyo
Si bien no se ve afectado exactamente por el mismo problema de Log4Shell, el Equipo Apache Log4j recomienda eliminar JMSAppender
y SocketServer
que tiene una vulnerabilidad en CVE-2019-17571de sus archivos JAR.
Puedes usar el zip
comando para eliminar las clases afectadas. Reemplace el nombre de archivo/versión con el suyo:
zip -d log4j-1.2.16.jar org/apache/log4j/net/JMSAppender.class
zip -d log4j-1.2.16.jar org/apache/log4j/net/SocketServer.class
Puede revisar los archivos en su zip usando menos y grepp.ej less log4j-1.2.16.jar | grep JMSAppender
Dicho esto, Apache recomienda que actualice a la versión 2.x si es posible. De acuerdo a su pagina de seguridad:
Tenga en cuenta que Log4j 1.x ha llegado al final de su vida útil y ya no es compatible. Las vulnerabilidades informadas después de agosto de 2015 contra Log4j 1.x no se verificaron y no se repararán. Los usuarios deben actualizar a Log4j 2 para obtener correcciones de seguridad.
-
Solo para agregar un recordatorio: los archivos jar de log4j seguirán residiendo en los archivos de guerra implementados y en los repositorios de desarrollador maven. Por lo tanto, cualquier reconstrucción de la aplicación y reimplementación usando estos reintroducirá estas clases.
– Aturdido
16 de diciembre de 2021 a las 9:10
aturdido
Además de la respuesta de giraffesyo y en caso de que ayude a alguien, escribí este script Bash, que elimina las clases identificadas como vulnerabilidades (enlace aquí para el hilo de desarrollo de Log4j) y establece que los archivos de propiedades son de solo lectura, como se sugiere aquí en un hilo de Red Hat Bugzilla.
Nota 1: no verifica el uso de estas clases en las propiedades, es simplemente una forma de encontrar y eliminar, ¡úselo bajo su propio riesgo!
Nota 2 – depende de zip
y unzip
siendo instalada
#!/bin/bash
DIR=$1
APPLY=$2
# Classes to be searched for/removed
CLASSES="org/apache/log4j/net/SimpleSocketServer.class
org/apache/log4j/net/SocketServer.class
org/apache/log4j/net/JMSAppender.class"
PROGNAME=`basename $0`
PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
usage () {
echo >&2 Usage: ${PROGNAME} DIR [APPLY]
echo >&2 Where DIR is the starting directory for find
echo >&2 and APPLY = "Y" - to perform purification
exit 1
}
# Force upper case on Apply
APPLY=$(echo "${APPLY}" | tr '[:lower:]' '[:upper:]')
# Default Apply to N
if [ "$APPLY" == "" ] ; then
APPLY="N"
fi
# Check parameters
if [ "$DIR" == "" ] ; then
usage
fi
echo $APPLY | grep -q -i -e '^Y$' -e '^N$' || usage
# Search for log4j jar files - for class file removal
FILES=$(find $DIR -name *log4j*jar)
for f in $FILES
do
echo "Checking Jar [$f]"
for jf in $CLASSES
do
unzip -v $f | grep -e "$jf"
if [ "$APPLY" = "Y" ]
then
echo "Deleting $jf from $f"
zip -d $f $jf
fi
done
done
# Search for Log4j properties files - for read-only setting
PFILES=$(find $DIR -name *log4j*properties)
for f in $PFILES
do
echo "Checking permissions [$f]"
if [ "$APPLY" = "Y" ]
then
echo "Changing permissons on $f"
chmod 444 $f
fi
ls -l $f
done
¿Responde esto a tu pregunta? ¿Cómo mitigar la vulnerabilidad de log4shell en la versión 1.2 de log4j?
– Piotr P. Karwasz
13 de diciembre de 2021 a las 13:31
Esto es difícil porque la guía sigue evolucionando constantemente. Recomiendo consultar la página específica CISA configurada para esto: cisa.gov/uscert/apache-log4j-vulnerability-guidance
– Brent escribe el código
16 de diciembre de 2021 a las 23:21