Table of Contents[Ferstopje][Toanje]
Log4Shell, in ynternetkwetsberens, hat koartlyn miljoenen masines beynfloede. Log4j, in ûndúdlik noch hast oeral plak software, feroarsaket it.
Log4j wurdt brûkt om alle aksjes te loggen dy't efter de skermen foarkomme yn in ferskaat oan kompjûtersystemen.
It is basearre op in iepen boarne logboekbibleteek dy't wurdt brûkt troch bedriuwen en sels regearingsorganisaasjes yn 'e measte applikaasjes.
As ien fan 'e slimste gatten foar cyberfeiligens dy't ea ûntdutsen binne, is it kritysk om jo systemen te beskermjen tsjin dizze kwetsberens. Mar, hoe?
Litte wy de kwetsberens fan Log4j yn detail ûndersykje en alle mooglike oplossings foar reparaasje dêrfoar.
Wat is Log4j?
log4j is in iepen-boarne logging-ramt dat software-ûntwikkelders mooglik makket ferskate gegevens yn har applikaasjes op te nimmen. It is in ûnderdiel fan it projekt Apache Logging Services, dat wurdt rinne troch de Apache Software Foundation.
Hûnderten websiden en apps brûke Log4j om krityske operaasjes út te fieren, lykas loggegevens foar debuggen en oare gebrûk.
As jo ynfiere of klikke op in minne online keppeling en krije in 404 flater notice, dit is in faak foarbyld fan Log4j op it wurk. De webtsjinner dy't it domein rint fan 'e webkeppeling dy't jo tagong hawwe besocht, ynformearret jo dat sa'n webside net bestiet. It logt ek it evenemint yn Log4j foar de systeembehearders fan de tsjinner.
Troch softwareprogramma's wurde ferlykbere diagnostyske sinjalen brûkt. Yn it online spultsje Minecraft, bygelyks, brûkt de tsjinner Log4j om aktiviteit te loggen lykas totale RAM brûkt en brûkersynstruksjes stjoerd nei de konsole.
Hoe komt de kwetsberens foar?
Lookups binne in nije funksje yntrodusearre yn Log4j 2.0, dy't helpt om ekstra ynformaasje op te nimmen yn log-yngongen. Ien fan dizze opsykjen is de JNDI (Java Naming and Directory Interface) lookup, dat is in Java API foar kommunikaasje mei in triemtafeltsjinst.
Mei dizze oanpak kinne ynterne brûkers-ID's yn kaart brocht wurde oan werklike brûkersnammen. Dizze fraach ûntbleatet de nij ûntdutsen RCE-kwetsberens, om't ien fan 'e gegevenstypen levere troch de LDAP-tsjinner in URI is dy't wiist nei in Java-klasse, dy't dan yn it ûnthâld laden wurdt en wurdt útfierd troch de Log4j-eksimplaar.
Troch in swakke yn 'e ynfiervalidaasje fan' e Log4j-bibleteek is it mooglik om in willekeurige LDAP-tsjinner te ynjeksje fan in net-fertroude boarne. Om't ûntwikkelders derfan útnimme dat gegevens stjoerd nei logs sille wurde behannele as platte tekst, gjin ekstra ynfier falidaasje wurdt ûndernommen, en gefaarlike brûkersynput komt de logs yn.
In log-ferklearring kin der sa útsjen:
In kweade brûker soe no in JNDI-opsykje ynfoegje dy't ferwiist nei in rogue LDAP-tsjinner yn in URL-parameter. De JNDI-opsyk soe sa wêze:
De Log4j-bibleteek praat dan mei dizze LDAP-tsjinner op attacker.com om mapynformaasje te krijen, ynklusyf wearden foar de Java Factory en Java Codebase.
Dizze twa wearden omfetsje de Java-klasse fan 'e oanfaller, dy't dan yn it ûnthâld wurdt laden en útfierd troch de Log4j-eksimplaar, en de útfiering fan koade foltôgje.
Wa is yn gefaar?
De kwetsberens fan Log4j is ongelooflijk breed, en hat ynfloed op saaklike applikaasjes, ynbêde apparaten en har subsystemen. Beynfloede apps omfetsje Cisco Webex, Minecraft, en FileZilla FTP.
Dit is lykwols lang net in folsleine list. De flater hat sels ynfloed op de Ingenuity Mars 2020-chopper-missy, dy't Apache Log4j brûkt foar opname fan eveneminten.
De feiligens mienskip hat gearstald in list fan kwetsbere systemen. It is krúsjaal om te notearjen dat dizze listen kontinu bywurke wurde, dus as in bepaald programma of systeem net te sjen is, nim dan net oan dat it net beynfloede is.
Bleatstelling oan dizze kwetsberens is frij wierskynlik, en sels as in spesifyk tech stack jildt Java net, feiligensbestjoerders moatte ferwachtsje dat krityske leveransierssystemen, SaaS-leveransiers, providers fan wolkhosting, en webserverproviders dat dogge.
Hoe kinne jo kontrolearje op Log4j-kwetsberens?
De earste stap is om te bepalen oft in oanfal al bard is. Jo kinne dit dwaan troch de systeemlogboeken te kontrolearjen foar RCE-ladingsfragminten.
As in sykopdracht foar termen lykas "jndi", "ldap", of "$::" alle logs oplevert, moatte feiligensûndersikers fierder ûndersykje om te sjen oft it in legitime oanfal wie of gewoan fingerprinting.
In protte oanfallen yn it wyld waarden ûntdutsen dy't gjin skealike lading levere. Se waarden lykwols útfierd troch feiligenseksperts om te bepalen hoefolle apps kwetsber wiene foar dizze oanfal.
De folgjende stap is om de Log4j-bibleteek te brûken om alle projekten te identifisearjen. As ferzjes tusken 2.0-beta9 en 2.14.1 wurde brûkt, kin it projekt gefoelich wêze.
Mei it each op de muoite om te bepalen wêr't dizze kwetsberens bestiet, kin it de foarkar wêze om oan te nimmen dat it projekt gefoelich is en dat it bywurkjen fan de bibleteek de bêste rin fan aksje is om it gefaar fan koade-útfiering te ferwiderjen.
It projekt is net kwetsber as de brûkte ferzje minder is as 2.0-beta 9, hoewol de Log4j-bibleteek noch opwurdearre wurde moat, om't ferzjes yn it 1.x-berik âld binne en gjin updates mear krije.
Oft in gefoelich projekt wurdt ûntdutsen, it wurdt advisearre dat it wurdt kontrolearre om te sjen oft ynformaasje oanmeld mei Log4j ynformaasje befettet dy't de brûker kin feroarje. URL's, oanfraachparameters, kopteksten en cookies binne foarbylden fan dizze gegevens. As ien fan dizze wurdt oanmeld, is it projekt yn gefaar.
Dizze kennis kin jo helpe om fierder te ferdjipjen yn 'e systeemlogboeken en te bepalen oft jo webapplikaasje al oanfallen is.
D'r binne fergese online ark dy't kinne detectearje as in webapplikaasje kwetsber is. Ien fan dizze programma's is Log4Shell jager. It is iepen boarne en beskikber op GitHub.
As in kwetsber gebiet fan koade yn 'e online applikaasje wurdt ûntdutsen, kin de loadload levere troch it iepenbiere ark wurde brûkt om it yn' e webapplikaasje te ynjeksje. It testark soe de ferbiningen sjen litte makke tusken jo webapplikaasje en har LDAP-tsjinner as de kwetsberens waard eksploitearre.
Oplossings om Log4j kwetsberens te reparearjen
De earste stap is om Log4j te aktualisearjen, wat jo kinne dwaan troch de normale pakketbehearders te brûken of troch it direkt te downloaden fan dizze side.
It is ek mooglik om de eksploitabiliteit fan 'e kwetsberens te ferminderjen troch de omjouwingsfariabele FORMAT MSG NO LOOKUPS op wier te setten. Dizze tsjinmaatregel is lykwols allinich fan tapassing op Log4j-ferzjes grutter as of gelyk oan 2.10.
Litte wy no alternative opsjes beskôgje.
1. Workarounds foar Log4j ferzje 2.17.0
It wurdt perfoarst sterk advisearre om Log4j ferzje 2.15.0 te brûken om te beskermjen tsjin Log4Shell, lykwols, as dit net mooglik is, binne oare oplossings beskikber.
Ferzjes 2.7.0 en letter fan Log4j: It is mooglik om te beskermjen tsjin elke oanfal troch it feroarjen fan it formaat fan 'e eveneminten dy't wurde oanmeld mei de persintaazje m nolookups syntaksis foar de gegevens levere troch de brûker. Dizze fernijing fereasket it bewurkjen fan it Log4j-konfiguraasjetriem om in nije ferzje fan it programma te generearjen. As gefolch, foardat dizze nije ferzje wurdt ynset, moatte de technyske en funksjonele falidaasjestadia wurde werhelle.
Log4j ferzjes 2.10.0 en letter: It is ek mooglik om te beskermjen tsjin elke oanfal troch de konfiguraasjeparameter log4j2.formatMsgNoLookups op wier te setten, bygelyks by it starten fan de Java firtuele masine mei de opsje -Dlog4j2. formatMsgNoLookups = wier, In oare opsje is om de JndiLookup-klasse te ferwiderjen fan it klassepaadargumint, wat de haadoanfalvektor sil fuortsmite (de ûndersikers slúte de mooglikheid fan in oare oanfalvektor net út).
Amazon Web Services leveret in hotpatch dy't "moat wurde brûkt op eigen risiko." Oare "techniken", lykas Logout4Shell, dy't "dizze kwetsberens tsjin himsels brûkt," binne publisearre. De befeiligingsekspert freget de wettichheid fan dizze beweging, dy't omfettet "hacking fan in masine om it te reparearjen."
2. It probleem is oplost yn Log4j v2.17.0.
Foar ferzjes grutter as 2.10: Log4j2.formatMsgNoLookups moat ynsteld wurde op wier.
Foar ferzjes 2.0 oant 2.10.0: Fier it folgjende kommando út om de LDAP-klasse fan Log4j te ferwiderjen.
Log4j2.formatMsgNoLookups moatte wurde ynsteld op wier yn de systeem ynstellings.
Mitigaasje yn JVM
Mitigaasje mei JVM-parameters is net langer in opsje. Oare mitigearjende metoaden bliuwe suksesfol. Upgrade nei Log4j ferzje 2.17.0 as mooglik. D'r is in migraasjegids beskikber foar Log4j v1.
As in fernijing net mooglik is, soargje derfoar dat de komponinten fan 'e client-side en server-side de -Dlog4j2.formatMsgNoLookups = wiere systeemeigenskip set hawwe.
Tink derom dat Log4j v1 syn ein fan it libben (EOL) hat berikt en gjin bugfixes mear sil ûntfange. Oare RCE-vectors binne ek gefoelich foar Log4j v1. Dêrom drage wy oan dat jo sa gau mooglik opwurdearje nei Log4j 2.17.0.
3. Mitigaasjemaatregels
Aktuele eksploaten kinne net wurkje, sels as Log4j yn guon gefallen gefoelich is, lykas as de hostmasine in Java-ferzje útfiert dy't heger is as 6u212, 7u202, 8u192, of 11.0.2.
Dit is te tankjen oan bettere Java Naming and Directory Interface (JNDI) ôfstânklasse laden beskerming yn aktuele ferzjes, wat nedich is foar de oanfal om te operearjen.
Fierder, mei Log4j-ferzjes grutter dan 2.10, kin it probleem foarkommen wurde troch de formatMsgNoLookups-systeemwearde op wier te setten, it JVM-argumint -Dlog4j2.formatMsgNoLookups = true te jaan, of de JndiLookup-klasse fan it klassepaad te wiskjen.
Yn 'e tuskentiid, oant de kwetsbere eksimplaren binne reparearre, kin de kwetsberens oanpakt wurde mei de techniken hjirûnder:
- Stel de systeemeigenskip log4j2.formatMsgNoLookups op wier foar >=2.10.
- Stel de omjouwingsopsje LOG4J FORMAT MSG NO LOOKUPS yn op wier foar >=2.10.
- Fuortsmite JndiLookup.class fan it klassepaad foar 2.0-beta9 nei 2.10.0: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Ien oanrikkemandearre bêste praktyk is om útgongsferkear nei it ynternet te beheinen ta allinich de passende havens.
Hoewol de measte oanfallen yn it fjild wurde levere oer HTTP, kin de kwetsberens wurde eksploitearre fia elk protokol dat brûkersynputgegevens logt mei Log4j.
It bywurkjen fan log4j 2.17.0 is lykwols de bêste remedie, om't immen in ekstra oanpak foar it probleem kin ûntdekke. Fierder hawwe in protte útjouwers en fabrikanten ferbetteringen oankundige oan har tsjinsten as apps.
4. Log4Shell kwetsberens patch
Log4j is omnipresent, benammen no't de kwetsberens wurdt eksploitearre. Om gearfetsje, alles wat jo hoege te dwaan is de folgjende karakters op te nimmen yn 'e logs ynspekteare troch Log4j.
En dit sil it Java-bestân downloade en útfiere oan 'e ein fan' e URL. It is sa ienfâldich as it is dramatysk.
Lykas jo bewust binne, is it kritysk om log4j te upgraden nei ferzje>= 2.17.0 om dizze Log4Shell-kwetsberens (CVE-2021-44228) te ferhelpen.
As dit net mooglik is:
Foar applikaasjes dy't Log4j-biblioteekferzjes 2.10.0 en letter brûke, is it ek mooglik om te beskermjen tsjin elke oanfal troch de konfiguraasjeparameter log4j2.formatMsgNoLookups op wier te setten, bygelyks by it starten fan de Java firtuele masine mei de -Dlog4j2.formatMsgNoLookups = wier opsje.
In oare opsje is om de JndiLookup-klasse te wiskjen fan it classpath-argumint, wat de primêre oanfalsvektor sil fuortsmite (de ûndersikers slúte it bestean fan in oare oanfalvektor net út).
Noat
Organisaasjes dy't twifelje of net ree binne om oanpassingen te meitsjen oan gefoelige systemen (of dy't mar ekstra feiligens wolle ynstallearje) moatte tinke oer:
- Soargje derfoar dat alle ferkear troch in iSensor/WAF/IPS. Dit kin foarkomme dat de oanfal tagong krijt ta it systeem.
- Beheine it bedrach fan ferkear dat kin berikke it gefoelige systeem As it systeem net hoecht te wêzen ferbûn mei it ynternet, beheine tagong ta gewoan essensjele en betroubere IPS en berik.
- It autorisearre útgeande ferkear fan de host ferminderje. Om't dizze oanfal wurket troch te ferbinen mei in rogue-tsjinner, moatte alle oerstallige IP-adressen en poarten op in firewall blokkearre wurde.
- As de tsjinst net mear fereaske is, moat it útskeakele wurde oant in fix klear is.
Konklúzje
De Log4j-flaaks skokken ús mienskip en herinnerden ús allegear hoe ôfhinklik wy binne op iepen boarne software.
Log4j is unyk. It is gjin bestjoeringssysteem, noch is it in browser, noch is it in software. Earder, it is wat programmeurs ferwize nei as in bibleteek, in pakket, as in koademodule. It tsjinnet gewoan ien doel, dat is, in rekord te hâlden fan wat der bart op in server.
Minsken dy't koade skriuwe har leaver konsintrearje op wat har software ûnderskiedend makket. Se binne net ynteressearre yn opnij útfine it tsjil. As gefolch, se fertrouwe op in oerfloed fan besteande koade bibleteken, lykas Log4j.
De Log4j-module is ôflaat fan Apache, de meast wiidweidich brûkte webserversoftware. Dêrom kin it wurde ûntdutsen op miljoenen servers. Dêrtroch fergrutsje de feiligensbedrigingen.
Ik hoopje dat de boppesteande oplossingen jo helpe om jo apparaten feilich te hâlden.
Bliuw op 'e hichte fan HashDork foar mear nuttige ynformaasje út' e techwrâld.
Leave a Reply