Kiddy – modul pro jádro Linux navržený s cílem snížit rizika exploitace (některých) zranitelností jádra.
Základem mechanismu ochrany, realizovaného v tomto modulu, je jednoduchá myšlenka, která spočívá v tom, že během útoku dochází k identifikaci cíle útoku. Proto, pokud se ztíží taková identifikace, lze výrazně zvýšit složitost exploitace, protože v mnoha případech hotové exploitovní skripty obsahují tabulky různých druhů posunů (offsetů), odpovídajících cílovým verzím jádra.
Například, takto je to provedeno pro CVE-2017-1000112. Zde je také vidět, že identifikace verze jádra se provádí pomocí uname.
Navržený modul je jednoduchý na implementaci a umožňuje:
- měnit identifikaci jádra;
- omezit přístup k jádrovému logu (dmesg);
- omezit přístup k některým souborům v /proc, které také obsahují identifikující informace;
- omezit přístup k souborům a složkám, které mohou obsahovat identifikující informace;
- měnit identifikaci verze jádra k dispozici prostřednictvím vDSO.
Během sestavení modul umožňuje používat tzv. „presetty“, realizující různou logiku změny identifikace. Například použitím presetu „windows“ lze dosáhnout následujícího chování:
Před načtením modulu
$ ./misc/id.sh ** UNAME identifikační úniky — uname -r 2.6.32-754.35.1.el6.x86_64 — uname -v #1 SMP So 7. listopadu 12:42:14 UTC 2020 — uname -a Linux localhost.localdomain 2.6.32-754.35.1.el6.x86_64 #1 SMP So 7. listopadu 12:42:14 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ** PROCFS identifikační úniky — /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 verze 2.6.32-754.35.1.el6.x86_64 (mockbuild@x86-02.bsys.centos.org) (gcc verze 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)) #1 SMP So 7. listopadu 12:42:14 UTC 2020 — /proc/sys/kernel/version #1 SMP So 7. listopadu 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)
Po načtení modulu
$ ./misc/id.sh ** UNAME identifikační úniky — 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 identifikační úniky — /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)
Skript- kiddies neprojdou!
Zdroj: linux.org.ru
