Kiddy – en modul för Linux-kärnan utvecklad för att minska risken för utnyttjande av (vissa) kärnsvagheter.
Skyddsmetoden som implementeras i denna modul bygger på en enkel idé, nämligen att identifiering av angreppsoffret alltid sker under en attack. Om man kan göra denna identifiering svårare, ökar det avsevärt svårigheterna att utnyttja, eftersom många färdiga exploater innehåller olika typer av adress-tabeller (offsets) som är anpassade för målspecifika kärnversioner.
Till exempel, så här görs det för CVE-2017-1000112. Där kan man också se att identifieringen av kärnversionen sker med hjälp av uname.
Den utvecklade modulen är enkel att implementera och tillåter att:
- ändra kärnidentifieringen;
- begränsa åtkomsten till kärnloggar (dmesg);
- begränsa åtkomsten till vissa filer i /proc som också innehåller identifierande information;
- begränsa åtkomst till filer och mappar som potentiellt innehåller identifierande information;
- ändra kärnversionen som är tillgänglig via vDSO.
Under byggprocessen tillåter modulen användning av så kallade "presets" som implementerar olika logik för att ändra identifieringen. Till exempel, genom att använda preset "windows" får man följande beteende:
Innan modulen laddas
$ ./misc/id.sh ** UNAME identifieringsläckor — uname -r 2.6.32-754.35.1.el6.x86_64 — uname -v #1 SMP lör nov 7 12:42:14 UTC 2020 — uname -a Linux localhost.localdomain 2.6.32-754.35.1.el6.x86_64 #1 SMP lör nov 7 12:42:14 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ** PROCFS identifieringsläckor — /proc/cmdline ro root=/dev/mapper/VolGroup00-LogVol00 rd_NO_LUKS no_timer_check console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=VolGroup00/LogVol01 rd_LVM_LV=VolGroup00/LogVol00 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet — /proc/version Linux version 2.6.32-754.35.1.el6.x86_64 (mockbuild@x86-02.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)) #1 SMP lör nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/version #1 SMP lör nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/osrelease 2.6.32-754.35.1.el6.x86_64 vilket: ingen hostnamectl i (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Efter att modulen har laddats
$ ./misc/id.sh ** UNAME identifieringsläckor — uname -r Windows — uname -v NT 4.0 — uname -a Linux localhost.localdomain Windows NT 4.0 x86_64 x86_64 x86_64 GNU/Linux ** PROCFS identifieringsläckor — /proc/cmdline EFIMicrosoftBootbootmgfw.efi — /proc/version Windows NT 4.0 — /proc/sys/kernel/version NT 4.0 — /proc/sys/kernel/osrelease Windows vilket: ingen hostnamectl i (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Script kiddies kommer inte att lyckas!
Källa: linux.org.ru
