The Log4Shell vulnerability resulted from a combination of risk factors. Let’s look at the most important ones:
1.The Java vulnerability is in the logging library.
A logging library like Log4J seems relatively harmless at first. A logging library is likely to be viewed less critically, in comparison to libraries for authentication or encryption.
2. Java is widely used.
Java’s unique selling point as a language and environment is that Java runs on virtually all platforms. Therefore, the Log4Shell vulnerability can affect an enormous number of programs and services. Java is also partly integrated in embedded systems such as routers and Internet of Things devices. These include private cameras and smart home devices.
3. A stack of technologies is involved.
The security problem arises from the linking of several technologies. The combination of Log4J, JNDI, LDAP and string substitutions leads to the security gap and opens the door to attacks.
4. The exploit seeps to deeper levels.
In a best-case scenario, the damage can remain localized if a vulnerability only affects the vulnerable system. However, let’s imagine that an exploit string is received and logged with a web interface. The exploit string can possibly be passed on to underlying systems and only become active when evaluated there.
5. Exploit strings are difficult to detect.
There are many ways to disguise malicious code due to the complexity of possible substitutions. For example, nested substitutions are possible. A string of the form ${${lower:j}ndi} doesnot directly contain the string jndi and cannot be automatically filtered. The string ${jndi} is only created during resolution. It is also possible to disguise parts of the code with Base64 encoding, evaluating the string ${base64:SGVsbG8gV29ybGQhCg==} to “Hello World!”.