# Log4Shell

Log4Shell is een kwetsbaarheid in de loggingsoftware Log4j. Met deze kwetsbaarheid kan een aanvaller code uitvoeren op een server of andere computer alleen door ervoor te zorgen dat een stuk tekst gelogd wordt. De kwetsbaarheid werd door het beveiligingsteam van Alibaba Cloud op 24 november 2021 privé gerapporteerd aan Apache, dat eigenaar is van Log4j, en het werd op 9 december 2021 gepubliceerd. Doordat Log4j veel gebruikt wordt in software, zijn duizenden bedrijven kwetsbaar geweest, waaronder Apple, Tesla en ook de Java-editie van het spel Minecraft.
De kwetsbaarheid maakt gebruik van de message lookup substitution-functie in Log4j, waarmee LDAP-verzoeken over het internet kunnen worden verstuurd om Javacode te downloaden en uit te voeren. Het is officieel geïdentificeerd als CVE-2021-44228 in de databank van Common Vulnerabilities and Exposures. Log4Shell is een van de meest ernstige kwetsbaarheden ooit genoemd, en wordt vergeleken met Heartbleed en Shellshock. De Apache Software Foundation gaf Log4Shell het hoogst mogelijke cijfer, een 10, op het Common Vulnerability Scoring System (CVSS).

## Achtergrond

Log4j is opensourcesoftware die deel is van de Apache Logging Services, een project van de Apache Software Foundation. Met deze software kunnen softwareontwikkelaars in de programmeertaal Java verschillende data in hun applicatie loggen, bijvoorbeeld foutmeldingen. Deze logs kunnen ook gebruikersinvoer bevatten. Log4j wordt alomtegenwoordig gebruikt.
Sinds 2013 kan men met Log4j data ophalen met behulp van het Java Naming and Directory Interface (JNDI), in de vorm van een Java-object. JNDI kan gebruikmaken van verschillende zogeheten directory-interfaces, die elk een ander schema bieden voor het opzoeken van bestanden met die data. Een van deze interfaces is het Lightweight Directory Access Protocol (LDAP), dat de objectgegevens van een URL ophaalt van een geschikte server. Zo'n server kan lokaal of waar dan ook op internet staan.

## Kwetsbaarheid

In de standaardconfiguratie voert Log4j 2 bij het loggen van een tekenreeks eerst tekenreeksvervanging uit op uitdrukkingen van de vorm ${prefix:name}. Bijvoorbeeld, Tekst: ${java:version} kan worden geconverteerd naar Tekst: Java version 1.7.0_67. Een van de herkende uitdrukkingen is ${jndi:<lookup>}; door het opzoeken via LDAP te specificeren, kan een willekeurige URL worden opgevraagd en geladen als Java-objectgegevens. ${jndi:ldap://example.com/file}, bijvoorbeeld, laadt gegevens van die URL als er verbinding is met internet. Door een stuk tekst in te voeren die gelogd wordt, kan een aanvaller kwaadaardige code die wordt gehost op een openbare URL laden en uitvoeren. Zelfs als de uitvoering van de gedownloade code is uitgeschakeld, kan een aanvaller nog steeds gegevens ophalen, zoals geheime omgevingsvariabelen, door ze in de URL te plaatsen, waarin ze worden vervangen en naar de server van de aanvaller worden verzonden.
Omdat HTTP-verzoeken vaak worden gelogd, is een veelvoorkomende aanvalsvector het plaatsen van kwaadaardige teksten in de URL van een HTTP-verzoek, of in een vaak geregistreerde HTTP-header zoals User-Agent. Vroege maatregelen tegen Log4Shell waren onder meer het blokkeren van verzoeken die mogelijk schadelijke inhoud bevatten, zoals "${jndi". Naïeve zoektechnieken kunnen worden omzeild door het verzoek te verdoezelen: ${${lower:J}ndi, bijvoorbeeld, wordt omgezet in een JNDI-zoekopdracht nadat de J in een kleine letter is omgezet. Zelfs als een invoer niet onmiddellijk wordt gelogd, zoals een voornaam, kan deze later tijdens de interne verwerking worden gelogd en de inhoud ervan worden uitgevoerd.

## Maatregelen

Een versie van Log4j waarin de kwetsbaarheid is opgelost, versie 2.15.0, werd op 6 december 2021 uitgebracht. De oplossing bestond uit het beperken van de servers en protocollen die kunnen worden gebruikt voor JNDI-zoekopdrachten, wat kon worden geconfigureerd met behulp van verschillende systeemeigenschappen. Dit verving de systeemeigenschap log4j2.formatMsgNoLookups, die wordt aanbevolen om de kwetsbaarheid in eerdere versies sinds 2.10.0 te verminderen door deze in te stellen op true. Voor versies vóór 2.10.0 moet de Javaklasse org.apache.logging.log4j.core.lookup.JndiLookup uit het klassenpad worden verwijderd.
Vanaf versie 2.16.0 zijn alle functies in Log4j die JNDI gebruiken, standaard uitgeschakeld.
Nieuwere versies van de Java Runtime Environment (JRE) verkleinen dit beveiligingslek ook door te voorkomen dat externe code standaard wordt geladen, hoewel er in bepaalde toepassingen nog steeds andere aanvalsvectoren bestaan. Er zijn verschillende methoden en tools gepubliceerd om het gebruik van kwetsbare log4j-versies in ingebouwde Java-pakketten te helpen detecteren.

## Reacties en impact

Het Nederlandse Nationaal Cyber Security Centrum (NCSC) heeft bedrijven opgeroepen zo snel mogelijk updates te installeren, en heeft gewaarschuwd voor potentieel grote schade. Ook heeft het NCSC een incomplete lijst gepubliceerd met meer dan duizend getroffen software. Onder andere Apache, Apple, Amazon, Atlassian, Cloudflare, ElasticSearch, IBM, Red Hat, Steam, Tesla, Twitter en VMware zijn kwetsbaar geweest.
Ook nationale agentschappen van andere landen riepen op tot directe actie. In de Verenigde Staten noemde de directeur van het Cybersecurity and Infrastructure Security Agency (CISA), Jen Easterly, de kwetsbaarheid "kritiek", en ook het Duitse Federaal Bureau voor Veiligheid in Informatietechnologie (BSI) noemde het een "extreem kritieke dreigingssituatie". Volgens het BSI zijn er ook wereldwijd aanvalspogingen gedaan, waarvan sommige succesvol, maar was de omvang van de bedreiging nog niet vast te stellen.
Volgens de CEO van Cloudflare, Matthew Prince, gingen aanwijzingen van expoitatie van Log4Shell terug tot 1 december, negen dagen voor de openbaring van de kwetsbaarheid. Volgens cyberbeveiligingsbedrijf GreyNoise wordt er vanaf verschillende IP-adressen opportunistisch het internet gescand om de kwetsbaarheid te testen of misbruiken.
Cloudfare heeft gewaarschuwd dat Log4Shell niet alleen voor online systemen een bedreiging vormt. QR-codescanners of contactloze deursloten zouden bijvoorbeeld ook kunnen worden aangevallen, als er van Java en Log4j gebruik gemaakt wordt.

## Externe link

* Common Vulnerabilities and Exposures: CVE-2021-44228
* ↑ (en) McKee, Douglas; Steve Povolny, Log4Shell Vulnerability is the Coal in our Stocking for 2021. McAfee (10 december 2021). Gearchiveerd op 9 oktober 2022.
* ↑ Duizenden bedrijven kwetsbaar door ernstig beveiligingslek. RTL Nieuws (11 december 2021). Gearchiveerd op 26 mei 2023.
* 1 2 Aussems, Michaël, Apple, Amazon en Twitter kwetsbaar voor actief uitgebuite Log4Shell-bug, jouw bedrijf ook?. ITdaily (13 december 2021). Gearchiveerd op 26 mei 2023.
* 1 2 Pankov, Nikolay, Kritieke kwetsbaarheid in Apache Log4j-bibliotheek. Kaspersky Daily. Gearchiveerd op 10 februari 2024.
* 1 2 Groot aantal applicaties getroffen door kritieke kwetsbaarheid in Log4j. Security.nl. Certified Secure (12 december 2021). Gearchiveerd op 20 april 2024.
* ↑ Schellevis, Joost, Stilte voor de storm door groot beveiligingsprobleem: 'Dit gaat niet met een sisser aflopen'. NOS Nieuws (13 december 2021). Gearchiveerd op 18 januari 2024.
* ↑ JNDI Lookup plugin support. Gearchiveerd op 14 december 2021. Geraadpleegd op 14 december 2021 – via Apache's JIRA issue tracker.
* 1 2 3 (en) Graham-Cumming, John, Inside the Log4j2 vulnerability (CVE-2021-44228). The Cloudflare Blog (10 december 2021). Gearchiveerd op 2 maart 2024.
* ↑ (en) Lookups. Apache Logging Sevices. Gearchiveerd op 15 december 2021. Geraadpleegd op 14 december 2021.
* 1 2 (en) Ducklin, Paul, Log4Shell explained – how it works, why you need to know, and how to fix it. Naked Security. Sophos (12 december 2021). Gearchiveerd op 5 juli 2023.
* ↑ (en) Miessler, Daniel, The log4j (Log4Shell) Situation. Unsupervised Learning (13 december 2021). Gearchiveerd op 28 maart 2023.
* ↑ Hahad, Mounir, Apache Log4j Vulnerability CVE-2021-44228 Raises widespread Concerns. Juniper Networks (12 december 2021). Gearchiveerd op 11 januari 2024.
* ↑ Restrict LDAP access via JNDI #608. Gearchiveerd op 15 december 2021. Geraadpleegd op 14 december 2021 – via GitHub.
* ↑ (en) Apache Log4j Security Vulnerabilities. Apache Logging Services. Gearchiveerd op 20 april 2024. Geraadpleegd op 14 december 2021.
* ↑ (en) Changes. Log4j. Gearchiveerd op 13 december 2021. Geraadpleegd op 14 december 2021.
* ↑ (en) Wortley, Free; Chris Thompson; Forrest Allison, Guide: How To Detect and Mitigate the Log4Shell Vulnerability (CVE-2021-44228). LunaSec (13 december 2021). Gearchiveerd op 24 december 2021. Geraadpleegd op 14 december 2021.
* ↑ UPDATE: Installeer updates tegen ernstige kwetsbaarheid in Apache Log4j. Nationaal Cyber Security Centrum (11 december 2021).
* ↑ (en) log4shell. Nationaal Cyber Security Centrum. Geraadpleegd op 14 december 2021 – via GitHub.
* ↑ Internetwaakhond deelt lijst met software die kwetsbaar is voor hackers. NOS Nieuws (12 december 2021).
* ↑ (en) Statement from CISA Director Easterly on "Log4j" Vulnerability. Cybersecurity and Infrastructure Security Agency (11 december 2021).
* 1 2 (de) Sauerwein, Jörg, BSI warnt vor Sicherheitslücke. Tagesschau (12 december 2021).
* ↑ (en) Duckett, Chris, Log4j RCE activity began on December 1 as botnets start using vulnerability. ZDNet. Red Ventures (13 december 2021).
* ↑ (en) Exploit activity for Apache Log4j vulnerability - CVE-2021-44228. Greynoise Research (10 december 2021).