The object is not "remote code execution is bad" or "open source is underfunded." It is a logging library that treated the text of a log message as a lookup language. Apache Log4j 2, in the log4j-core JAR, scanned that text for ${...} and replaced those strings with values from lookups. One lookup was JNDI — the Java Naming and Directory Interface, Java's way of finding an object by name. The name can be local. It can also be a URL that sends the process to an LDAP or RMI server. An attacker who could get ${jndi:ldap://...} into a log line — a User-Agent, a search box, an error message — could make the process fetch and run code. That hole is CVE-2021-44228, Log4Shell. On 17 December 2021 the U.S. Cybersecurity and Infrastructure Security Agency issued Emergency Directive 22-02. The first required act was not a patch. It was: enumerate internet-facing stacks and check them against a community GitHub list, because agencies could not otherwise say where the JAR was.
Domain: a volunteer Apache logging library whose message-lookup feature sits inside other people's products as a transitive JAR — a library your library uses, not one you listed yourself — and a federal emergency whose first clock is "find it." The comparison class is any widely embedded library that interpolates untrusted content, and any emergency response that has to start with a crowd-sourced product list.
If that reading is right, logging a User-Agent with parameterized logging would not count as safe while message lookups still run on the formatted line. A volunteer project's "lookups" page would not count as just logging. Patching log4j-core would not count as the close if the agency cannot name the products that ship it. An emergency directive whose first action is a GitHub list would be evidence the inventory was missing, not a recap of a CVSS score. Disabling JNDI by default in 2.15.0 would not count as the close if 2.16.0 still had to remove message lookups.
Ostensive specimen: Apache Logging Services, Security, CVE-2021-44228. log4j-core, versions 2.0-beta9 through 2.15.0 (with later 2.3.1 / 2.12.2 backports). CVSS 10.0. "In Log4j, the JNDI features used in configurations, log messages, and parameters do not protect against attacker-controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers." Only log4j-core is impacted, not log4j-api. Credits: Chen Zhaojun of Alibaba Cloud Security Team. https://logging.apache.org/log4j/2.x/security.html#CVE-2021-44228 NVD: https://nvd.nist.gov/vuln/detail/CVE-2021-44228
CISA, Apache Log4j Vulnerability Guidance, still live. CVE-2021-44228 "exists in the action the Java Naming and Directory Interface (JNDI) takes to resolve variables." Affected versions "contain JNDI features—such as message lookup substitution—that 'do not protect against adversary-controlled LDAP and other JNDI related endpoints.'" On 17 December 2021 CISA issued Emergency Directive 22-02, directing federal civilian executive branch agencies to address Log4j vulnerabilities, "most notably, CVE-2021-44228," and to patch vulnerable internet-facing assets immediately. https://www.cisa.gov/news-events/news/apache-log4j-vulnerability-guidance
The directive itself, closed 8 April 2022 and still up. ED 22-02: Mitigate Apache Log4j Vulnerability. Required actions by 5 pm EST on 23 December 2021: (1) enumerate all solution stacks that accept data from the internet; (2) evaluate those assets against the CISA-managed GitHub repository https://github.com/cisagov/log4j-affected-db to see whether Log4j is present and affected, and submit a pull request if the product is missing; (3) for assets affected by CVE-2021-44228, patch under an emergency change window, or mitigate, or take them off the network. https://www.cisa.gov/news-events/directives/ed-22-02-mitigate-apache-log4j-vulnerability-closed Press, 17 December 2021: "The log4j vulnerabilities pose an unacceptable risk to federal network security," CISA Director Jen Easterly. https://www.cisa.gov/news-events/news/cisa-issues-emergency-directive-requiring-federal-agencies-mitigate-apache-log4j-vulnerabilities
What Apache itself says about who ships the library, not a story about a named maintainer. Logging Services support page: "The Apache Software Foundation does not employ individuals to develop and support any of its projects. The individuals who contribute to Apache projects do it either as part of specific tasks assigned to them by their employer, on their own initiative to benefit their employer, or on their own free time." https://logging.apache.org/support.html Versioning and maintenance policy: "Because the project is volunteer-driven, any PMC member may choose to create a release for an EOM version, but such releases should be considered exceptional." https://logging.apache.org/log4j/2.x/versioning.html ASF blog, 5 August 2015, Christian Grobmeier, then Vice President of Apache Logging Services: "All our volunteer efforts are now going into Log4j 2." https://news.apache.org/foundation/entry/apache_logging_services_project_announces
The incomplete first patch, on CISA's own joint alert. AA21-356A, 23 December 2021: Log4Shell disclosed 10 December 2021, versions 2.0-beta9 to 2.14.1. CVE-2021-45046, disclosed 13 December: the 2.15.0 fix was incomplete in some non-default layouts; Apache released 2.16.0. GitHub advisory GHSA-jfh8-c2jp-5v3q: 2.16.0 "disables JNDI by default and completely removes support for message lookups." https://www.cisa.gov/news-events/cybersecurity-advisories/aa21-356a https://github.com/advisories/GHSA-jfh8-c2jp-5v3q
This post is the public case, not a recap of an essay.