Safeguard
Supply Chain•

Log4j had three CVEs in a week: why one patch was not enough

Within a week of Log4Shell, two more Log4j CVEs followed. See the dates, what each fixed and how to plan for follow-up releases after a big disclosure.

Safeguard Security Team
3 min read

After Log4Shell was disclosed on 10 December 2021, two more Log4j CVEs followed within a week: CVE-2021-45046 on 13 December and CVE-2021-45105 on 16 December. Teams that upgraded on day one to 2.15.0 had to upgrade again. The lesson is to plan for follow-up releases, not to stop patching.

The timeline

CISA's advisory AA21-356A, revised on 23 December 2021, lays out the three issues.

  • CVE-2021-44228, 10 December. Remote code execution through JNDI lookups. Affects 2.0-beta9 through 2.14.1 per CISA.
  • CVE-2021-45046, 13 December. Could cause remote code execution, denial of service or other effects in certain non-default configurations. Affects 2.0-beta9 through 2.12.1 and 2.13.0 through 2.15.0.
  • CVE-2021-45105, 16 December. Denial of service in certain non-default configurations, where a Pattern Layout with a Context Lookup allows a recursive lookup and a StackOverflowError.

CISA also reports that CVE-2021-45046 was observed being exploited.

Which version ended up being the target

CISA's guidance for Java 8 or later is Log4j 2.17.0, released on 17 December 2021, or newer. For Java 7 it lists 2.12.3, released on 21 December, and notes that Java 7 is end of life, so moving to Java 8 is recommended. The Apache page lists 2.15.0 as the first fix for the original CVE, which is why early patchers were left exposed to the next one.

Why follow-up fixes happen

The first fix is written under pressure and aimed at the reported exploit. Researchers then look at the same code with fresh attention and find the neighbouring cases. The first Log4j fix did not close every path, so more reports arrived. This is common after a high profile disclosure and does not mean maintainers were careless.

How to plan for it

  1. Do not close the ticket at the first upgrade. Keep it open for at least a few days and watch the project's security page and advisories.
  2. Pick the newest fixed version, not the minimum. If a later fixed release exists when you do the work, use it.
  3. Automate the check. A scheduled dependency scan flags a still vulnerable version after a follow-up CVE lands, without anyone remembering to look.
  4. Keep rollback cheap. Rapid version bumps are safer when you can deploy and revert in minutes.
  5. Record what you did. For each service, note the version before and after and the date. That record answers customer and auditor questions later.

A note on workarounds

CISA lists removing JndiLookup.class from the classpath as a temporary workaround and warns it can cause instability. Treat workarounds as a bridge to the upgrade.

Safeguard's continuous dependency scanning can re-evaluate your SBOMs when new advisories appear, which suits this pattern. For the original bug, see why a logging library ran attacker code.

Quick check

Was 2.15.0 enough?

Not for long. CVE-2021-45046 affected versions up to and including 2.15.0, according to CISA's advisory.

What does CISA recommend for Java 8 or later?

Log4j 2.17.0 or newer, per the revised advisory.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.