Gå til indhold
atlas

Exploit

Også kendt som: exploit-kode, udnyttelseskode

Et stykke kode eller en række trin, der gør en kendt svaghed i et system til reel adgang eller kontrol for en angriber.

Kladde - dette opslag er endnu ikke gennemgået.

Formelt

En metode, ofte et lille program eller et særligt udformet input, der udløser en bestemt sårbarhed, så systemet gør noget, dets skabere aldrig havde tænkt sig, fx kører angriberens egne kommandoer eller udleverer data.

Forklaret enkelt

Som et bøjet stykke ståltråd, som nogen har formet, så det åbner én bestemt slags billig lås - det virker hver gang, for alle, der kopierer formen.

I praksis

En uge efter at en fejl i et udbredt VPN-produkt er blevet offentliggjort, dukker der færdig exploit-kode op på nettet; SAMSIK advarer danske organisationer, mens angribere begynder at bruge den mod alle, der endnu ikke har installeret rettelsen.

Hvorfor det betyder noget

En svaghed, som ingen kan udnytte, er mest teori; så snart der findes et virkende exploit, begynder nedtællingen, og det haster med at lukke hullet.

Teknisk uddybning

Et exploit er broen mellem en sårbarhed, som er en egenskab ved koden eller konfigurationen, og en konkret evne hos angriberen, fx remote code execution, rettighedseskalering, omgåelse af autentificering eller udlevering af data. Sårbarhedsklassen bestemmer i høj grad teknikken. Injektionsfejl (SQL, OS-kommandoer, template injection, JNDI-opslag som i Log4Shell, CVE-2021-44228) udnyttes med særligt udformede inputstrenge. Hukommelsesfejl i C- og C++-kode, fx buffer overflows på stakken og heapen, use-after-free og type confusion, udnyttes ved at korrumpere hukommelsen, så programmets kontrolflow ender i kode, angriberen har valgt. Logiske fejl og fejlkonfigurationer kræver ofte slet ingen "payload", kun en bestemt rækkefølge af forespørgsler.

Udnyttelse af hukommelsesfejl er formet af et våbenkapløb med mitigeringer. Ikke-eksekverbar hukommelse (DEP/NX) stoppede indsprøjtning af shellcode på stakken, hvilket førte til return-oriented programming (ROP), hvor korte instruktionssekvenser ("gadgets"), der allerede findes i programmet, kædes sammen. Address space layout randomisation (ASLR) skjuler, hvor disse gadgets ligger, så moderne exploits som regel først kræver en separat fejl, der lækker adresser. Stack canaries, control-flow integrity og shadow stacks i hardware (Intel CET) hæver barren yderligere. Derfor er et virkende exploit mod en hærdet browser eller telefon typisk en kæde af flere fejl, fx en fejl i rendereren plus et sandbox escape plus en rettighedseskalering i kernen.

Modenheden betyder noget. Et proof of concept demonstrerer fejlen, ofte blot ved at få processen til at crashe; et våbengjort exploit virker pålideligt på tværs af versioner og leverer en payload som en web shell, en loader eller ransomware. En zero-day udnyttes, før leverandøren har en rettelse; en n-day rammer en offentliggjort og rettet sårbarhed på systemer, der stadig ikke er patchet, og det er langt størstedelen af den reelle udnyttelse. EternalBlue-exploitet til MS17-010 blev lukket med en patch i marts 2017, men WannaCry og NotPetya spredte sig alligevel bredt med det måneder senere.

Forsvarere bruger dette til at prioritere. Et CVE-nummer identificerer sårbarheden, og CVSS (i dag v4.0) vurderer dens tekniske alvor, men ingen af dem siger, om der findes et exploit. FIRST's EPSS estimerer sandsynligheden for udnyttelse inden for de næste 30 dage, og CISA's Known Exploited Vulnerabilities-katalog lister fejl, der beviseligt udnyttes aktivt. Patch management, virtuel patching i en WAF eller IPS, reduktion af angrebsfladen og exploit-mitigeringer i styresystemet er kontrollerne; en sårbarhedsscanner finder svagheden, mens exploitet er det, der gør den til en sikkerhedshændelse. Malware er den payload, et exploit ofte leverer, ikke selve exploitet.

Relationer

Afbødes af
Patch management
Udnytter
Sårbarhed
Bruges sammen med
Malware

Kilder og videre læsning

Standarder og officielle tekster

Hvor dataene kommer fra

Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.

Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON

Nævnt i

Test dig selv

Indlæser…

Atlas er i beta.