Kiddy – et modul til Linux-kernen, udviklet med det formål at reducere risikoen for udnyttelse af (nogle) kerne-sårbarheder.
Kernen i beskyttelsesmekanismen, der implementeres i dette modul, bygger på en simpel idé: i en angrebsproces identificeres angrebsobjektet på en eller anden måde. Derfor kan man, hvis man vanskeliggør denne identifikation, kraftigt øge kompleksiteten ved udnyttelse, da mange færdige exploits indeholder tabeller med forskellige typer forskydninger (offsets), der svarer til dertil målrettede kerneversioner.
For eksempel er dette gjort for CVE-2017-1000112. Her kan man også se, at identifikationen af kerne-versionen foretages ved hjælp af uname.
Det udviklede modul er let at implementere og tillader:
- at ændre kerneidentifikationen;
- at begrænse adgangen til kernen log (dmesg);
- at begrænse adgangen til visse filer i /proc, som også indeholder identificerbare oplysninger;
- at begrænse adgangen til filer og mapper, der potentielt indeholder identificerbare oplysninger;
- at ændre kerneversionen, der er tilgængelig via vDSO.
Under opbygningen af modulet kan man bruge såkaldte 'presets', der implementerer forskellige logikker til ændring af identifikation. For eksempel, ved hjælp af preset 'windows' kan man opnå følgende adfærd:
Før indlæsning af modulet
$ ./misc/id.sh ** UNAME identitetslækager — 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 identitetslækager — /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 which: no hostnamectl in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Efter indlæsning af modulet
$ ./misc/id.sh ** UNAME identitetslækager — 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 identitetslækager — /proc/cmdline EFIMicrosoftBootbootmgfw.efi — /proc/version Windows NT 4.0 — /proc/sys/kernel/version NT 4.0 — /proc/sys/kernel/osrelease Windows which: no hostnamectl in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Kiddie-scriptet slipper ikke igennem!
Kilde: linux.org.ru
