Hoppa till innehåll

Webinar: Registrera dig för vårt kommande webbinarium

Registrera nu

En detaljerad guide till missbruk av kodsignering

Kodsignering spelar en viktig roll eftersom den kan identifiera legitim programvara jämfört med skadlig kod eller oseriös kod. Tekniskt sett skapar kodsignering en hash av koden och krypterar den med en privat nyckel som lägger till dess signatur. Under exekveringen valideras denna signatur och om hashen matchar ger det en försäkran om att koden inte har ändrats. Det etablerar också en försäkran om att koden utfärdas från den legitima upphovsman som den påstår sig vara.

Beskrivning

Att bygga en säker IT-infrastruktur innebär att ha starka säkerhetskontroller på plats. Några exempel på detta inkluderar implementering av en Public Key Infrastructure, installera övervakningsprodukter i din miljö eller använda legitima KodsigneringslösningarKodsignering är processen att signera programvara för att autentisera den för användare.

Använda kodsignering certifikat, en mjukvaruutvecklare signerar sin programvara med ett certifikat som innehåller deras publika nyckel. Programvarumottagaren kan sedan verifiera att den publika nyckeln är en del av ett nyckelpar med designerns privata nyckel, och därmed autentisera programvaran. Kodsignering bekräftar också originaliteten hos digital information, som programkod, och fastställer författarens legitimitet.

Kodsignering spelar en viktig roll eftersom den kan identifiera legitim programvara jämfört med skadlig kod eller oseriös kod. Tekniskt sett skapar kodsignering en hash av koden och krypterar den med en privat nyckel som lägger till dess signatur. Under exekveringen valideras denna signatur och om hashen matchar ger det en försäkran om att koden inte har ändrats. Det etablerar också en försäkran om att koden utfärdas från den legitima upphovsman som den påstår sig vara.

Även om kodsignering ger säkerhet till kod kan den orsaka problem och vara sårbar för attacker eller missbruk om den inte implementeras korrekt. Den senaste Solar Winds-attacken är ett sådant exempel där kodsigneringsprocessen komprometterades och Rouge-kod implementerades i system och slutpunkter som legitim programvara. En angripares mål är att hitta minsta motståndets väg.

Det finns många branscher, som spelindustrin, som vill göra en mycket snabbare release eller distribution av sin kod. Att kringgå processer eller att inte följa bästa praxis för säkerhetsfrågor är mycket vanligt och gör att organisationer kan falla offer för missbruk av kodsignering.

Hur används kodsignering

Kodsignering används för en mängd olika ändamål. Den mest uppenbara användningen är att signera programkod med utvecklarens privata nyckel. Som tidigare nämnts signeras programvaran för att säkerställa att koden inte innehåller någon skadlig kod, för att låta mottagaren av informationen veta att utvecklaren är den de utger sig för att vara, och för att bygga förtroende mellan utvecklaren och slutanvändaren.

Med signerad kod kan användare lita på att koden inte innehåller några skadliga avsikter i bakgrunden, eftersom kodsigneraren skulle hållas ansvarig om så vore fallet. Andra områden där kodsignering används är företagsapplikationer, sakernas internet (IoT)-enheter samt utveckling och IT-drift (Dev Ops).

Med företagsapplikationer signeras all intern kod, skript, paket etc. via kodsignering. Skripten och paketen signeras av samma anledningar som koden signeras, eftersom angripare kan dölja skadliga nyttolaster i dessa. IoT-enheter använder kodsignering för autentisering och valideringsändamål. Uppdateringar för både firmware och programvara signeras av utvecklare, liksom meddelanden mellan användare på IoT-enheter.

Med Public Key Infrastructures (PKI) i bruk autentiserar kodsigneringscertifikat användare inom en organisations nätverk. Genom att "signera" deras certifikat med deras privata nyckel, med hjälp av den publika nyckeln, kan användarnas identiteter valideras. Med Dev Ops pågår integration och koddistribution ständigt. Koden distribueras i flera instanser på containrar och molnsystem, vilket innebär att dessa containeravbildningar måste signeras under flera steg av kodens livscykel.

Missbruk av kodsignering

En vanlig orsak till missbruk av kodsignering är att förse offer med kod som ser legitim ut, men som innehåller skadlig programvara som kan stjäla känslig information från användare eller helt förstöra deras system. Angripare kan också stjäla kodsigneringscertifikat från legitima utvecklare, vilket ger dem möjlighet att släppa kod under en betrodd skapares namn, vilket gör att de kan släppa skadlig programvara till fler offer. Missbruk av kodsignering kan ske på ett antal olika sätt.

  • Nyckelstöld

    När digitala certifikat eller nycklar lagras och hanteras dåligt öppnar det dörren för hotande aktörer, som låter dem stjäla privata nycklar från betrodda användare. Med hjälp av dessa nycklar kan de signera kod som en annan identitet, och de kan få certifikat utfärdade i den betrodda identitetens namn och missbruka certifikatet inom nätverket.

    Till exempel lagrar ett litet mjukvaruutvecklingsföretag sin privata nyckel på en osäker server. En angripare kan stjäla nyckeln genom att få åtkomst till servern med hjälp av en nätfiskeattack riktad mot administratören. Genom att använda Hårdvarusäkerhetsmoduler (HSM) Nycklar kan hållas helt säkra från angripare, eftersom de skulle behöva fysiskt komma åt HSM med rätt inloggningsuppgifter för att stjäla nycklarna som lagras inuti.

  • Kodningsfel

    Ett annat, mindre tänkt fel som kodsignering kan missbrukas av är om kodsignerad programvara innehåller sårbarheter. Om sårbarheter finns i programvaran och hotaktörer upptäcker dem innan de patchas, var deras kodsignering förgäves. Även om koden är signerad kan dessa sårbarheter utnyttjas av angripare för att distribuera skadlig kod på offrens system. Kod bör testas noggrant före distribution för att säkerställa att inga sårbarheter finns.

    Till exempel kan en utvecklare skynda på sig med en programuppgradering för att åtgärda en högprioriterad bugg. Koden signeras och skickas ut till kunder utan ordentlig säkerhetstestning. Denna kod innehåller dock bakdörrar för att komma åt känslig kundinformation, vilket kan leda till många konsekvenser för organisationen och dess kunder.

  • Systemkompromiss

    Om ett system komprometteras och programvara signeras på det systemet kan koden ändras innan den faktiska signeringen. Detta gör att skadlig kod kan döljas i kod som är legitimt signerad, utan utvecklarens vetskap. Väl inne i systemet kan angriparna injicera en liten bit skadlig kod i programvaran innan bygget signeras. Kodsignering missbrukades på detta sätt i den senaste SolarWinds-attacken. Att säkerställa att dina system är uppdaterade med alla säkerhetsuppdateringar kan garantera säkerheten i din onlinemiljö.

  • Användning av återkallade/utgångna certifikat

    När en nyckel eller ett utgånget certifikat är komprometterat, om certifikatets giltighet inte kontrolleras av en Certifikatmyndighet (CA), då kan certifikatet användas för att tillåta kodsignering av skadlig programvara.

    Certifikat som har löpt ut eller återkallats ska läggas i Certifikatåterkallningslista (CRL) så att CA:er kan notera att certifikatet inte längre ska användas till någonting förrän det ersätts eller förnyas.

Lösning för företagskodsignering

Få en lösning för alla dina behov av kodsignering och kryptografi för mjukvara med vår kodsigneringslösning.

Välkända missbruk av kodsignering

Genom att lära av tidigare kodsigneringsmissbruk kan vi skydda data i framtiden. Ett antal anmärkningsvärda kodsigneringsmissbruk har inträffat tidigare, men idag kommer vi att fokusera på tre av de mer uppmärksammade, med början i SolarWinds. År 2020 upptäckte organisationen SolarWinds att dess kärnsystem hade komprometterats. Genom att använda en leveranskedjeattack lyckades angripare få tillgång till ett Microsoft 365-konto som ägdes av SolarWinds i september 2019.

Detta gjorde det möjligt för hotaktörerna att få tillgång till SolarWinds kod och andra system, och gav dem möjlighet att implementera missbruk av kodsignering. Genom att redigera kod innan den signerades kunde dessa angripare implementera en typ av skadlig kod som kallas en Remote Access Trojan, eller RAT, som gav dem fjärråtkomst till offrens datorer.

Denna RAT var gömd inuti uppdateringar av en nätverksövervakningsprogramvara skapad av SolarWinds kallad Orion. Detta startade en kampanj som skapade en kommando- och kontrollinfrastruktur på offrens enheter. Myndighetstjänstemän, privata organisationer och många amerikanska federala myndigheter drabbades av Solar Winds.

En annan attack som utnyttjade kodsigneringsmissbruk var D-Link-attacken. En nätverksleverantör vid namn D-Link publicerade av misstag sina privata kodsigneringsnycklar när de publicerade sin källkod för en firmwareuppdatering. I det här fallet skulle angripare kunna använda dessa nycklar för att lägga till kod som de själva skapat, men få mottagarna att tro att de får betrodd kod från D-Link.

Vikten av att skydda privata kodsigneringsnycklar kan inte nog betonas, eftersom en stöld av din digitala identitet kan leda till förlust av känslig data, stämningar och mer. Med D-Link-attacken var endast en av de fyra läckta signeringsnycklarna giltig, men allt som krävs är ett giltigt certifikat för att det ska kunna missbrukas.

Ett sista missbruk av kodsignering som vi ska prata om är Shadow Hammer. År 2019 komprometterades kodsigneringsprocessen för en stor datortillverkare vid namn ASUS. Med hjälp av ASUS programvaras liveuppdateringsverktyg släppte hotaktörerna skadlig kod för att skapa bakdörrar till tusentals användares datorsystem.

Eftersom skadlig programvara signerades av ASUS uppdaterade verktyget för direktuppdatering systemen, vilket gjorde det möjligt för angriparna att stjäla känslig data från offren. Återigen, att skydda system genom att uppdatera programvara och hålla dina andra system säkra kommer att förhindra att din kodsigneringsprocess tas över.

Säkerhetskodsigneringscertifikat

Det finns ett antal olika bästa praxis för kodsignering som kan följas för att säkerställa att din kodsigneringsprocess har en säker miljö att arbeta i. Nationella institutet för vetenskap och teknik (NIST) släpper ett antal rekommendationer om bästa praxis för certifikat- och kodsignering för användare att ta del av. Vissa är mer uppenbara än andra, men vi kommer att gå igenom alla typer av dem ändå.

  1. Säkra privata nycklar på HSM:er

    En av svagheterna hos många organisationer är bristen på säkerhet kring deras privata nycklar. Oavsett om det är i molnet eller lokalt kan hårdvarusäkerhetsmoduler helt skydda dina privata nycklar från angripare. En hårdvarusäkerhetsmodul är en specialiserad, mycket betrodd fysisk enhet som utför alla större kryptografiska operationer, inklusive kryptering, dekryptering, autentisering, nyckelhantering och nyckelutbyte.

    HSM:er är specialiserade säkerhetsenheter med det enda syftet att dölja och skydda kryptografiskt material. De har ett robust operativsystem och begränsad nätverksåtkomst skyddad via en brandvägg. HSM:er är också manipulationssäkra och manipuleringssäkra enheter. Eftersom en lokal HSM måste vara fysiskt åtkomlig för att stjäla nycklar, anses de vara ett av de bästa möjliga sätten att hindra oönskade användare från att komma åt privata kryptografiska nycklar.

  2. Kontroll över kodsigneringsprocessen

    Bara från två av våra tre verkliga exempel på missbruk av kodsignering kan du se att det är avgörande att kontrollera din organisations kodsigneringsprocess för att följa bästa praxis för kodsignering. En del av att säkra kodsigneringsprocessen är att använda autentiska och säkra kodsigneringslösningar, om du väljer att gå den vägen.

    Kodsigneringslösningar tillhandahåller all infrastruktur för att signera kod och andra dokument, medan du hanterar systemets säkerhet. Tillsammans med säkra kodsigneringslösningar är kontroll av vem som kan komma åt privata nycklar, validering av användaridentiteter och användning av tvåfaktorsautentisering på kodsigneringstjänster bara några andra sätt att hantera din kodsigneringsprocess.

  3. Kodvalidering

    Innan någon kod signeras bör applikationer noggrant kontrolleras för sårbarheter eller skadlig kod. Utöver detta bör föråldrade funktionsanrop tas bort från koden. Dubbel- och trippelkontroll av kod för sårbarheter eller säkerhetsluckor kan rädda din organisation från att släppa osäker kod som kan utnyttjas av hotaktörer för att stjäla känsliga uppgifter från dina användare.

  4. Kodsignering Dedikerade system

    För att säkerställa högsta möjliga säkerhetsnivå med kodsigneringsprocessen bör systemet som implementerar kodsignering ENDAST utföra kodsignering. På så sätt finns det ingen sårbarhet orsakad av en annan typ av programvara som kan påverka dina kodsigneringstjänster. Två av de tidigare nämnda fallen av kodsignering fick sin kodsigneringsprocess kapad på grund av sårbarheter i annan programvara.

    Om en dator har många olika programvaror nedladdade på sin dator, är var och en en potentiell vektor för angripare att missbruka. En del av denna praxis är också idén att systemet bör uppdateras och uppdateras fullständigt för att möjliggöra en så säker miljö som möjligt.

  5. Kontroll av certifikatets giltighet

    När man kör en PKI måste certifikat valideras innan de får användas. Med kodsignering är det samma sak. Inget certifikat bör användas för kodsignering om inte dess giltighet har verifierats. Certifikat bör kontrolleras för sin giltighet inte bara före kodsignering, utan även som en del av processen. Detta skyddar mot eventuella övervakningar i den publika nyckelinfrastrukturen.

  6. Certifikat Lifecycle Management

    En viktig del av att driva en framgångsrik PKI är att ha en stark Certifikatets livscykel hanteringsplan på plats. Stegen i certifikatlivscykeln, och hur man säkrar certifikat i varje fas, är följande:

    1. Discovery

      I upptäcktsfasen av certifikatlivscykeln genomsöks nätverket efter saknade, utgångna, komprometterade eller oanvända certifikat. Om dessa certifikat hittas måste de återkallas, förnyas eller ersättas. Denna fas av livscykeln är oerhört viktig, eftersom den hittar luckor i säkerheten hos den publika nyckelinfrastrukturen och vidarebefordrar dessa luckor till eventuella övervakningsverktyg. Detta gör att intrång i systemet kan åtgärdas utan förlust av känslig data.

      Denna hanteringsfas inventerar även certifikaten inom PKI:n, för att underlätta framtida identifieringsfaser och eventuella PKI-revisioner som kan inträffa. Identifiering av felhanterade eller utgångna certifikat bör endast göras med betrodd programvara, eftersom om ett certifikat saknas i identifieringsfasen kan det leda till att angripare kan använda certifikatet för missbruk av kodsignering.

    2. Skapande/Inköp

      I skapande-/köpfasen av livscykeln skapas eller köps certifikaten för användning av certifikatbegäraren. En användare eller enhet skickar en Begäran om certifikatsignering (CSR) till en utfärdande certifikatutfärdare. CSR:n innehåller den publika nyckeln och annan registreringsinformation som behövs för att registrera användaren i PKI:n. CA:n verifierar sedan informationen i CSR:n och, om informationen är giltig, skapar certifikatet för användaren.

      Den utfärdande certifikatutfärdaren kan vara en del av organisationens egen PKI eller en medlem i en tredjepartsinfrastruktur för offentliga nyckelringar. Om en tredjeparts-PKI används måste certifikatet köpas. Vid skapande eller köp av certifikat bör den utfärdande certifikatutfärdaren vara säker på att informationen i begäran är legitim, eftersom en angripare kan utge sig för att vara en annan person för att få tag på ett certifikat för skadlig användning.

    3. Installation

      Det är oerhört viktigt att installationen av ett certifikat görs korrekt, eftersom ett dåligt installerat certifikat kan missbrukas för skadlig aktivitet. Åtkomst till certifikatet bör vara möjlig, eftersom webbläsare och andra användare måste kunna verifiera certifikatets äkthet.

      Ändå är certifikatets säkerhet fortfarande av yttersta vikt under installationsprocessen. För att säkerställa den bästa möjliga nivån av certifikathantering och säkerhet, när certifikatet installeras, inför CA policyer som säkerställer att endast behöriga personer kan göra ändringar i certifikatet.

    4. lagring

      För att förhindra kompromettering är lagring av kodsigneringscertifikat avgörande, eftersom dåligt lagrade certifikat kan stjälas och användas av hotande aktörer. Som tidigare nämnts måste certifikat, även om de bör lagras säkert, fortfarande vara läsbara av programvara och andra användare för att autentisera certifikaten. För att tillhandahålla stark lagring, använd hårdvarusäkerhetsmoduler för att lagra certifikatens privata nycklar.

    5. Övervakning

      Att hålla reda på certifikat och deras status är avgörande för en stark kodsigneringsprocess. Detta är en fas som pågår ständigt, eftersom certifikat kan löpa ut eller gå förlorade när som helst. Övervakningsfasen håller reda på certifikat som måste återkallas, förnyas eller ersättas, via den inventering som ursprungligen skapades i upptäcktsfasen.

      Om ett certifikat befinns behöva ersättas, förnyas eller återkallas, flyttas certifikatet vidare till nästa del av certifikatlivscykeln. Starka, automatiserade övervakningssystem bör finnas på plats för korrekt övervakning. Automatiserad övervakning säkerställer att mänsklig tillsyn inte sker, och certifikat som behöver gå vidare till nästa fas inte förbises.

    6. Förnyelse

      Ett certifikat går in i förnyelsefasen av certifikatets livscykel när det närmar sig sitt utgångsdatum. Certifikat bör ha ett utgångsdatum på högst 5 år för att följa bästa praxis.

      Beroende på om automatiserad eller manuell certifikatförnyelse används kan certifikat ställas in så att de förnyas automatiskt när deras utgångsdatum närmar sig, eller så kan en systemadministratör föra en lista över alla certifikats utgångsdatum så att de kan förnyas manuellt vid rätt tidpunkt. Det är bäst att automatisera förnyelseprocessen, eftersom mänskliga fel kan orsaka att certifikatens utgångsdatum inte överses.

    7. Återkallande

      Certifikat måste återkallas om de har visat sig ha använts felaktigt eller på annat sätt missbrukats. När ett certifikat återkallas förs certifikatet och dess data in i en lista över återkallade certifikat.

      Denna lista kontrolleras regelbundet av certifikatutfärdare så att alla certifikatsigneringsförfrågningar som innehåller samma data avvisas. För att skydda återkallningsfasen av certifikatlivscykeln bör CRL:er hållas uppdaterade, eftersom tillåtelse av användning av återkallade certifikat ger hotande aktörer tillgång till känsliga uppgifter.

    8. Byte

      Den sista fasen i certifikatlivscykeln är ersättningsfasen. När man går från att köpa certifikat till att skapa sina egna måste de köpta certifikaten ersättas. Detta görs sällan, eftersom det är mycket enklare att bara förnya ett certifikat från den ursprungliga leverantören än att ersätta det.

      Ersättning av certifikat bör endast göras av betrodda utfärdande certifikatutfärdare. Utöver detta bör bästa praxis följas i varje fas av livscykeln efter ersättningsfasen, eftersom certifikatlivscykeln startar om när ett certifikat ersätts med ett nytt.

Lösning för företagskodsignering

Få en lösning för alla dina behov av kodsignering och kryptografi för mjukvara med vår kodsigneringslösning.

Krypteringskonsulttjänsters kodsigneringstjänster

För att skydda din kodsigneringsprocess i varje fas, ta en titt på Encryption Consultings Kodsigneringslösning – CodeSign Secure. CodeSign Secure erbjuder en säker och flexibel lösning för dina kodsigneringsbehov för alla operativsystem, inklusive Windows, Linux, Macintosh, Docker samt Android- och iOS-applikationer. Digitalt signerad kod säkerställer att programvaran som körs på datorer och enheter är betrodd och omodifierad.

Vi skyddar dina kodsigneringsnycklar med ditt val av HSM som är FIPS 140-2 Nivå 3 kompatibel. Vi hjälper dig att utforma arbetsflöden och policyer för att säkra och effektivisera din process för inlämning och godkännande av jobb. Tillsammans med detta integrerar vi din programvara för att upptäcka skadlig kod och virus fullt ut med CodeSign Secure för att ge dig bästa möjliga övervakning av kodsigneringsprocessen. CodeSign Secure utvecklades på ett öppet REST API, vilket möjliggör anpassade integrationer och krav.