Skip to main content
ZombieMutex

30 results · ↑ ↓ navigate · Enter open · Esc close

All CVEs

ZombieMutex / Security research / Technical write-up

CVE-2021-44228 — Apache Log4j JNDI lookup (Log4Shell)

Apache Software Foundation · Log4j 2 log4j-core · Backend

Critical · 10.0 CISA KEV Disclosed 2021-12-10· Editorial review 2026-11-08
View NVD record

My engineering notes on a third-party disclosed vulnerability. I didn't discover this CVE or test it against a real target. Source-backed facts are distinguished from defensive recommendations and conceptual models.

01 / Description

What happened

Attacker-controlled text in certain Log4j 2 logging paths could reach JNDI lookups and enable remote code execution in vulnerable configurations.

The thing I keep coming back to with Log4Shell is the trust boundary: code intended to record a string could interpret it as an instruction to look something up elsewhere. It's an unusually good example of how a convenience feature inside a dependency can become a remote execution path.

The part I'd remember

A user-controlled string belongs in a log as data. It must not become a command to resolve remote code.

02 / Severity

Metrics

CVSS v3.1 base score

10.0 / 10

Severity

Critical

Score source

NVD

CVSS 3.1 vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

NVD CVSS v3.1 base score. Individual applications' runtime exposure depends on log4j-core versions, lookup behavior and how data reaches logging.

CISA Known Exploited Vulnerability

This vulnerability appears in CISA's KEV catalog. That is evidence of exploitation in the wild, not proof that a particular installation was attacked.

Check CISA entry

03 / Affected scope

Known affected software

Affected Log4j 2 log4j-core versions and configurations. The issue does not apply merely because a Java application is present. A curated, source-attributed overview—not a complete CPE inventory or version classifier.

Product / branchCondition / fixStatus
Affected Log4j 2 log4j-core releasesThe public CVE record describes affected versions from 2.0-beta9 through 2.15.0, with specific security-release exceptions.Conditional
Corrected Log4j security releasesApache's security record documents fixed release branches; use a currently supported fixed version.Fixed
Applications with Java but no affected log4j-coreJava itself, or log4j-api without an affected log4j-core runtime, does not establish this CVE exposure.Not affected

For the exhaustive affected-software matrices, current hotfixes and CPE strings, use the vendor/CVE/NVD records linked below. An affected product family alone does not establish exposure.

04 / Engineering notes

How I'd think through it

01Logging isn't supposed to be execution

An attacker might control a header, request field or other text that eventually gets written to a log. In affected Log4j versions and configurations, lookup substitution could evaluate a JNDI expression rather than record it as inert text.

That crossed two trust boundaries: from untrusted request data into a privileged application logging component, and from a log string into a remote naming/resource lookup. The resulting code-execution risk was severe.

02Why inventory was so painful

Lots of Java applications depended on Log4j indirectly, including shaded and transitive JARs. The root application dependency file wasn't enough to tell whether vulnerable log4j-core was actually present.

I check runtime artifacts and deployment bundles instead of inferring exposure from 'runs Java'. I also want the application's exact logging behavior and whether the vulnerable feature is reachable.

03What a durable fix looks like

Upgrade to an appropriate currently supported, fixed Log4j release and verify the runtime artifact. The original vulnerability was followed by additional related fixes, so pinning to an early emergency mitigation isn't a good long-term maintenance plan.

If the service was exposed while vulnerable, patching is only the starting point. Logs, egress patterns, changes to the host and the broader incident timeline deserve an evidence-led review.

05 / Classification

Weakness enumeration

  • CWE-917Improper neutralization of special elements used in an expression language statement

Weakness identifiers describe categories of mistakes, not a step-by-step exploit procedure.

06 / Evidence trail

References and further reading

These links leave ZombieMutex and point to the original vulnerability records, vendor guidance and supporting research. An outbound link is not an endorsement.

ReferenceSource / purpose
NVD vulnerability recordNVD
Apache security advisoryVendor
CISA KEV catalogCISA
CVE program recordCVE record · affected components

What supports the conclusions

  • NVD records the 10.0 CVSS v3.1 score and the remote lookup behavior.
  • The CVE record explicitly distinguishes log4j-core from unrelated Apache Logging components.
  • This write-up is an architecture and defensive analysis, not a claimed personal discovery or an exploit demonstration.

07 / Editorial record

Scope, limitations and review history

CVE publication
2021-12-10
Editorial snapshot reviewed
2026-11-08
Source score
NVD · CVSS v3.1
Research method
Public-source analysis, not hands-on exploitation

Fix versions and related vulnerabilities differ by support branch; the authoritative Apache security page should decide remediation. The affected-version summary here does not replace dependency or runtime validation.

This is a third-party disclosed CVE explained in my engineering notebook. I don't claim to have discovered it, tested impacted customer systems or received a bug bounty for it. Use current official vendor guidance for security decisions.

Public conversation / GitHub Discussions

Discuss this article

Read and reply using GitHub Discussions. A GitHub account is needed to post. Comments are public and subject to GitHub moderation.

For privacy, the external giscus widget does not load until you choose to open it. Opening it connects your browser to giscus and GitHub. Do not post credentials or private project data.