OpenBSD: A new feature added to test snapshots of new versions of OpenBSD will create a unique Kernel each time an OpenBSD user reboots or upgrades computer of.
This feature is called KARL for Kernel Address Randomized Link, and it works by relinking internal kernel files in random order to create a unique kernel each time binary blob.
At present, in stable versions of OpenBSD, the kernel uses a pre-set order to perform relinking and load internal files into the binary kernel. This results in the same kernel for all users.
OpenBSD with KARL and not ASLR
KARL was developed by Theo de Raadt, and works by creating a new kernel binary at installation, the upgrade and boot time. If the user boots, upgrades or reboots their machine, a newly created kernel will replace the existing kernel and the operating system will create a new kernel binary which will be used on the next boot/upgrade/reboot.
KARL should not be confused with ASLR or Address Space Layout Randomization, a technique that provides a random address memory when an application is running. Thus exploits can not target a specific memory area known to the attacker that an application or kernel is running.
Instead, KARL creates kernel binaries with random internal structures, so exploits can not attack internal kernel functions, pointers, or objects. A technical explanation is available in the link below.
http://undeadly.org/cgi?action=article&sid=20170701170044&mode=expanded&count=9
This feature has been developed over the past two months
Tasks for this feature began in May and were first discussed in mid-June through the OpenBSD technical mailing list. KARL was recently added to OpenBSD 6.1 snapshots.
This new feature appears to be unique in OpenBSD, as we do not know anything similar about it Linux.
Linux has just added support for the Kernel Address Space Layout Randomization (KASLR), a function that makes the ASLR port in the kernel itself, loading the kernel to a random memory address.
This feature was enabled by default on Linux 4.12, which was released last week. The difference between the two is that KARL loads different kernel binaries in the same place, while KASLR loads the same kernel binary at random locations. Same goal, different paths.
As for Windows, το KARL δεν υποστηρίζεται, αλλά η Microsoft χρησιμοποιεί το KASLR εδώ και πολλά χρόνια.
It should be noted that OpenBSD's new functionality appears to provide much more security than the solutions used by Microsoft and Linux.
Perhaps after several tests we see KARL in other operating systems as well.