De ved det allerede OpenBSD, et operativsystem af BSD-familien. Hvis du ikke kender det, er det et open source Unix-lignende system, og det er naturligvis ikke baseret på Linux-kernen. Det er en efterkommer, der stammer fra NetBSD, men overlader bærbarhed til et andet sted for at fokusere på sikkerhed som et stærkt punkt. Nå, med frigivelsen af OpenBSD 6.2 kommer en kerne med en meget interessant funktion.
Det viser sig, at OpenBSD 6.2 opretter en unik kerne, hver gang en systembruger genstarter eller opdaterer systemet. Denne funktion det hedder KARL (Kernel Address Randomized Link) og fungerer ved at linke de interne kernefiler igen i en tilfældig rækkefølge, så den genererer en unik binær blob hver gang. Dette er nyt, da nuværende versioner af OpenBSD bruger en foruddefineret placering, hvilket resulterer i, at de interne filer linkes og indlæses i den samme binære hver gang og for alle brugere.
Udviklingen af Theo deRaadt det fungerer ved at generere dette specifikke billede under installationen, under opdateringer eller opstartstid. Hvis brugeren starter, opdaterer eller genstarter maskinen, erstattes den nyligt genererede kerne af den nye binære. Og alt dette til hvad? Nå, på denne måde oprettes der en tilfældig placering for hukommelsesadresserne, hvor applikationen og kernekoden udføres, i stedet for at have et hierarki eller hukommelsessegmenter, der allerede er defineret for hver ting, hvilket komplicerer brugen af udnyttelser, der peger på et hukommelsesområde og forbedrer sikkerhed.
Der er en anden lignende teknik kaldet KASLR (Kernel Space Layout Randomization), som adskiller sig fra KARL ved, at i stedet for at generere en anden binær hver gang, indlæser KASLR den samme binære på tilfældige placeringer, hvilket er, hvad operativsystemer som Windows og Linux-baserede bruger i øjeblikket. Begge til samme formål.