Articulo de referencia

Log4j

{{cite web |url=https://logging.apache.org/log4j/1.2/changes-report.html |title=Apache Log4j 1.2 Release History |author= |website=apache.org |publisher=Apache Software Foundati...

Apache Log4j es una utilidad de registro basada en Java , escrita originalmente por Ceki Gülcü. Forma parte de Apache Logging Services , un proyecto de la Apache Software Foundation . Log4j es uno de los diversos marcos de registro de Java .

Desde entonces, Gülcü ha creado SLF4J , Reload4j, [ 4 ] y Logback [ 5 ] que son alternativas a Log4j. [ 6 ]

El equipo de Apache Log4j desarrolló Log4j 2 [ 7 ] en respuesta a los problemas de Log4j 1.2, 1.3 java.util.loggingy Logback, solucionando los problemas que surgieron en esos frameworks. [ 8 ] Además, Log4j 2 ofreció una arquitectura de complementos que lo hace más extensible que su predecesor. Log4j 2 no es compatible con versiones anteriores de la serie 1.x, [ 9 ] aunque existe un adaptador. El 5 de agosto de 2015, el Comité de Gestión de Proyectos de Servicios de Registro de Apache anunció que Log4j 1 había llegado al final de su ciclo de vida y que se recomendaba a los usuarios de Log4j 1 que actualizaran a Apache Log4j 2. [ 10 ] El 12 de enero de 2022, Ceki Gülcü lanzó una bifurcación y renombrada versión 1.2 de log4j como Reload4j versión 1.2.18.0 con el objetivo de solucionar los problemas más urgentes de log4j 1.2.17 que se habían acumulado desde su lanzamiento en 2013. [ 11 ]

El 9 de diciembre de 2021, el equipo de seguridad de Alibaba Cloud publicó una vulnerabilidad de día cero que permitía la ejecución de código arbitrario en Log4j 2 , a la que se le asignó el descriptor " Log4Shell ". [ 12 ] Tenable la ha caracterizado como "la vulnerabilidad más grande y crítica de la última década". [ 13 ]

Apache Log4j 2

Apache Log4j 2 es el sucesor de Log4j 1, que se lanzó como versión GA en julio de 2015. El framework se reescribió desde cero y se inspiró en soluciones de registro existentes, incluidas Log4j 1 y java.util.logging. Las principales diferencias [ 14 ] [ 15 ] con respecto a Log4j 1 son:

  • Mayor fiabilidad. Los mensajes no se pierden al reconfigurar el marco de trabajo, como ocurría con Log4j 1 o Logback.
  • Extensibilidad: Log4j 2 admite un sistema de complementos que permite a los usuarios definir y configurar componentes personalizados.
  • Sintaxis de configuración simplificada
  • Compatibilidad con configuraciones XML, JSON, YAML y de propiedades.
  • Filtros mejorados
  • Compatibilidad con la búsqueda de propiedades para valores definidos en el archivo de configuración, propiedades del sistema, variables de entorno, el mapa ThreadContext y datos presentes en el evento.
  • Compatibilidad con múltiples API: Log4j 2 se puede utilizar con aplicaciones que utilizan las API Log4j 2, Log4j 1.2, SLF4J, Commons Logging y java.util.logging (JUL).
  • Niveles de registro personalizados
  • Soporte para expresiones lambda al estilo Java 8 para "registro diferido"
  • Marcadores
  • Compatibilidad con objetos Message definidos por el usuario
  • "Sin basura o con poca basura" en configuraciones comunes
  • Velocidad mejorada
  • Soporte mejorado para Linux

Una de las características más reconocidas de Log4j 2 es el rendimiento de los "registradores asíncronos". [ 16 ] Log4j 2 utiliza el LMAX Disruptor . [ 17 ] La biblioteca reduce la necesidad de bloqueo del kernel y aumenta el rendimiento del registro en un factor de 12. Por ejemplo, en el mismo entorno, Log4j 2 puede escribir más de 18.000.000 de mensajes por segundo, mientras que otros frameworks como Logback y Log4j 1 solo escriben < 2.000.000 de mensajes por segundo.

Características

Niveles de registro de Log4j

La siguiente tabla define los niveles y mensajes de registro integrados en Log4j, ordenados de mayor a menor gravedad. La columna izquierda muestra la designación del nivel de registro en Log4j y la columna derecha proporciona una breve descripción de cada nivel.

Niveles de registro personalizados

Log4j 2 permite a los usuarios definir sus propios niveles de registro. [ 19 ] Se proporciona una herramienta generadora de código fuente para crear registradores que admiten niveles de registro personalizados idénticos a los niveles de registro integrados. Los niveles de registro personalizados pueden complementar o reemplazar los niveles de registro integrados.

Configuración de Log4j

Log4j se puede configurar [ 20 ] mediante un archivo de configuración o mediante código Java. Los archivos de configuración pueden estar escritos en formato XML , JSON , YAML o de propiedades . Se pueden definir tres componentes principales: registradores, agregadores y diseños. Configurar el registro mediante un archivo tiene la ventaja de que se puede activar o desactivar sin modificar la aplicación que utiliza Log4j. Por ejemplo, se puede permitir que la aplicación se ejecute con el registro desactivado hasta que surja un problema, y ​​luego se puede volver a activar simplemente modificando el archivo de configuración.

Los registradores [ 21 ] son ​​destinos de mensajes de registro con nombre. Son los nombres que conoce la aplicación Java. Cada registrador se puede configurar de forma independiente en cuanto al nivel de registro (FATAL, ERROR, etc.) que registra. En versiones anteriores de Log4j, se denominaban categoría y prioridad, pero ahora se llaman registrador y nivel, respectivamente. Un registrador puede enviar mensajes de registro a varios Appenders.

Las salidas reales las realizan los Appenders . [ 22 ] Hay numerosos Appenders disponibles, con nombres descriptivos, como FileAppender, RollingFileAppender, ConsoleAppender, SocketAppender, SyslogAppender y SMTPAppender. Log4j 2 agregó Appenders que escriben en Apache Flume , la API de persistencia de Java , Apache Kafka , bases de datos NoSQL , archivos mapeados en memoria , archivos de acceso aleatorio [ 23 ] y puntos finales de ZeroMQ . Se pueden adjuntar varios Appenders a cualquier Logger, por lo que es posible registrar la misma información en múltiples salidas; por ejemplo, en un archivo local y en un oyente de socket en otra computadora.

Los appenders usan Layouts [ 24 ] para formatear las entradas de registro. Una forma popular de formatear archivos de registro de una línea a la vez es PatternLayout, que usa una cadena de patrón, muy similar a la función printf de C / C++ . También hay formateadores HTMLLayout y XMLLayout para usar cuando los formatos HTML o XML son más convenientes, respectivamente. Log4j 2 agregó Layouts para CSV , Graylog Extended Log Format (GELF), [ 25 ] JSON , YAML y RFC-5424. [ 26 ]

En Log4j 2, se pueden definir filtros [ 27 ] en los elementos de configuración para brindar un control más preciso sobre qué entradas de registro deben ser procesadas por qué registradores y agregadores. Además del filtrado por nivel de registro y la coincidencia de expresiones regulares en la cadena del mensaje, Log4j 2 agregó filtros de ráfaga, filtros de tiempo, filtrado por otros atributos de eventos de registro como marcadores o mapa de contexto de subprocesos y filtros de script JSR 223 .

Para depurar una configuración que no funciona correctamente:

  • En las configuraciones de Log4j 2, establezca el statusatributo en TRACE para enviar la salida de registro de estado interno a la salida estándar . Para habilitar el registro de estado antes de que se encuentre la configuración, utilice la propiedad de la máquina virtual Java -Dorg.apache.logging.log4j.simplelog.StatusLogger.level=trace.
  • En Log4j 1, utilice la propiedad de la máquina virtual Java -Dlog4j.debug.

Para averiguar dónde se cargó un archivo de configuración log4j2.xml desde inspect getClass().getResource("/log4j2.xml").

También existe una configuración implícita "sin configurar" o "predeterminada" de Log4j, que corresponde a una aplicación Java instrumentada con Log4j que carece de configuración. Esta configuración imprime en la salida estándar una advertencia indicando que el programa no está configurado, junto con la URL del sitio web de Log4j donde se pueden encontrar detalles sobre la advertencia y la configuración. Además de imprimir esta advertencia, una aplicación Log4j sin configurar solo imprimirá entradas de registro de ERROR o FATAL en la salida estándar.

Ejemplo para Log4j 2

<?xml version="1.0" encoding="UTF-8"?> <Configuration status= "trace" monitorInterval= "60" > <Properties> <Property name= "filename" > target/test.log </Property> </Properties> <Appenders> <Console name= "STDOUT" > <PatternLayout pattern= "%d %p %c{1.} [%t] %m%n" /> </Console><File name= "file" fileName= "${filename}" > <PatternLayout> <pattern> %d %p %c{1.} [%t] %m%n </pattern> </PatternLayout> </File> </Appenders> <Loggers> <!--  Los registradores cuyo nombre comience con 'org.springframework' solo registrarán mensajes de nivel "info" o superior;  si recupera los registradores usando el nombre de la clase (por ejemplo, Logger.getLogger(AClass.class))  y si AClass es parte del paquete org.springframework, pertenecerá a esta categoría  --> <Logger name= "org.springframework" level= "info" additivity= "false" /><!--  Ejemplo de filtro: para los registradores cuyo nombre comienza con 'com.mycompany.myproduct',  las entradas de registro de nivel "debug" o superior cuyos datos de ThreadContextMap contienen  el par clave-valor "test=123", también envían estas entradas de registro al appender "STDOUT".  --> <Logger name= "com.mycompany.myproduct" level= "debug" additivity= "true" > <ThreadContextMapFilter> <KeyValuePair key= "test" value= "123" /> </ThreadContextMapFilter> <AppenderRef ref= "STDOUT" /> </Logger> <!--  Por defecto, todos los mensajes de registro de nivel "trace" o superior se registrarán.  Los mensajes de registro se envían al appender "file" y  los mensajes de registro de nivel "error" y superior se enviarán al appender "STDOUT".  --> <Root level= "trace" > <AppenderRef ref= "file" /> <AppenderRef ref= "STDOUT" level= "error" /> </Root> </Loggers> </Configuration>

Ejemplo para Log4j 1.2

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> <log4j:configuration> <!--  Un appender es un destino de salida, como la consola o un archivo;  los nombres de los appenders se eligen arbitrariamente.  --> <appender name= "stdout" class= "org.apache.log4j.ConsoleAppender" > <layout class= "org.apache.log4j.PatternLayout" > <param name= "ConversionPattern" value= "%d{ABSOLUTE} %5p %c{1}:%L - %m%n" /> </layout> </appender> <!--  Los registradores de la categoría 'org.springframework' solo registrarán mensajes de nivel "info" o superior;  si recupera los registradores usando el nombre de la clase (por ejemplo, Logger.getLogger(AClass.class))  y si AClass forma parte del paquete org.springframework, pertenecerá a esta categoría  --> <logger name= "org.springframework" > <level value= "info" /> </logger><!--  todo en spring estaba configurado en "info" pero para la clase  PropertyEditorRegistrySupport queremos el registro "debug"  --> <logger name= "org.springframework.beans.PropertyEditorRegistrySupport" > <level value= "debug" /> </logger> <logger name= "org.acegisecurity" > <level value= "info" /> </logger> <root> <!--  todos los mensajes de registro de nivel "debug" o superior se registrarán, a menos que se defina lo contrario  todos los mensajes de registro se registrarán en el appender "stdout", a menos que se defina lo contrario  --> <level value= "debug" /> <appender-ref ref= "stdout" /> </root> </log4j:configuration>

TTCC

TTCC es un formato de mensaje utilizado por log4j. [ 28 ] TTCC es un acrónimo de Time Thread Category Component . Utiliza el siguiente patrón:

%r [%t] %-5p %c %x - %m%n

Dónde

Ejemplo de salida467 [main] INFO  org.apache.log4j.examples.Sort - Saliendo del método principal.

Puertos

  • log4c – Una adaptación para C. Log4C es una biblioteca de registro basada en C , publicada en SourceForge bajo la licencia LGPL . Para varios sistemas operativos Unix, se proporcionan los archivos autoconf y automake . En Windows, se proporciona un Makefile para usar con MSVC . Los desarrolladores también pueden optar por usar su propio sistema make para compilar el código fuente, según sus requisitos de ingeniería de compilación. Una instancia de la biblioteca log4c se puede configurar mediante tres métodos: usando variables de entorno , programáticamente o mediante un archivo de configuración XML . log4c tiene appenders para archivos, flujos y archivos mapeados en memoria. (Sin adaptador de socket). La última versión es la 1.2.4, publicada en 2013, y el proyecto ya no se desarrolla activamente. [ 31 ]
  • log4js : una adaptación para JavaScript . Log4js está disponible bajo la licencia de Apache Software Foundation . Una característica especial de Log4js es la capacidad de registrar los eventos del navegador de forma remota en el servidor. Mediante Ajax, es posible enviar los eventos de registro en varios formatos ( XML , JSON , ASCII simple , etc.) al servidor para su procesamiento. Se implementan los siguientes appenders para log4js : AjaxAppender, ConsoleAppender, FileAppender, JSConsoleAppender, MetatagAppender y WindowsEventsAppender. Se proporcionan las siguientes clases Layout: BasicLayout, HtmlLayout, JSONLayout y XMLLayout. Última versión : 2021.fue 2.0 del 18 de octubre de 2018. [ 32 ]
  • log4javascript – Otra versión para JavaScript. log4javascript es un framework de registro de JavaScript basado en log4j . La última versión es de 2021.fue 1.4.13, lanzado el 23 de mayo de 2015. [ 33 ]
  • JSNLog : una versión para JavaScript . Coloca automáticamente los mensajes de los registradores de JavaScript en los registros del servidor mediante un componente .NET del lado del servidor que interactúa con Log4Net, NLog, Elmah o Common.Logging. Esto proporciona un registro integrado para eventos del lado del cliente y del servidor. Los ID de solicitud correlacionan eventos relacionados con un usuario específico. La configuración se realiza a través de un archivo web.config del lado del servidor. Admite el registro de excepciones, incluyendo seguimientos de pila. ( Actualizado en 2021)La última versión era la 3.0.0 y las actualizaciones se realizaban regularmente. [ 34 ]
  • Apache Log4net : una adaptación al Microsoft .NET Framework . El trabajo inicial fue realizado por Neoworks y donado a la Apache Software Foundation en febrero de 2004. El framework es similar al log4j original, pero aprovecha las nuevas características del entorno de ejecución .NET. Proporciona contexto de diagnóstico anidado (NDC) y contexto de diagnóstico mapeado (MDC). La última versión es de 2022.era 2.0.15. [ 35 ]
  • log4perl : una adaptación de log4j a Perl . La versión 1.57 de octubre de 2022 seguía vigente en 2024.. [ 36 ]
  • Apache log4php – "Un marco de registro versátil para PHP . Originalmente una adaptación de Apache log4j a PHP, ha evolucionado para incluir varias características específicas de PHP." [ 37 ]
  • PL-SQL-Logging-Utility es una adaptación de log4j en PL/SQL. [ 38 ]
  • Log4db2 es una utilidad de registro para DB2 para LUW que utiliza instrucciones SQL con código SQL PL. [ 39 ]
  • Apache Log4cxx : un marco de registro para C++ basado en Apache log4j, que utiliza Apache Portable Runtime para la mayor parte del código específico de la plataforma y debería poder utilizarse en cualquier plataforma compatible con APR. La última versión es la 0.13.0, publicada en 2022. [ 40 ]
  • Log4r : una biblioteca de registro completa y flexible escrita en Ruby para su uso en programas Ruby. Se inspiró en el proyecto Apache Log4j y proporciona muchas de sus características. [ 41 ]

Vulnerabilidad de Log4Shell

Una vulnerabilidad de día cero que involucra la ejecución remota de código en Log4j 2, denominada "Log4Shell" ( CVE -2021-44228), fue descubierta e informada a Apache por Alibaba el 24 de noviembre de 2021 y publicada en un tuit el 9 de diciembre de 2021. [ 12 ] Los servicios afectados incluyen Cloudflare , iCloud , Minecraft: Java Edition , [ 42 ] Steam , Tencent QQ y Twitter . [ 43 ] [ 44 ] [ 45 ] La Apache Software Foundation asignó la máxima calificación de gravedad CVSS de 10 a Log4Shell, ya que millones de servidores podrían ser potencialmente vulnerables a la explotación. [ 45 ] La empresa de ciberseguridad Tenable caracterizó la vulnerabilidad como "la vulnerabilidad más grande y crítica de la última década" [ 13 ] y Free Wortley de Lunasec la caracterizó como "un fallo de diseño de proporciones catastróficas". [ 46 ]

En Estados Unidos, la directora de la Agencia de Seguridad de Infraestructura y Ciberseguridad (CISA), Jen Easterly , calificó la vulnerabilidad de "crítica" y aconsejó a los proveedores que priorizaran las actualizaciones de software, [ 47 ] y la agencia alemana Oficina Federal de Seguridad de la Información (BSI) designó la vulnerabilidad como de máximo nivel de amenaza, calificándola de "situación de amenaza extremadamente crítica" (traducido). [ 48 ] [ 49 ] El Centro Canadiense de Ciberseguridad (CCCS) instó a las organizaciones a tomar medidas inmediatas. [ 50 ]

La función que causaba la vulnerabilidad podía deshabilitarse con una configuración, que se eliminó [ 51 ] en Log4j versión 2.15.0-rc1 (lanzada oficialmente el 6 de diciembre de 2021, tres días antes de que se publicara la vulnerabilidad) y se reemplazó por varias configuraciones que restringían las búsquedas remotas, mitigando así la vulnerabilidad. [ 52 ] [ 53 ] Para mayor seguridad, a partir de la versión 2.16.0, todas las funciones que utilizaban JNDI , en las que se basaba esta vulnerabilidad, se deshabilitaron por defecto y se eliminó la compatibilidad con las búsquedas de mensajes. [ 54 ] [ 55 ]

Véase también

Referencias

  1. "Historial de versiones de Apache Log4j 1.2" . apache.org . Apache Software Foundation . Consultado el 2 de septiembre de 2014 .
  2. "Versión 2.26.1" . 2 de julio de 2026. Consultado el 3 de julio de 2026 .
  3. "Notas de la versión - Log4j" . logging.apache.org . Consultado el 9 de octubre de 2023 .
  4. "Página principal de Reload4j" . reload4j.qos.ch . Consultado el 12 de enero de 2022 .
  5. "Inicio de Logback" . Logback.qos.ch . Consultado el 24 de julio de 2014 .
  6. Grigg, Kadi (4 de febrero de 2022). "Desarrollo genial: expertos en ciberseguridad hablan sobre Log4J, código abierto y más" . blog.sonatype.com . Consultado el 16 de agosto de 2022 .
  7. "Guía de Log4j 2 - Apache Log4j 2" . Logging.apache.org. 12 de julio de 2014. Consultado el 24 de julio de 2014 .
  8. Goers, Ralph (15 de diciembre de 2019). "¿Por qué se creó Log4j 2?" . Ralph Goers .
  9. "Guía de Log4j 2 - Apache Log4j 2: Noticias" . Logging.apache.org. 12 de julio de 2014. Consultado el 24 de julio de 2014 .
  10. "El proyecto de servicios de registro de Apache anuncia el fin del soporte para Log4j 1; recomienda actualizar a Log4j 2" . blogs.apache.org. 5 de agosto de 2015. Consultado el 3 de julio de 2016 .
  11. "Proyecto Reload4j; Migración sencilla desde log4j 1.2.x" . qos.ch. 12 de enero de 2022. Consultado el 12 de enero de 2022 .
  12. 1 2 "¿Qué pasa con la pesadilla de seguridad de Log4Shell?" . Lawfare . 10 de diciembre de 2021.
  13. 1 2 "Fallo de software descubierto recientemente: 'la vulnerabilidad más crítica de la última década'"" . The Guardian . Associated Press. 11 de diciembre de 2021.
  14. "El nuevo log4j 2.0" . Grobmeier.de. 5 de diciembre de 2012. Consultado el 24 de julio de 2014 .
  15. "Log4j – Descripción general - Apache Log4j 2" . logging.apache.org. 5 de junio de 2016. Consultado el 3 de julio de 2016 .
  16. "Registradores asíncronos de Log4j 2 para registro de baja latencia - Apache Log4j 2" . Logging.apache.org. 12 de julio de 2014. Consultado el 24 de julio de 2014 .
  17. "Disruptor de LMAX-Exchange" . Lmax-exchange.github.io . Consultado el 24 de julio de 2014 .
  18. "Nivel (API de Apache Log4j 1.2.17)" . Logging.apache.org. 9 de junio de 2012. Consultado el 24 de julio de 2014 .
  19. "Niveles de registro personalizados" . Logging.apache.org. 12 de julio de 2014. Consultado el 16 de julio de 2016 .
  20. "Configuración" . Logging.apache.org. 5 de julio de 2016. Consultado el 16 de julio de 2016 .
  21. "Arquitectura" . Logging.apache.org. 5 de julio de 2016. Consultado el 16 de julio de 2016 .
  22. "Appenders" . Logging.apache.org. 5 de julio de 2016. Consultado el 16 de julio de 2016 .
  23. "RandomAccessFile" . docs.oracle.com. 28 de julio de 2011. Consultado el 16 de julio de 2016 .
  24. "Diseños" . Logging.apache.org. 5 de julio de 2016. Consultado el 16 de julio de 2016 .
  25. "GELF" . docs.graylog.org. 8 de junio de 2016. Archivado del original el 9 de febrero de 2020. Consultado el 16 de julio de 2016 .
  26. Gerhards, R. (1 de marzo de 2009). "RFC 5424 - El protocolo Syslog" . tools.ietf.org. doi : 10.17487/RFC5424 . Recuperado el 16 de julio de 2016 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  27. "Filtros" . Logging.apache.org. 5 de julio de 2016. Consultado el 16 de julio de 2016 .
  28. "TTCCLayout (API de Apache Log4j 1.2.17)" . Logging.apache.org. 9 de junio de 2012. Consultado el 24 de julio de 2014 .
  29. "Clase NDC" . Archivado del original el 20 de agosto de 2007. Consultado el 11 de diciembre de 2021 .
  30. "MDC (API de Apache Log4j 1.2.17)" . Logging.apache.org. 9 de junio de 2012. Consultado el 24 de julio de 2014 .
  31. "Marco de registro para C | Descargas de software gratuito para administración de sistemas en" . Sourceforge.net . Consultado el 24 de julio de 2014 .
  32. "stritti/Log4js - El marco de registro para JavaScript sin dependencias en tiempo de ejecución" . GitHub . Consultado el 11 de diciembre de 2021 .
  33. "un marco de registro de JavaScript" . log4javascript . Consultado el 11 de diciembre de 2021 .
  34. "Registrar errores de JavaScript en el registro del servidor" . JSNLog . Consultado el 11 de diciembre de 2021 .
  35. "Apache log4net" . Logging.apache.org . Consultado el 11 de diciembre de 2021 .
  36. Schilli, Mike; Goess, Kevin. "log4perl - log4j para Perl" . log4perl . Consultado el 11 de diciembre de 2021 .
  37. "Servicios de registro de Apache" . Apache.org . Consultado el 11 de marzo de 2015 .
  38. "tmuth/Logger-A-PL-SQL-Logging-Utility — GitHub" . Github.com . Consultado el 24 de julio de 2014 .
  39. "Log4db2 de angoca" . Angoca.github.io . Consultado el 24 de julio de 2014 .
  40. "log4cxx - Registro de cambios" . logging.apache.org .
  41. "Manual de Log4r" . log4r.rubyforge.org . Consultado el 13 de abril de 2017 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  42. "Vulnerabilidad de seguridad en Minecraft: Java Edition" . Minecraft . 10 de diciembre de 2021.
  43. Goodin, Dan (9 de diciembre de 2021). "Una vulnerabilidad de día cero en la omnipresente herramienta Log4j supone una grave amenaza para Internet" . Ars Technica . Consultado el 10 de diciembre de 2021 .
  44. "Se filtra en Internet la peor vulnerabilidad de ejecución remota de código (RCE) de Apache Log4j" . Cyber ​​Kendra . 9 de diciembre de 2021. Consultado el 10 de diciembre de 2021 .
  45. 1 2 Mott, Nathaniel (10 de diciembre de 2021). "Innumerables servidores son vulnerables a la vulnerabilidad de día cero de Apache Log4j" . PC Magazine . Recuperado el 10 de diciembre de 2021 .
  46. Newman, Lily Hay (10 de diciembre de 2021). "Internet está en llamas" . Wired vía www.wired.com.
  47. "Declaración del director de CISA, Easterly, sobre la vulnerabilidad de "Log4j" . CISA . Washington. 11 de diciembre de 2021.
  48. "BSI warnt vor Sicherheitslücke" [ BSI advierte sobre vulnerabilidades de seguridad ] . Tagesschau (en alemán). 12 de diciembre de 2021.
  49. "Warnstufe Rot: Schwachstelle Log4Shell führt zu extrem kritischer Bedrohungslage" [ Alarma roja: la vulnerabilidad de Log4Shell provoca una situación de amenaza extremadamente crítica ] . Servicio de prensa de BSI (en alemán). 12 de diciembre de 2021.
  50. «Declaración del Ministro de Defensa Nacional sobre la vulnerabilidad del Apache y llamamiento a las organizaciones canadienses para que tomen medidas urgentes» . Gobierno de Canadá . 12 de diciembre de 2021. Archivado del original el 20 de diciembre de 2021. Consultado el 12 de diciembre de 2021 .
  51. "LOG4J2-3198: Log4j2 ya no formatea las búsquedas en los mensajes por defecto" . GitHub . 5 de diciembre de 2021.
  52. "Restringir el acceso LDAP a través de JNDI por rgoers · Solicitud de extracción n.° 608 · apache/logging-log4j2" . GitHub .Del 30 de noviembre al 5 de diciembre de 2021
  53. "Vulnerabilidades de seguridad en Apache Log4j" . 6 de diciembre de 2021.
  54. "LOG4J2-3208: Deshabilitar JNDI por defecto" . 11 de diciembre de 2021. Consultado el 14 de diciembre de 2021 .
  55. "LOG4J2-3211: Eliminar la compatibilidad con búsquedas en mensajes" . 13 de diciembre de 2021. Consultado el 14 de diciembre de 2021 .

Lecturas adicionales

  • Gülcü, Ceki (febrero de 2010), Manual completo de Log4j (2.ª  ed.), QOS.ch, pág.  204, ISBN 978-2-9700369-0-6
  • Gupta, Samudra (22 de junio de 2005), Pro Apache Log4j (2ª  ed.), Apress , pág.  224, ISBN 978-1-59059-499-5
  • Sitio web oficialEdita esto en Wikidata