I know the wish list of all Java developers for Santa starts with "No more
Log4J vulnerabilities". However sometimes even Santa cannot fulfill all your
wishes. A new security vulnerability was found in Log4J 2.0-alpha7 to 2.17.0
excluding 2.3.2 and 2.12.4.
The new vulnerability allows Remote Code Execution (RCE) attack where an
attacker with permission to modify the logging configuration file can
construct a malicious configuration using a JDBC Appender with a data source
referencing a JNDI URI which can execute remote code.
Unlike the
CVE-2021-44228
that triggered the domino effect of Log4J vulnerabilities,
CVE-2021-44832 is marked as a moderated risk since it requires access to your Log4J
configuration. For those who don't know, projects using Log4J with the
CVE-2021-44228 vulnerability can be exploited by submitting modified HTTP
requests.
On the other hand, CVE-2021-44832 requires direct access to the Log4J configuration for an outsider. If somebody got the access to your system to modify the Log4J configuration, you are already doomed. Therefore, you may not need to rush to apply the patch if your system is already secure enough.
Similar to CVE-2021-44228 and CVE-2021-45105, CVE-2021-44832 also affects log4j-core only.
The CVE-2021-44832 issue particularly hasn't affect Log4J 1.x versions.
However, Log4J 1.x is not maintained anymore and do not expect any security
patches in case if a security vulnerability is found in the future. Based on
Java versions, upgrade to the latest version with the fix for all known
security vulnerabilities so far.
| Java Version | Latest Log4J Version |
| Java 8 and later | Log4j 2.17.1 |
| Java 7 | Log4j 2.12.4 |
| Java 6 | Log4j 2.3.2 |
The latest Log4J versions in the above table have fixed the issue by limiting JNDI data source names to the java protocol.
Let me repeat
the process for developers to identify the vulnerable Log4J versions.
Run
the following command from your project folder.
mvn dependency:tree
Any
Log4J dependency with a version less than 2.17.1 is most likely vulnerable or unmaintained.
Maven central repository has a new column with the number of vulnerabilities
in each Log4j version.
If
you encounter any vulnerable Log4j versions as your direct dependencies
defined in your pom file, or in your parent pom file, upgrade them
immediately. Remember by defining the following dependency in your pom file,
you can override the dependency defined in your parent pom file.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.1</version>
</dependency>
Image Credits: Google
A vulnerable Log4J library can be buried under a multi-level dependency tree.
If any of your libraries are using a vulnerable dependency, look for their
latest fixed versions or talk to your security team.