This is an automated email from the ASF dual-hosted git repository.
rgoers pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/release-2.x by this push:
new 9c13b8bbac Prepare for release 2.19.0
9c13b8bbac is described below
commit 9c13b8bbac92db5d05dae15cd40dfcc42bf0276f
Author: Ralph Goers <[email protected]>
AuthorDate: Fri Sep 9 00:03:55 2022 -0700
Prepare for release 2.19.0
---
RELEASE-NOTES.md | 152 ++++++++++++++----------------------------
pom.xml | 2 +-
src/changes/announcement.vm | 5 +-
src/changes/changes.xml | 2 +-
src/site/markdown/security.md | 26 ++++++--
5 files changed, 76 insertions(+), 111 deletions(-)
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 6d696d7625..d705f3ab46 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -14,9 +14,9 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-# Apache Log4j 2.18.0 Release Notes
+# Apache Log4j 2.19.0 Release Notes
-The Apache Log4j 2 team is pleased to announce the Log4j 2.18.0 release!
+The Apache Log4j 2 team is pleased to announce the Log4j 2.19.0 release!
Apache Log4j is a well known framework for logging application behavior. Log4j
2 is an upgrade
to Log4j that provides significant improvements over its predecessor, Log4j
1.x, and provides
@@ -30,123 +30,71 @@ The artifacts may be downloaded from
https://logging.apache.org/log4j/2.x/downlo
This release primarily contains bug fixes and minor enhancements.
Due to a break in compatibility in the SLF4J binding, Log4j now ships with two
versions of the SLF4J to Log4j adapters.
-log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and
log4j-slf4j18-impl should be used with SLF4J 1.8.x and
-later. SLF4J-2.0.0 alpha releases are not fully supported. See
https://issues.apache.org/jira/browse/LOG4J2-2975 and
-https://jira.qos.ch/browse/SLF4J-511.
+log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and
log4j-slf4j2-impl should be used with SLF4J 2.x and
+later. SLF4J-1.8.x is no longer supported as a GA release never occurred.
-The Log4j 2.18.0 API, as well as many core components, maintains binary
compatibility with previous releases.
+The Log4j 2.19.0 API, as well as many core components, maintains binary
compatibility with previous releases.
-## GA Release 2.18.0
+## GA Release 2.19.0
Changes in this version include:
### New Features
-* [LOG4J2-3495](https://issues.apache.org/jira/browse/LOG4J2-3495):
-Add MutableThreadContextMapFilter.
-* [LOG4J2-3472](https://issues.apache.org/jira/browse/LOG4J2-3472):
-Add support for custom LMAX disruptor WaitStrategy configuration.
-* [LOG4J2-3419](https://issues.apache.org/jira/browse/LOG4J2-3419):
-Add support for custom Log4j 1.x levels.
-* [LOG4J2-3440](https://issues.apache.org/jira/browse/LOG4J2-3440):
-Add support for adding and retrieving appenders in Log4j 1.x bridge.
-* [LOG4J2-3362](https://issues.apache.org/jira/browse/LOG4J2-3362):
-Add support for Jakarta Mail API in the SMTP appender.
-* [LOG4J2-3483](https://issues.apache.org/jira/browse/LOG4J2-3483):
-Add support for Apache Extras' RollingFileAppender in Log4j 1.x bridge.
-* [LOG4J2-3538](https://issues.apache.org/jira/browse/LOG4J2-3538):
-Add support for 24 colors in highlighting Thanks to Pavel_K.
+* [LOG4J2-3583](https://issues.apache.org/jira/browse/LOG4J2-3583):
+Add support for SLF4J2 stack-valued MDC. Thanks to Pierrick Terrettaz.
+* [LOG4J2-2975](https://issues.apache.org/jira/browse/LOG4J2-2975):
+Add implementation of SLF4J2 fluent API. Thanks to Daniel Gray.
### Fixed Bugs
-* [LOG4J2-3339](https://issues.apache.org/jira/browse/LOG4J2-3339):
-DirectWriteRolloverStrategy should use the current time when creating files.
-* [LOG4J2-3534](https://issues.apache.org/jira/browse/LOG4J2-3534):
-Fix LevelRangeFilterBuilder to align with log4j1's behavior.
-* [LOG4J2-3527](https://issues.apache.org/jira/browse/LOG4J2-3527):
-Don't use Paths.get() to avoid circular file systems.
-* [LOG4J2-3490](https://issues.apache.org/jira/browse/LOG4J2-3490):
-The DirectWriteRolloverStrategy was not detecting the correct index to use
during startup.
-* [LOG4J2-3432](https://issues.apache.org/jira/browse/LOG4J2-3432):
-SizeBasedTriggeringPolicy would fail to rename files properly when integer
pattern contained a leading zero.
-* [LOG4J2-3491](https://issues.apache.org/jira/browse/LOG4J2-3491):
-Async Loggers were including the location information by default. Thanks to
Avihai Marchiano.
-* [LOG4J2-1376](https://issues.apache.org/jira/browse/LOG4J2-1376):
-Allow enterprise id to be an OID fragment.
-* [LOG4J2-3493](https://issues.apache.org/jira/browse/LOG4J2-3493):
-ClassArbiter's newBuilder method referenced the wrong class. Thanks to Dmytro
Voloshyn.
-* [LOG4J2-3481](https://issues.apache.org/jira/browse/LOG4J2-3481):
-HttpWatcher did not pass credentials when polling.
-* [LOG4J2-3482](https://issues.apache.org/jira/browse/LOG4J2-3482):
-UrlConnectionFactory.createConnection now accepts an AuthorizationProvider as
a parameter.
-* [LOG4J2-3477](https://issues.apache.org/jira/browse/LOG4J2-3477):
-Add the missing context stack to JsonLayout template. Thanks to filipc.
-* [LOG4J2-3393](https://issues.apache.org/jira/browse/LOG4J2-3393):
-Improve JsonTemplateLayout performance.
-* [LOG4J2-3424](https://issues.apache.org/jira/browse/LOG4J2-3424):
-Properties defined in configuration using a value attribute (as opposed to
element) are read correctly.
-* [LOG4J2-3413](https://issues.apache.org/jira/browse/LOG4J2-3413):
-Fix resolution of non-Log4j properties.
-* [LOG4J2-3423](https://issues.apache.org/jira/browse/LOG4J2-3423):
-JAR file containing Log4j configuration isn't closed. Thanks to Radim Tlusty.
-* [LOG4J2-3425](https://issues.apache.org/jira/browse/LOG4J2-3425):
-Syslog appender lacks the SocketOptions setting. Thanks to Jiří Smolík.
-* [](https://issues.apache.org/jira/browse/LOG4J2-3425):
-Improve validation and reporting of configuration errors.
-* [](https://issues.apache.org/jira/browse/LOG4J2-3425):
-Log4j 1.2 bridge should generate Log4j 2.x messages based on the parameter
runtime type.
-* [LOG4J2-3426](https://issues.apache.org/jira/browse/LOG4J2-3426):
-Log4j 1.2 bridge should not wrap components unnecessarily. Thanks to Pooja
Pandey.
-* [LOG4J2-3418](https://issues.apache.org/jira/browse/LOG4J2-3418):
-Fixes Spring Boot logging system registration in a multi-application
environment.
-* [LOG4J2-3040](https://issues.apache.org/jira/browse/LOG4J2-3040):
-Avoid ClassCastException in JeroMqManager with custom LoggerContextFactory
#791. Thanks to LF-Lin.
-* [](https://issues.apache.org/jira/browse/LOG4J2-3040):
-Fix minor typo #792. Thanks to LF-Lin.
-* [LOG4J2-3439](https://issues.apache.org/jira/browse/LOG4J2-3439):
-Fixes default SslConfiguration, when a custom keystore is used. Thanks to
Jayesh Netravali.
-* [LOG4J2-3447](https://issues.apache.org/jira/browse/LOG4J2-3447):
-Fixes appender concurrency problems in Log4j 1.x bridge. Thanks to Pooja
Pandey.
-* [LOG4J2-3452](https://issues.apache.org/jira/browse/LOG4J2-3452):
-Fix and test for race condition in FileUtils.mkdir(). Thanks to Stefan Vodita.
-* [LOG4J2-3458](https://issues.apache.org/jira/browse/LOG4J2-3458):
-LocalizedMessage logs misleading errors on the console.
-* [LOG4J2-3359](https://issues.apache.org/jira/browse/LOG4J2-3359):
-Fixes the syslog appender in Log4j 1.x bridge, when used with a custom layout.
Thanks to Tukesh.
-* [LOG4J2-3359](https://issues.apache.org/jira/browse/LOG4J2-3359):
-log4j-1.2-api 2.17.2 throws NullPointerException while removing appender with
name as null. Thanks to Rajesh.
-* [LOG4J2-2872](https://issues.apache.org/jira/browse/LOG4J2-2872):
-Fix problem with non-uppercase custom levels. Thanks to Alla Gofman.
-* [LOG4J2-3475](https://issues.apache.org/jira/browse/LOG4J2-3475):
-Add missing message parameterization in RegexFilter. Thanks to Jeremy Lin.
-* [LOG4J2-3428](https://issues.apache.org/jira/browse/LOG4J2-3428):
-Update 3rd party dependencies for 2.18.0.
-* [LOG4J2-3531](https://issues.apache.org/jira/browse/LOG4J2-3531):
-Fix parsing error, when XInclude is disabled. Thanks to Simo Nikula.
-* [LOG4J2-3537](https://issues.apache.org/jira/browse/LOG4J2-3537):
-Fixes problem with wrong ANSI escape code for bright colors Thanks to Pavel_K.
+* [LOG4J2-3578](https://issues.apache.org/jira/browse/LOG4J2-3578):
+Generate new SSL certs for testing.
+* [LOG4J2-3556](https://issues.apache.org/jira/browse/LOG4J2-3556):
+Make JsonTemplateLayout stack trace truncation operate for each label block.
Thanks to Arthur Gavlyukovskiy.
+* [LOG4J2-3550](https://issues.apache.org/jira/browse/LOG4J2-3550):
+SystemPropertyArbiter was assigning the value as the name. Thanks to
DongjianPeng.
+* [LOG4J2-3560](https://issues.apache.org/jira/browse/LOG4J2-3560):
+Logger$PrivateConfig.filter(Level, Marker, String) was allocating empty
varargs array. Thanks to David Schlosnagle.
+* [LOG4J2-3561](https://issues.apache.org/jira/browse/LOG4J2-3561):
+Allows a space separated list of style specifiers in the %style pattern for
consistency with %highlight. Thanks to Robert Papp.
+* [LOG4J2-3564](https://issues.apache.org/jira/browse/LOG4J2-3564):
+Fix NPE in `log4j-to-jul` in the case the root logger level is null.
+* [LOG4J2-3545](https://issues.apache.org/jira/browse/LOG4J2-3545):
+Add correct manifest entries for OSGi to log4j-jcl Thanks to Johan Compagner.
+* [LOG4J2-3565](https://issues.apache.org/jira/browse/LOG4J2-3565):
+Fix RollingRandomAccessFileAppender with DirectWriteRolloverStrategy can't
create the first log file of different directory.
+* [LOG4J2-3579](https://issues.apache.org/jira/browse/LOG4J2-3579):
+Fix ServiceLoaderUtil behavior in the presence of a SecurityManager. Thanks to
Boris Unckel.
+* [LOG4J2-3559](https://issues.apache.org/jira/browse/LOG4J2-3559):
+Fix resolution of properties not starting with `log4j2.`. Thanks to Gary
Gregory.
+* [LOG4J2-3557](https://issues.apache.org/jira/browse/LOG4J2-3557):
+Fix recursion between Log4j 1.2 LogManager and Category. Thanks to Andreas
Leitgeb.
+* [LOG4J2-3587](https://issues.apache.org/jira/browse/LOG4J2-3587):
+Fix regression in Rfc5424Layout default values. Thanks to Tomas Micko.
+* [LOG4J2-3548](https://issues.apache.org/jira/browse/LOG4J2-3548):
+Improve support for passwordless keystores. Thanks to Kristof Farkas-Pall.
### Changes
-* [LOG4J2-3536](https://issues.apache.org/jira/browse/LOG4J2-3536):
-Upgrade the Flume Appender to Flume 1.10.0
-* [LOG4J2-3516](https://issues.apache.org/jira/browse/LOG4J2-3516):
-Move perf tests to log4j-core-its
-* [LOG4J2-3506](https://issues.apache.org/jira/browse/LOG4J2-3506):
-Support Spring 2.6.x.
-* [LOG4J2-3473](https://issues.apache.org/jira/browse/LOG4J2-3473):
-Make the default disruptor WaitStrategy used by Async Loggers garbage-free.
-* [LOG4J2-3476](https://issues.apache.org/jira/browse/LOG4J2-3476):
-Do not throw UnsupportedOperationException when JUL ApiLogger::setLevel is
called.
-* [LOG4J2-3427](https://issues.apache.org/jira/browse/LOG4J2-3427):
-Improves ServiceLoader support on servlet containers.
-
+* [LOG4J2-3572](https://issues.apache.org/jira/browse/LOG4J2-3572):
+Add getExlicitLevel method to LoggerConfig.
+* [LOG4J2-3589](https://issues.apache.org/jira/browse/LOG4J2-3589):
+Allow Plugins to be injected with the LoggerContext reference.
+* [LOG4J2-3588](https://issues.apache.org/jira/browse/LOG4J2-3588):
+Allow PropertySources to be added.
+
+### Removed
+* [LOG4J2-3573](https://issues.apache.org/jira/browse/LOG4J2-3573):
+Removed build page in favor of a single build instructions file. Thanks to
Wolff Bock von Wuelfingen.
+* [LOG4J2-3590](https://issues.apache.org/jira/browse/LOG4J2-3590):
+Remove SLF4J 1.8.x binding.
---
-Apache Log4j 2.18.0 requires a minimum of Java 8 to build and run.
+Apache Log4j 2.19.0 requires a minimum of Java 8 to build and run.
Log4j 2.12.4 is the last release to support Java 7.
Log4j 2.3.2 is the last release to support Java 6.
Java 6 and Java 7 are no longer supported by the Log4j team.
For complete information on Apache Log4j 2, including instructions on how to
submit bug
-reports, patches, or suggestions for improvement, see the Apache Log4j 2
website:
+reports, patches, or suggestions for improvement, see the Apache Apache Log4j
2 website:
https://logging.apache.org/log4j/2.x/
diff --git a/pom.xml b/pom.xml
index b139e16e21..446cea3d17 100644
--- a/pom.xml
+++ b/pom.xml
@@ -229,7 +229,7 @@
<properties>
<!-- make sure to update these for each release! -->
<log4jParentDir>${basedir}</log4jParentDir>
- <Log4jReleaseVersion>2.18.0</Log4jReleaseVersion>
+ <Log4jReleaseVersion>2.19.0</Log4jReleaseVersion>
<Log4jReleaseVersionJava7>2.12.4</Log4jReleaseVersionJava7>
<Log4jReleaseVersionJava6>2.3.2</Log4jReleaseVersionJava6>
<Log4jReleaseManager>Ralph Goers</Log4jReleaseManager>
diff --git a/src/changes/announcement.vm b/src/changes/announcement.vm
index 8372038d69..06423d9e6e 100644
--- a/src/changes/announcement.vm
+++ b/src/changes/announcement.vm
@@ -68,9 +68,8 @@ The artifacts may be downloaded from
https://logging.apache.org/log4j/2.x/downlo
This release primarily contains bug fixes and minor enhancements.
Due to a break in compatibility in the SLF4J binding, Log4j now ships with two
versions of the SLF4J to Log4j adapters.
-log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and
log4j-slf4j18-impl should be used with SLF4J 1.8.x and
-later. SLF4J-2.0.0 alpha releases are not fully supported. See
https://issues.apache.org/jira/browse/LOG4J2-2975 and
-https://jira.qos.ch/browse/SLF4J-511.
+log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and
log4j-slf4j2-impl should be used with SLF4J 2.x and
+later. SLF4J-1.8.x is no longer supported as a GA release never occurred.
The Log4j ${relVersion} API, as well as many core components, maintains binary
compatibility with previous releases.
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index fbb89c5003..38d90f44a5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -29,7 +29,7 @@
- "update" - Change
- "remove" - Removed
-->
- <release version="2.19.0" date="2022-MM-DD" description="GA Release
2.19.0">
+ <release version="2.19.0" date="2022-09-09" description="GA Release
2.19.0">
<action issue="LOG4J2-3572" dev="rgeors" type="update">
Add getExlicitLevel method to LoggerConfig.
</action>
diff --git a/src/site/markdown/security.md b/src/site/markdown/security.md
index c688ed6b0f..4cf9320cc6 100644
--- a/src/site/markdown/security.md
+++ b/src/site/markdown/security.md
@@ -137,7 +137,9 @@ Alternatively, this infinite recursion issue can be
mitigated in configuration:
* In PatternLayout in the logging configuration, replace Context Lookups like
`${ctx:loginId}` or `$${ctx:loginId}` with Thread Context Map patterns (%X,
%mdc, or %MDC).
* Otherwise, in the configuration, remove references to Context Lookups like
`${ctx:loginId}` or `$${ctx:loginId}` where they originate
-from sources external to the application such as HTTP headers or user input.
+from sources external to the application such as HTTP headers or user input.
Note that this mitigation is insufficient in
+releases older than 2.12.2 (Java 7), and 2.16.0 (Java 8 and later) as the
issues fixed in those releases will
+still be present.
Note that only the log4j-core JAR file is impacted by this vulnerability.
Applications using only the log4j-api JAR file without the log4j-core JAR file
are not impacted by this vulnerability.
@@ -188,7 +190,10 @@ It was found that the fix to address
[CVE-2021-44228](https://cve.mitre.org/cgi-
When the logging configuration uses a non-default Pattern Layout with a
Context Lookup (for example, $${ctx:loginId}),
attackers with control over Thread Context Map (MDC) input data can craft
malicious input data using a JNDI Lookup pattern,
resulting in an information leak and remote code execution in some
environments and local code execution in all environments;
-remote code execution has been demonstrated on macOS, Fedora, Arch Linux, and
Alpine Linux.
+remote code execution has been demonstrated on macOS, Fedora, Arch Linux, and
Alpine Linux.
+
+Note that this vulnerability is not limited to just the JDNI lookup. Any other
Lookup could also be included in a
+Thread Context Map variable and possibly have private details exposed to
anyone with access to the logs.
### Mitigation
@@ -203,6 +208,11 @@ Implement one of the following mitigation techniques:
* Upgrade to Log4j 2.3.1 (for Java 6), 2.12.3 (for Java 7), or 2.17.0 (for
Java 8 and later).
* Otherwise, in any release other than 2.16.0, you may remove the `JndiLookup`
class from the classpath: `zip -q -d log4j-core-*.jar
org/apache/logging/log4j/core/lookup/JndiLookup.class`
+Users are advised that while removing the JndiLookup class prevents a
potential RCE from occuring, it still leaves
+the application vulnerable to other misuse of Lookups in Thread Context Map
data. While the mitigations listed below in
+the history section help in some situations, the only real solution is to
upgarde to one of the releases listed in the
+first bullet above (or a newer release).
+
Users are advised not to enable JNDI in Log4j 2.16.0, since it still allows
LDAP connections.
If the JMS Appender is required, use one of these versions: 2.3.1, 2.12.2,
2.12.3 or 2.17.0:
from these versions onwards, only the JAVA protocol is supported in JNDI
connections.
@@ -280,7 +290,9 @@ Additional vulnerability details discovered independently
by Ash Fox of Google,
## <a name="log4j-2.15.0"/> Fixed in Log4j 2.15.0 (Java 8)
[CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228):
Apache Log4j2 JNDI
-features do not protect against attacker controlled LDAP and other JNDI
related endpoints.
+features do not protect against attacker controlled LDAP and other JNDI
related endpoints. Log4j2 allows
+Lookup expressions in the data being logged exposing the JNDI vulnerability,
as well as other problems,
+to be exploited by end users whose input is being logged.
|[CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228)
| Remote Code Execution |
| ----------------- | -------- |
@@ -293,7 +305,7 @@ In Apache Log4j2 versions up to and including 2.14.1
(excluding security release
the JNDI features used in configurations, log messages, and parameters do not
protect against attacker-controlled LDAP and other JNDI related endpoints.
An attacker who can control log messages or log message parameters can execute
-arbitrary code loaded from LDAP servers when message lookup substitution is
enabled.
+arbitrary code loaded from LDAP servers when message lookup substitution is
enabled.
### Mitigation
@@ -312,6 +324,12 @@ Implement one of the following mitigation techniques:
* Upgrade to Log4j 2.3.1 (for Java 6), 2.12.3 (for Java 7), or 2.17.0 (for
Java 8 and later).
* Otherwise, in any release other than 2.16.0, you may remove the `JndiLookup`
class from the classpath: `zip -q -d log4j-core-*.jar
org/apache/logging/log4j/core/lookup/JndiLookup.class`
+Note that simply removing the JndiLookup only resolves one of the two bugs
exposed in CVE-2021-44228. This still
+allows users to enter lookup strings into input fields and cause them to be
evaluated, which can cause StackOverflowExceptions
+or potentially expose private data to anyone provided access to the logs.
While the mitigations listed below in the
+history section help in some situations, the only real solution is to upgarde
to one of the releases listed in the
+first bullet above (or a newer release).
+
Note that only the log4j-core JAR file is impacted by this vulnerability.
Applications using only the log4j-api JAR file without the log4j-core JAR file
are not impacted by this vulnerability.