OpenBSD KARL: For hver starte en ny kerne

Under navnet KARL, kort for Kernel Adresse randomiseret link, har OpenBSD introduceret en ny funktion til at beskytte styresystemets kerne. KARL fundamentalt forskellig fra ASLR og KASLR i Linux.

En ny tilfældig mekanisme kaldet KARL præsenteres i OpenBSD-tech postliste OpenBSD grundlægger Theo de Raadt. Forkortelsen står for Kernel Adresse Randomiseret link, der forbinder de dele af kernen i tilfældig rækkefølge.

Det usædvanlige er, at dette ikke sker, når oversætte kernen fra kilden, men under installationen, hver gang du opgraderer og selv når systemet genstartes. Med andre ord: Hver gang du starter OpenBSD får en unik, ny ragtag kerne.

En kerne uden KARL

For at forstå KARL, et kig til den sædvanlige procedure er nyttigt: Den compiler oversætter alle tilhører kernen kildekoden filer individuelt i maskinkode. Desuden er der den lille bootstrap loader (bootloader, locore.s), som indlæser den egentlige kerne i hukommelsen og starter. Det vakte mange objekt filer med endelsen .o det - ligner DLL - meget fjernt.

Sammen med nødvendige data er afhængig af Venstre alle disse objekt filer, der starter med boot loader, til hinanden og skriver dem ind i kernen fil (/ BSD for single-core kerne OpenBSD). Rækkefølgen er bestemt af config værktøj og andre hjælpemidler filer fra OpenBSD endnu nøjagtigt.

De Raadts legitim kritik: Alle OpenBSD kerne af en udgivelse er helt identiske. Hvis en hacker, for eksempel via en kompromitteret hypervisor med OpenBSD som en virtuel maskine, også kan kun identificere en meget lille del af kernen, kender den automatisk alle andre indgange til kernel-funktioner.

KARL giver en unik kerne

KARL forhindret af hver kerne er unik ved dens utilsigtet skabelse af start for at starte. Selv den kun forpligtet til at indlæse kerne boot loader del fjernet systemet efter brug fra hukommelsen. Desuden det hele er at arbejde med kun minimal forsinkelse ved opstart.

KARL kan prøve direkte interesseret med OpenBSD 6.1-STRØM.
KARL interesserede kan prøve en OpenBSD 6.1-STRØM.forstørre
Billede: Michael Plura
Kernen du ikke genopbygge, vil det blive sat sammen med et link kit fra sin eksisterende på systemet objekt filer. Dette gøres via den nye reorder_kernel () - funktion Start script / etc / rc. Den Diff dette er overraskende lille og indeholder ingen linje af C-kode. Da den nye kerne er genereret under opstart, det er relevant for den næste systemstart.

Forskelle til ASLR

Når adresseområde Layout Randomisering (ASLR), systemet adresse intervaller for programmer der skal ske, hvad der er svært at tage fordel af buffer overflow. Når baseret på Kernel Adresse Space Layout Randomisering (KASLR) Linux-kernen indlæser altid identisk med tilfældige hukommelse adresser. KARL opfordrer imidlertid en tilfældig kerne til en identisk adresse.

kan lide at blive fundet en ny kerne, hver gang du starter mange systemadministratorer synes mærkeligt. Det minder om de mutation motorer af virus, den såkaldte rundt for signaturer baseret virus scanner på næsen. Bortset fra genoptage fra dvaletilstand men KARL virker fint i udviklingen versionen OpenBSD 6.1-STRØM og udvider opstart knap mærkbar.

Opdater 2017/10/07, 13:20: Ordlyden om virkningerne af ASLR specificeret på buffer overflow.(Fo)