Säkerhetsstatus för DevOps-miljön
Med en ökning av cyberattacker på källkodshanteringssystem och kontinuerlig integrering/kontinuerliga leveranspipelines är det viktigt att skydda DevOps-plattformar mot de olika hot som identifieras i DevOps Threat Matrix. Sådana cyberattacker kan möjliggöra kodinmatning, behörighetseskalering och dataexfiltrering, vilket kan leda till omfattande påverkan.
DevOps-hållningshantering är en funktion i Microsoft Defender för molnet som:
- Ger insikter om säkerhetsstatusen för hela livscykeln för programvaruförsörjningskedjan.
- Använder avancerade skannrar för djupgående utvärderingar.
- Omfattar olika resurser, från organisationer, pipelines och lagringsplatser.
- Gör det möjligt för kunder att minska sin attackyta genom att upptäcka och agera enligt de rekommendationer som tillhandahålls.
DevOps-skannrar
För att ge resultat använder DevOps hållningshantering DevOps-skannrar för att identifiera svagheter i källkodshantering och kontinuerlig integrering/kontinuerlig leveranspipelines genom att köra kontroller mot säkerhetskonfigurationer och åtkomstkontroller.
Azure DevOps- och GitHub-skannrar används internt i Microsoft för att identifiera risker som är kopplade till DevOps-resurser, minska attackytan och stärka företagets DevOps-system.
När en DevOps-miljö är ansluten konfigurerar Defender för molnet automatiskt dessa skannrar så att de utför återkommande genomsökningar var 24:e timme över flera DevOps-resurser, inklusive:
- Byggen
- Säkra filer
- Variabelgrupper
- Tjänstanslutningar
- Organisationer
- Centrallager
Riskreduktion av DevOps-hotmatris
DevOps-hållningshantering hjälper organisationer att identifiera och åtgärda skadliga felkonfigurationer på DevOps-plattformen. Detta leder till en elastisk DevOps-miljö med noll förtroende som stärks mot en rad olika hot som definieras i DevOps-hotmatrisen. De primära kontrollerna för hållningshantering är:
- Begränsad hemlig åtkomst: Minimera exponeringen av känslig information och minska risken för obehörig åtkomst, dataläckor och laterala rörelser genom att se till att varje pipeline endast har åtkomst till de hemligheter som är viktiga för dess funktion.
- Begränsning av lokalt installerade löpare och höga behörigheter: förhindra obehöriga körningar och potentiella eskaleringar genom att undvika lokalt installerade löpare och se till att pipelinebehörigheter som standard är skrivskyddade.
- Förbättrat grenskydd: Upprätthålla kodens integritet genom att framtvinga regler för grenskydd och förhindra skadliga kodinmatningar.
- Optimerade behörigheter och säkra lagringsplatser: Minska risken för obehörig åtkomst, ändringar genom att spåra lägsta basbehörigheter och aktivera hemligt push-skydd för lagringsplatser.
DevOps-hotmatris
Vårt mål för att utveckla hotmatrisen för DevOps är att skapa en omfattande kunskapsbas som Defenders kan använda för att hålla reda på och bygga försvar mot relevanta attacktekniker. Med MITRE ATT&CK-ramverket som bas samlade vi in tekniker och attackvektorer som är associerade med DevOps-miljöer och skapade en matris som är dedikerad till DevOps-attackmetoder.
Det är värt att notera att taktiken i den här matrisen måste ses över från DevOps-perspektivet. Till exempel skiljer sig körningstekniker i en virtuell dator som kör Windows- eller Linux-operativsystem från körningen i en DevOps-pipeline. I Linux-fallet innebär körning att kod körs i operativsystemet. När vi pratar om DevOps-miljöer innebär det att köra kod i pipelinen eller DevOps-resurserna. Förutom att använda den här hotmatrisen för att kategorisera attacker och motsvarande försvarsmetoder kan Defenders arbeta tillsammans med röda team för att kontinuerligt testa antaganden och hitta nya potentiella attacktekniker.
MITRE ATT&CK Definierad
MITRE ATT&CK-matrisen är en offentligt tillgänglig kunskapsbas för att förstå de olika taktiker och tekniker som används av angripare under en cyberattack.
Kunskapsbas är indelat i flera kategorier: pre-attack, inledande åtkomst, körning, beständighet, behörighetseskalering, skyddundandragande, åtkomst till autentiseringsuppgifter, identifiering, lateral förflyttning, samling, exfiltrering och kommando och kontroll.
Taktik (T) representerar "varför" för en ATT&CK-teknik eller underteknik. Det är motståndarens taktiska mål: anledningen till att utföra en åtgärd. En angripare kanske till exempel vill uppnå åtkomst till autentiseringsuppgifter.
Tekniker (T) representerar "hur" en angripare uppnår ett taktiskt mål genom att utföra en åtgärd. En angripare kan till exempel dumpa autentiseringsuppgifter för att uppnå åtkomst till autentiseringsuppgifter.
Common Knowledge (CK) i ATT&CK står för allmän kunskap, i huvudsak det dokumenterade modus operandi av taktiker och tekniker som utförs av angripare.
Inledande åtkomst
Den första åtkomsttaktiken avser tekniker som en angripare kan använda för att få åtkomst till DevOps-resurserna – lagringsplatser, pipelines och beroenden. Följande tekniker kan vara en förutsättning för nästa steg:
Autentisering med källkodshantering (SCM) – Åtkomst genom att ha en autentiseringsmetod för organisationens källkodshantering. Det kan vara en personlig åtkomsttoken (PAT), en SSH-nyckel eller någon annan tillåten autentiseringsautentiseringsuppgift. Ett exempel på en metod som en angripare kan använda för att uppnå den här tekniken är att använda en nätfiskeattack mot en organisation.
Kontinuerlig integrering (CI) och CD-tjänstautentisering (Continuous Delivery) – På liknande sätt som SCM-autentisering kan en angripare använda autentisering till CI/CD-tjänsten för att attackera organisationens DevOps.
Organisationens offentliga lagringsplatser – Åtkomst till organisationens offentliga lagringsplatser som har konfigurerats med CI/CD-funktioner. Beroende på organisationens konfiguration kan dessa lagringsplatser ha möjlighet att utlösa en pipelinekörning när en pull-begäran (PR) har skapats.
Slutpunktskompromettering – Med hjälp av en befintlig kompromiss kan en angripare utnyttja den komprometterade utvecklarens arbetsstation och därmed få åtkomst till organisationens SCM, register eller någon annan resurs som utvecklaren har åtkomst till.
Konfigurerade webhooks – När en organisation har en webhook konfigurerad kan en angripare använda den som en första åtkomstmetod i organisationens nätverk med hjälp av själva SCM:n för att utlösa begäranden till nätverket. Detta kan ge angriparen åtkomst till tjänster som inte är avsedda att exponeras offentligt, eller som kör gamla och sårbara programvaruversioner i det privata nätverket.
Körnings-
Körningstaktiken refererar till tekniker som kan användas av en skadlig angripare för att få körningsåtkomst på pipelineresurser – själva pipelinen eller distributionsresurserna. Några av teknikerna i det här avsnittet innehåller förklaringar om de olika sätten att utföra dem på, eller vad vi kallar undertekniker:
Körning av förgiftad pipeline (PPE) – refererar till en teknik där en angripare kan mata in kod till en organisations lagringsplats, vilket resulterar i kodkörning i lagringsplatsens CI/CD-system. Det finns olika undertekniker för att uppnå kodkörning:
- Direkt personlig skyddsutrustning (d-PPE) – Fall där angriparen kan ändra konfigurationsfilen direkt på lagringsplatsen. Eftersom pipelinen utlöses av en ny pr och körs enligt konfigurationsfilen kan angriparen mata in skadliga kommandon till konfigurationsfilen och dessa kommandon körs i pipelinen.
- Indirekt personlig skyddsutrustning (i-PPE) – Fall där angriparen inte kan ändra konfigurationsfilerna direkt eller att dessa ändringar inte beaktas när de utlöses. I dessa fall kan angriparen infektera skript som används av pipelinen för att köra kod, till exempel make-files, testskript, byggskript osv.
- Offentlig personlig skyddsutrustning – Fall där pipelinen utlöses av ett projekt med öppen källkod. I dessa fall kan angriparen använda d-PPE eller i-PPE på den offentliga lagringsplatsen för att infektera pipelinen.
Beroendemanipulering – refererar till en teknik där en angripare kan köra kod i DevOps-miljön eller produktionsmiljön genom att mata in skadlig kod i en lagringsplatss beroenden. När beroendet laddas ned körs alltså den skadliga koden. Några undertekniker som kan användas för att uppnå kodkörning är:
- Förvirring om offentliga beroenden – en teknik där motståndaren publicerar offentliga skadliga paket med samma namn som privata paket. I det här fallet, eftersom paketsökning i mekanismer för paketkontroll vanligtvis letar i offentliga register först, laddas det skadliga paketet ned.
- Kapning av offentliga paket ("repo-jacking") – Kapa ett offentligt paket genom att ta kontroll över underhållarkontot, till exempel genom att utnyttja gitHub-användarens namnbytesfunktion.
- Typosquatting – Publicera skadliga paket med liknande namn som kända offentliga paket. På så sätt kan en angripare förvirra användare att ladda ned det skadliga paketet i stället för det önskade.
DevOps-resurser komprometteras – Pipelines är i grunden en uppsättning beräkningsresurser som kör CI/CD-agenterna tillsammans med annan programvara. En angripare kan rikta in sig på dessa resurser genom att utnyttja en säkerhetsrisk i operativsystemet, agentens kod, annan programvara som är installerad på de virtuella datorerna eller andra enheter i nätverket för att få åtkomst till pipelinen.
Kontroll över det gemensamma registret – En angripare kan få kontroll över ett register som används av organisationen, vilket resulterar i skadliga avbildningar eller paket som körs av de virtuella pipelinedatorerna eller de virtuella produktionsdatorerna.
Bevarande
Beständighetstaktiken består av olika tekniker som en angripare kan använda för att upprätthålla åtkomsten till en offermiljö:
Ändringar i lagringsplatsen – Angripare kan använda automatiska token inifrån pipelinen för att komma åt och skicka kod till lagringsplatsen (förutsatt att den automatiska token har tillräckligt med behörighet för att göra det). De kan uppnå persistens på det här sättet med hjälp av flera undertekniker:
- Ändra/lägg till skript i kod – vi kan ändra några av initieringsskripten/lägga till nya skript, så att de laddar ned en bakdörr/starter för angriparen, så varje gång pipelinen kör dessa skript körs angriparens kod också.
- Ändra pipelinekonfigurationen – vi kan lägga till nya steg i pipelinen för att ladda ned ett skript som styrs av angripare till pipelinen innan du fortsätter med byggprocessen.
- Ändra konfigurationen för beroendeplatser – om du vill använda paket som styrs av angripare.
Mata in artefakter – vissa CI-miljöer har funktioner för att skapa artefakter som ska delas mellan olika pipelinekörningar. I GitHub kan vi till exempel lagra artefakter och ladda ned dem med hjälp av en GitHub-åtgärd från pipelinekonfigurationen.
Ändra avbildningar i registret – I de fall där pipelines har behörighet att komma åt avbildningsregistret (till exempel för att skriva tillbaka avbildningar till registret när bygget är klart) kan angriparen ändra och plantera skadliga avbildningar i registret, vilket skulle fortsätta att köras av användarens containrar.
Skapa autentiseringsuppgifter för tjänsten – En skadlig angripare kan utnyttja den åtkomst de redan har i miljön och skapa nya autentiseringsuppgifter för användning om den första åtkomstmetoden går förlorad. Detta kan göras genom att skapa en åtkomsttoken till SCM, till själva programmet, till molnresurserna med mera.
Eskalering av privilegier
Tekniker för behörighetseskalering används av en angripare för att höja behörigheterna i offrets miljö och få högre behörighet för redan komprometterade resurser:
Hemligheter i privata lagringsplatser – Genom att använda en redan skaffad initial åtkomstmetod kan en angripare genomsöka privata lagringsplatser efter dolda hemligheter. Risken för att hitta dolda hemligheter i en privat lagringsplats är större än på en offentlig lagringsplats, eftersom det från utvecklarens synvinkel är otillgängligt utanför organisationen.
Checka in/skicka till skyddade grenar – Pipelinen har åtkomst till lagringsplatsen som kan konfigureras med tillåtande åtkomst, vilket kan göra det möjligt att skicka kod direkt till skyddade grenar, vilket gör att en angripare kan mata in kod direkt i de viktiga grenarna utan teamintervention.
Certifikat och identiteter från metadatatjänster – När en angripare körs på molnbaserade pipelines kan angriparen komma åt metadatatjänsterna inifrån pipelinen och extrahera certifikat (kräver hög behörighet) och identiteter från dessa tjänster.
Åtkomst till autentiseringsuppgifter
Åtkomsttekniker för autentiseringsuppgifter används av en angripare för att stjäla autentiseringsuppgifter:
Autentiseringsuppgifter för användare – Om kunden behöver åtkomst till externa tjänster från CI-pipelinen (till exempel en extern databas) finns dessa autentiseringsuppgifter i pipelinen (kan anges av CI-hemligheter, miljövariabler osv.) och kan vara tillgängliga för motståndaren.
Tjänstautentiseringsuppgifter – Det finns fall där angriparen kan hitta autentiseringsuppgifter för tjänsten, till exempel SPN(Service Principal-Names), SAS-token (shared-access-signature) med mera, vilket kan ge åtkomst till andra tjänster direkt från pipelinen.
Sidorörelse
Taktiken för lateral förflyttning refererar till tekniker som används av angripare för att gå igenom olika resurser. I CI/CD-miljöer kan detta referera till att flytta till distributionsresurser, skapa artefakter och register eller till nya mål.
Kompromissa med kompileringsartefakter – Precis som i andra leveranskedjeattacker, när angriparen har kontroll över CI-pipelines, kan de störa byggartefakterna. På så sätt kan skadlig kod matas in i byggmaterialet innan bygget är klart, vilket innebär att skadliga funktioner matas in i byggartefakterna.
Registerinmatning – Om pipelinen har konfigurerats med ett register för byggartefakterna kan angriparen infektera registret med skadliga avbildningar, som senare skulle laddas ned och köras av containrar med hjälp av det här registret.
Sprid till distributionsresurser – Om pipelinen har konfigurerats med åtkomst till distributionsresurser har angriparen samma åtkomst till dessa resurser, vilket gör att angriparen kan sprida sig. Detta kan resultera i kodkörning, dataexfiltrering med mera, beroende på de behörigheter som beviljas för pipelines.
Försvarsundandragande
Tekniker för försvarsundandragande kan användas av angripare för att kringgå skydd som används i en DevOps-miljö och tillåta attacker att fortsätta under radarn:
Manipulering av tjänstloggar – Tjänstloggar gör det möjligt för Defenders att identifiera attacker i sin miljö. En angripare som körs i en miljö (till exempel i byggpipelines) kan ändra loggarna för att förhindra att Defenders observerar attacken. Detta liknar en angripare som ändrar historikloggarna på en Linux-dator, vilket hindrar alla övervakare från att se kommandona som körs av angriparen.
Kompileringsmanipulering – om en angripare inte vill lämna några spår i SCM-tjänsten kan angriparen ändra kompileringsprocessen för att mata in den skadliga koden. Detta kan göras på flera sätt:
- Ändra koden i farten – Ändra koden precis innan byggprocessen börjar, utan att ändra den på lagringsplatsen och lämna spårningar i den.
- Manipulerad kompilator – Ändra kompilatorn i byggmiljön för att introducera skadlig kod utan att lämna några spår innan processen börjar.
Konfigurera om grenskydd – Med grenskyddsverktyg kan en organisation konfigurera steg innan en PR/incheckning godkänns i en gren. När en angripare har administratörsbehörighet kan de ändra de här konfigurationerna och introducera kod i grenen utan några användaråtgärder.
Påverkan
Effekttaktiken refererar till de tekniker som en angripare kan använda för att utnyttja åtkomsten till CI/CD-resurserna i skadliga syften, och inte som ett annat steg i attacken, eftersom dessa tekniker kan vara bullriga och lätta att identifiera:
DDoS (Distributed Denial-of-Service) – En angripare kan använda de beräkningsresurser som de fick åtkomst till för att utföra DDoS-attacker (Distributed Denial of Services) mot externa mål.
Utvinning av kryptovalutor – Beräkningsresurserna kan användas för kryptoutvinning som styrs av en angripare.
Local Denial-of-Service (DoS) – När angriparen körs på CI-pipelines kan angriparen utföra en överbelastningsattack från nämnda pipelines till kunder genom att stänga av agenter, starta om eller överbelasta de virtuella datorerna.
Resursborttagning – En angripare med åtkomst till resurser (molnresurser, lagringsplatser osv.) kan permanent ta bort resurserna för att uppnå överbelastning av tjänster.
Exfiltrering
Exfiltreringstaktiken refererar till olika tekniker som kan användas av en angripare för att exfiltrera känsliga data från offermiljön:
Klona privata lagringsplatser – När angripare har åtkomst till CI-pipelines får de också åtkomst till de privata lagringsplatserna (till exempel GITHUB_TOKEN kan användas i GitHub) och kan därför klona och komma åt koden och därmed få åtkomst till privat IP.
Pipelineloggar – En angripare kan komma åt pipelinekörningsloggarna, visa åtkomsthistoriken, byggstegen osv. De här loggarna kan innehålla känslig information om bygget, distributionen och i vissa fall även autentiseringsuppgifter för tjänster, användarkonton med mera.
Exfiltera data från produktionsresurser – I de fall där pipelines kan komma åt produktionsresurserna har angriparna också åtkomst till dessa resurser. Därför kan de missbruka den här åtkomsten för att exfiltratera produktionsdata.
Rekommendationer för hantering av DevOps-hållning
När DevOps-skannrarna upptäcker avvikelser från rekommenderade säkerhetsmetoder i källkodshanteringssystem och pipelines för kontinuerlig integrering/kontinuerlig leverans Defender för molnet utdata med exakta och användbara rekommendationer. Dessa rekommendationer har följande fördelar:
- Förbättrad synlighet: Få omfattande insikter om säkerhetsstatusen för DevOps-miljöer, vilket säkerställer en väl avrundad förståelse för eventuella befintliga säkerhetsrisker. Identifiera saknade regler för grenskydd, behörighetseskaleringsrisker och osäkra anslutningar för att förhindra attacker.
- Prioritetsbaserad åtgärd: Filtrera resultat efter allvarlighetsgrad för att spendera resurser och insatser mer effektivt genom att först åtgärda de mest kritiska säkerhetsriskerna.
- Minskning av attackytan: Åtgärda markerade säkerhetsluckor för att avsevärt minimera sårbara attackytor och därmed härda skydd mot potentiella hot.
- Realtidsaviseringar: Möjlighet att integrera med arbetsflödesautomationer för att få omedelbara aviseringar när säkra konfigurationer ändras, vilket möjliggör snabba åtgärder och säkerställer kontinuerlig efterlevnad av säkerhetsprotokoll.