Log4j-sårbarheten: En omfattande guide till hot och lösningar
Log4j-sårbarheten representerar ett av de mest allvarliga säkerhetsproblemen som moderna system står inför. Den potentiella skadan är enorm, och åtgärder är nödvändiga för att skydda känslig information och system.
Loggning är en grundläggande del av moderna applikationer. Log4j, ett ledande loggningsbibliotek, används i stor utsträckning. Denna breda användning innebär att en betydande andel applikationer, tjänster och system påverkas av den Log4j-sårbarhet som upptäcktes. Denna upptäckt ökade oron hos både säkerhetsexperter och företag.
Det är av yttersta vikt att identifiera och åtgärda Log4j-sårbarheten för att skydda data, nätverk, företags anseende och kunders förtroende.
I den här artikeln går vi igenom vad Log4j-sårbarheten innebär och hur den kan upptäckas och åtgärdas på ett effektivt sätt.
För att få en djupare förståelse ska vi börja med att undersöka Log4j och varför det är så viktigt.
Vad är Log4j?
Log4j är ett öppet källkodsbibliotek, skrivet i Java, som fungerar som ett loggningsverktyg. Det lagrar, formaterar och publicerar loggposter som genereras av applikationer och system, och underlättar felsökning. Dessa poster kan inkludera information från webbsidor och webbläsare till detaljer om systemet där Log4j körs.
Istället för att utveckla loggningsfunktioner från grunden, kan utvecklare integrera Log4j-biblioteket i sina applikationer.
Log4j ger utvecklare möjlighet att övervaka händelser relaterade till deras applikationer med detaljerad logginformation. Detta hjälper dem att upptäcka och åtgärda problem i ett tidigt skede, vilket minimerar potentiell skada på prestanda och säkerhet.
Detta Java-baserade bibliotek skapades av Ceki Gülcü och lanserades 2001 under Apache License 2.0. Det använder Java Naming and Directory Interface Services (JNDI) för att tillåta interaktion mellan appar och tjänster som LDAP, DNS, CORBA m.fl., och för att tillhandahålla katalogs- och namngivningsfunktioner för Java-baserade applikationer. Log4j består av tre huvudkomponenter:
- Loggers – registrerar loggposter
- Layouter – formaterar loggposter i olika stilar
- Appenders – publicerar loggposter till olika destinationer
Log4j är ett av de mest använda loggningsbiblioteken på internet. Det används av organisationer inom olika branscher och länder. Det är integrerat i många applikationer, inklusive molntjänster från Google, Microsoft, Apple, Cloudflare, och Twitter.
Utvecklaren, Apache Software Foundation, skapade Log4j 2 som en uppgradering för att åtgärda problem i tidigare versioner. En sårbarhet i Log4j upptäcktes förra året som, om den inte åtgärdas, kan ge angripare tillgång till applikationer och system, stjäla data, infektera nätverk och utföra andra skadliga aktiviteter.
Låt oss titta närmare på den här sårbarheten.
Vad är Log4Shell – Log4j-sårbarheten?
Log4Shell representerar en allvarlig cybersäkerhetsrisk i Log4j-biblioteket, som påverkar dess grundläggande funktion. Den möjliggör för angripare att kontrollera en internetansluten enhet eller applikation genom att utföra fjärrkörning av kod. Genom en lyckad attack kan de:
- Köra valfri kod på enheten eller systemet.
- Få tillgång till nätverk och data.
- Ändra eller kryptera filer på den berörda applikationen eller enheten.
Sårbarheten rapporterades först den 24 november 2021 av Chen Zhaojun, en säkerhetsforskare på Alibaba. Sårbarheten påverkade deras Minecraft-servrar, vilket upptäcktes den 9 december.
NIST publicerade därefter denna sårbarhet i National Vulnerability Database och benämnde den CVE-2021-44228. Apache Software Foundation klassificerade sårbarheten med den högsta CVSS-poängen, 10. Detta är mycket allvarligt eftersom sårbarheten är bred och enkel att utnyttja, vilket kan leda till stor skada för organisationer och individer.
Apache släppte en patch för sårbarheten, men vissa problem kvarstod, vilket ledde till ytterligare sårbarheter:
- CVE-2021-45046 – gjorde det möjligt att utföra DoS-attacker (Denial of Service) genom JNDI-uppslagningar.
- CVE-2021-45105 – tillät hackare att manipulera trådkontextkartinformation och orsaka DoS-attacker genom att tolka en manipulerad sträng.
- CVE-2021-44832 – påverkade alla Log4j 2-versioner genom Remote Code Injection (RCE).
Hur fungerar Log4Shell?
För att förstå allvaret med Log4Shell och den skada den kan orsaka är det viktigt att förstå hur sårbarheten fungerar.
Log4Shell låter angripare injicera godtycklig kod i ett nätverk och få kontroll över systemet.
Attacken börjar med att loggningsbiblioteket (som Log4j) samlar in och lagrar logginformation. Om ett loggningsbibliotek inte används kommer all data från servern att arkiveras direkt efter insamling. Men för att analysera loggdata och agera på specifik information behövs ett loggbibliotek.
Sårbarheten i Log4j innebär att alla system eller applikationer som använder biblioteket är sårbara för attacker. Loggningsbiblioteket kör kod baserat på den mottagna informationen. En angripare kan manipulera inmatningen och tvinga loggbiblioteket att utföra skadlig kod.
När Log4j får en specialutformad sträng anropar den en LDAP-server och laddar ner koden i dess katalog för att exekvera. En angripare kan skapa en LDAP-server som lagrar skadlig kod, vilket ger dem kontroll över alla servrar där koden körs. Angriparen kan sedan skicka en sträng som dirigerar koden till en specifik applikation eller ett system.
Nedan beskrivs hur Log4j-sårbarheten utnyttjas:
- En angripare identifierar en server med en sårbar Log4j-version.
- En anrop skickas till servern med en länk till angriparens skadliga LDAP-server.
- Servern ansluter direkt till LDAP-servern utan att kontrollera begäran.
- Angriparna skickar ett LDAP-serversvar med skadlig kod till målservern. Tack vare Log4js sårbarhet, som tillåter koden att tas emot och exekveras utan kontroll, kan angriparen få tillgång till målservern och de anslutna systemen och enheterna.
Hur kan Log4j-sårbarheten skada användare?
Log4j-sårbarheten är ett allvarligt problem eftersom den används i många programvaruapplikationer och system.
Eftersom loggning är en viktig funktion i de flesta program och Log4j är en ledande lösning inom området, används Log4j i många olika programvarusystem.
Några av de populära tjänster och appar som använder Log4j är Minecraft, AWS, iCloud, Microsoft, Twitter, internetroutrar, programvaruutvecklingsverktyg, säkerhetsverktyg och många fler. Angripare kan rikta in sig på ett stort antal applikationer, tjänster och system, vilket påverkar hemanvändare, kodutvecklare, tjänsteleverantörer och andra relaterade yrkesverksamma.
Log4j-sårbarheten är lätt att utnyttja för angripare, vilket bidrar till att antalet attacker ökar. Det krävs inte heller expertkunskaper för att utföra attacken.
Effekterna av Log4j-sårbarheten inkluderar:
- DoS-attacker
- Leveranskedjeattacker
- Kryptovalutabrytning
- Injektioner av skadlig kod som ransomware och trojaner
- Godtycklig kodinjektion
- Fjärrkörning av kod
Attackerna kan leda till att du tappar kontrollen över applikationer, system och enheter. Din data kan hamna i fel händer, säljas, manipuleras eller exponeras. Företag riskerar förlorat kundförtroende, datasekretess, företagshemligheter och minskad försäljning.
Enligt en rapport har över 40 % av globala företagsnätverk upplevt attacker på grund av sårbarheten.
Även om du inte använder sårbara Log4j-versioner i dina applikationer kan dina tredjepartsintegrationer använda dem, vilket gör din app sårbar för attacker.
Alla Log4j-versioner före Log4j 2.17.0 är påverkade. Du måste uppgradera loggern om du använder den. Stora leverantörer som Adobe, AWS, IBM, Cisco, VMware, Okta och Fortinet är påverkade. Om du använder någon av dem bör du övervaka dina appar kontinuerligt och åtgärda problem så snart de uppstår.
Hur man upptäcker program som påverkas av Log4j och åtgärdar problemen
Log4Shell-sårbarheten har den högsta CVSS-poängen, vilket indikerar att alla problem i Log4j ännu inte är åtgärdade. Om du eller en av dina tredjepartsleverantörer använder Log4j i din applikation är det viktigt att vidta åtgärder för att skydda dina data, system och nätverk.
#1. Uppdatera din Log4j-version
Att uppdatera till Log4j 2.17.1 är det mest effektiva sättet att skydda din enhet och applikationer från Log4j-sårbarheten.
Log4Shell är en typ av nolldagsattack som kan påverka din mjukvaruekosystem. Apache har åtgärdat vissa sårbarheter i de senaste versionerna, men om ditt system komprometterades innan uppgraderingen är du fortfarande i riskzonen.
Om du misstänker att ditt system har utnyttjats bör du inte bara uppgradera versionen utan också starta dina incidenthanteringsprocedurer. Granska serverloggarna för att identifiera Indicators of Compromise (IOC) och övervaka dina system och nätverk löpande.
#2. Använd de senaste brandväggarna och säkerhetssystemen
Brandväggar som Web Application Firewall (WAF) och nästa generations brandväggar kan skydda nätverket genom att skanna inkommande och utgående datapaket och blockera misstänkta aktiviteter. Installera de senaste brandväggarna och konfigurera strikta utgående regler på servrarna för att förhindra attacker kopplade till Log4j-sårbarheten.
Även om brandväggar kan kringgås ger de ett visst skydd genom att blockera misstänkta förfrågningar.
Uppdatera alla säkerhetssystem, som Intrusion Detection Systems (IDS) och Intrusion Prevention Systems (IPS), med de senaste signaturerna och reglerna. Dessa system hjälper till att blockera RMI- och LDAP-trafik från att ansluta till en skadlig LDAP-server.
#3. Implementera MFA
Multifaktorautentisering (MFA) i dina applikationer och system ger ett extra lager av säkerhet även om angripare passerar det första. Det kan implementeras med biometri, säkerhetsfrågor eller säkerhets-PIN.
MFA gör det svårare och mer tidskrävande för angripare att genomföra en attack. Det kan också varna dig om händelsen i god tid, vilket ger dig möjlighet att vidta åtgärder.
Använd strikta VPN-policyer för att minska risken för dataintrång. Detta ger användarna en säker åtkomst till systemen oavsett plats.
#4. Ändra systemegenskaper
Om du inte kan uppgradera Log4j-biblioteket till den senaste versionen behöver du omedelbart ändra Java-systemegenskaperna om du använder en version mellan Log4j 2.10 och Log4j 2.14.1.
Konfigurera systemet så att uppslagningar, som angripare använder för att hitta sårbarheterna och utnyttja dem, förhindras.
#5. Ta bort JNDI
Källan till denna kritiska säkerhetsrisk ligger i dess konstruktion. JNDI Lookup-pluginet har ett konstruktionsfel som angripare kan utnyttja.
JNDI används för att utföra kod baserat på logginmatning, vilket är lätt att manipulera. Loggern accepterar alla begäranden utan verifiering.
Säkerhetsforskare har upptäckt att detta plugin har accepterat oanalyserad data sedan det släpptes 2013 och skickat det till Log4j-biblioteket.
Detta gör Log4j-sårbarheten mottaglig för en enkel stränginjektion. När en angripare injicerar en skadlig sträng accepterar loggern operationen i strängen och utför den utan verifiering.
För att skydda systemen och applikationerna måste du inaktivera klassen JndiLookup, vilket förhindrar loggern från att agera på loggdata.
JNDI-sökning är redan inaktiverad i Log4j 2.16.0 som standard för att ge ökad säkerhet. Om du använder en lägre version av Log4j, måste du inaktivera JNDI Lookup.
#6. Tala med dina leverantörer
Även om du vidtagit alla nödvändiga åtgärder, inklusive att uppdatera brandväggar och säkerhetssystem, uppgradera Log4j-versionen och inaktivera JNDI Lookup, bör du inte slappna av.
Dina tredjepartsleverantörer kan fortfarande använda en sårbar Log4j-version även om dina applikationer inte gör det. Detta innebär att din applikation kan hackas utan att du vet hur eftersom den verkliga sårbarheten kan ligga hos en tredjepartsintegration.
Kontakta dina leverantörer för att säkerställa att de har uppgraderat till den senaste versionen av Log4j och att de också har implementerat de säkerhetsrutiner som nämnts ovan.
#7. Använd en Log4j-sårbarhetsskanner
Det finns många verktyg tillgängliga på marknaden som underlättar sökandet efter Log4j-sårbarheter i dina system och applikationer.
När du utvärderar verktygen är det viktigt att ta hänsyn till deras precision, eftersom vissa verktyg ger falska positiva resultat. Välj ett verktyg som uppfyller dina behov, oavsett om det är identifiering, rapportering eller åtgärdande av sårbarheten.
Några av de bästa Log4j-skanningsverktygen är:
- Microsoft 365 Defender: Microsoft erbjuder säkerhetslösningar och verktyg för att upptäcka och förebygga Log4j-missbruk i ditt nätverk.
- Amazon Inspector och AWS: Amazon har skapat ett skanningsverktyg för att hitta Log4j-sårbarheter i Amazon EC2-instanser och Amazon ECR.
- CloudStrike Archive Scan Tool (CAST): CloudStrike erbjuder ett utmärkt skanningsverktyg som hjälper dig att åtgärda problem i tid.
- Google Cloud Logging-detektering: Googles molnloggningsdetekteringslösning gör det möjligt att upptäcka Log4j-exploater med Logs Explorer.
- Google har även skapat log4jscanner, en filsystemskanner med öppen källkod för att upptäcka sårbarhet i Log4j.
- BurpSuite Log4j Scanner: Ett säkerhetsplugin för företag och proffs.
- Huntress Log4Shell Vulnerability Tester: Ett verktyg som genererar en unik identifierare som används för att testa inmatningsfält.
- WhiteSource Log4j Detect: Ett kostnadsfritt CLI-verktyg som kan användas för att upptäcka och åtgärda Log4j-sårbarheter.
- JFrog Open-Source Scanning-verktyg för Log4j: JFrog erbjuder olika verktyg för att hitta Log4j-sårbarheter i dina binärfiler och källkod.
Slutsats
Log4j-sårbarheten är en kritisk säkerhetsfråga. Eftersom loggningsbiblioteket används i stor utsträckning har sårbarheten fått stor spridning, vilket gör att angripare kan utnyttja många olika system och applikationer.
För att skydda dina system och applikationer från denna sårbarhet bör du uppgradera Log4j-biblioteket till den senaste versionen och implementera de bästa säkerhetsrutinerna som beskrivs ovan.