Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

99
Vistas
Dónde colocar formatMsgNoLookups en el archivo de configuración XML de Log4j

Configuro mi Log4j con un archivo XML. ¿Dónde debo agregar formatMsgNoLookups=true ?

 <?xml version="1.0" encoding="UTF-8"?> <!-- Upload files compare config --> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss} %p - %msg%n"/> </Console> <!-- http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender --> <RollingFile name="File" fileName="logs/MyLogFile.log" filePattern="logs/MyLogFile-%d{yyyy-MM-dd}.log" ignoreExceptions="false"> <PatternLayout> <Pattern>%d %p %c{1.} %m%n</Pattern> </PatternLayout> </RollingFile> </appenders> <Loggers> <Root level="INFO"> <AppenderRef ref="File"/> <AppenderRef ref="Console"/> </Root> </Loggers> </configuration>
over 4 years ago · Santiago Trujillo
6 Respuestas
Responde la pregunta

0

Como comentó DuncG , la opción de deshabilitar las búsquedas para Log4j no es una opción de configuración sino una propiedad del sistema.

 log4j2.formatMsgNoLookups

Dependiendo de su entorno ( Spring , ejecutable independiente, aplicación web Tomcat ,...) la forma en que se establecen las propiedades del sistema puede variar. La posibilidad más sencilla de iniciar un proceso Java desde un archivo JAR sería agregar

 -Dlog4j2.formatMsgNoLookups=true

a su línea de comando:

 java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar
over 4 years ago · Santiago Trujillo Denunciar

0

CVE-2021-44228 Vulnerabilidad Log4Shell

Si puede, actualice a las versiones Log4j2 + Java según lo recomendado por los detalles de seguridad en el sitio de registro de Apache . Este sitio ha cambiado desde mi publicación original; Siempre siga las pautas recomendadas del sitio web de Apache.

El sitio de Apache sugirió anteriormente algunas soluciones para la vulnerabilidad de búsqueda JNDI informada en versiones anteriores de Log4j2.

En mi opinión: esta es una vulnerabilidad tan grave que no debe contemplar estas soluciones alternativas y, para cuando lea esto, es posible que ya no le ayuden. Actualice los archivos JAR de Log4j y vea la nota a continuación sobre los lugares para verificar.

  1. Establezca la propiedad del sistema log4j2.formatMsgNoLookups cuando inicie la VM, pasando como java -Dlog4j2.formatMsgNoLookups=true ... .
  2. Establezca la variable de entorno LOG4J_FORMAT_MSG_NO_LOOKUPS en verdadero.
  3. Para las versiones de 2.0-beta9 a 2.10.0, la mitigación consiste en eliminar org/apache/logging/log4j/core/lookup/JndiLookup.class de classpath; consulte log4j-core-*.jar .
  4. reemplace el patrón de formato %m por %m{nolookups} para algunas versiones

No pude encontrar LOG4J_FORMAT_MSG_NO_LOOKUPS al ejecutar un grep en el código fuente de Java para 2.14.0 , por lo que no está claro si esto ayuda en absoluto.

Ciertas versiones de JDK mitigan los riesgos: JDK superiores a 6u211, 7u201, 8u191 y 11.0.1 no se ven afectados debido a los valores predeterminados aplicados a las búsquedas LDAP. Actualizar donde sea posible.

Algunos lugares para verificar el uso de Log4j

Compruebe qué versiones de Java utiliza son lo suficientemente recientes:

 java -version

Escanee las estructuras de lanzamiento de su aplicación, los servidores de aplicaciones y los entornos de desarrollo en busca de posibles versiones antiguas de Log4j:

 find yourReleaseDir -type f -name log4j\*jar

Si no está seguro de qué versión de Log4j tiene, abra el archivo JAR en una herramienta ZIP y vea META-INF\MANIFEST.MF ; puede haber una línea con los detalles de la versión:

 Log4jReleaseVersion: ABC

Vea los procesos en ejecución en cada máquina de lanzamiento para ver si hay algún identificador de archivo abierto para los archivos JAR de Log4j:

 lsof | grep log4j

También escanee las máquinas para verificar que la VM de Java sean las versiones que espera. Esto puede detectar más aplicaciones en las que trabajar:

 ps -ef | egrep "(java|jdk)" #OR: | grep -v grep

Escanee archivos EAR y WAR en servidores de aplicaciones para verificar que no haya ningún archivo JAR de Log4j incrustado dentro de un archivo contenedor. Puede hacer esto con los comandos de find y unzip , o pruebe la clase ShowClassVersions que escribí para detectar las versiones del compilador de Java en esta respuesta . Esto imprimiría los nombres de los archivos JAR dentro de los archivos WAR y EAR :

 java ShowClassVersions.java app_server_dir |grep log4j app_server_dir/somewebapp.war => WEB-INF/lib/log4j2-core.jar
over 4 years ago · Santiago Trujillo Denunciar

0

Puede hacer esto: %m{nolookups} en el diseño.

{nolookups} es cómo establece la propiedad log4j2.formatMsgNoLookups=true dentro del contenido XML de configuración.

Citando de la fuente de Log4j:

FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS = PropertiesUtil.getProperties().getBooleanProperty("log4j2.formatMsgNoLookups", false);

y su javadoc:

LOG4J2-2109 si es verdadero, MessagePatternConverter siempre funcionará como si

%m{nobúsquedas}

está configurado.

Ya que:

2.10

over 4 years ago · Santiago Trujillo Denunciar

0

Agregue el delimitador -Dlog4j2.formatMsgNoLookups=true en export catalina_opts o export java_options .

over 4 years ago · Santiago Trujillo Denunciar

0

Hay mucha confusión con respecto a la variable a usar, log4j2.formatMsgNoLookups, log4j.formatMsgNoLookups, etc. Tenga en cuenta que como se indica en PropertySource.java ,

 / ** * Converts a property name string into a list of tokens. This will strip a prefix of {@code log4j}, * {@code log4j2}, {@code Log4j}, or {@code org.apache.logging.log4j}, along with separators of * dash {@code -}, dot {@code.}, underscore {@code _}, and slash {@code /}. Tokens can also be separated * by camel case conventions without needing a separator character in between. * * @param value property name * @return the property broken into lower case tokens * /

Puede usar diferentes valores para la variable, como puede verificar con este código de prueba (lamentablemente, debe indicar la propiedad del sistema en un bloque estático, por lo que para probar las diferentes opciones, debe comentar o descomentar las diferentes líneas del examen).

 package org.apache.logging.log4j.core.pattern; import org.apache.logging.log4j.core.util.Constants; import org.junit.Test; import static org.junit.Assert.assertTrue; / ** * * / public class Log4jParameterTest { static { // Test Ok. All working // System.setProperty ("log4j2.formatMsgNoLookups", "true"); // System.setProperty ("log4j.formatMsgNoLookups", "true"); // System.setProperty ("Log4j.formatMsgNoLookups", "true"); // System.setProperty ("org.apache.logging.log4j.formatMsgNoLookups", "true"); // System.setProperty ("log4j2-formatMsgNoLookups", "true"); // System.setProperty ("log4j2_formatMsgNoLookups", "true"); System.setProperty ("log4j2 / formatMsgNoLookups", "true"); // Test KO. All fail // System.setProperty ("log5j2.formatMsgNoLookups", "true"); // System.setProperty ("log5j2-formatMsgNoLookups", "true"); } @Test public void testLookupEnabledByDefault () { assertTrue ("Lookups deactivated", Constants.FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS); } }
over 4 years ago · Santiago Trujillo Denunciar

0

A quién usa log4j-xml-config-file :

  1. Reemplace %m por %m{nolookups} en PatternLayout
  2. Agregue la propiedad del sistema log4j.formatMsgNoLookups = true: System.setProperty("log4j2.formatMsgNoLookups", "true");
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda