Kiddy – модуль для ядра Linux, розроблений для зниження ризиків експлуатації (деяких) вразливостей ядра.
В основі механізму захисту, реалізованого в даному модулі, лежить проста ідея, що полягає в тому, що в процесі атаки так чи інакше відбувається ідентифікація об'єкта атаки. Тому, якщо утруднити таку ідентифікацію, можна кратно збільшити складність експлуатації, т.к. у багатьох випадках готові експлойти містять у собі таблиці різноманітних зсувів (офсетів), відповідних цільовим версіям ядра.
Наприклад, ось як це зроблено для CVE-2017-1000112. Там же можна бачити, що ідентифікація версії ядра здійснюється за допомогою uname.
Розроблений модуль є простим у реалізації та дозволяє:
- міняти ідентифікацію ядра;
- обмежувати доступ до журналу ядра (dmesg);
- обмежувати доступ до деяких файлів /proc, що також містять ідентифікуючу інформацію;
- обмежувати доступ до файлів та папок, що потенційно містять ідентифікуючу інформацію;
- змінювати ідентифікацію версії ядра, яка доступна через vDSO.
У процесі збирання модуль дозволяє використовувати т.зв. "пресети", що реалізують різну логіку зміни ідентифікації. Наприклад, використовуючи пресет "windows" можна отримати таку поведінку:
До завантаження модуля
$ ./misc/id.sh ** UNAME identidty leaks — uname -r 2.6.32-754.35.1.el6.x86_64 — uname -v #1 7-12.el42.x14_2020 #2.6.32 SMP Sat Nov 754.35.1 6:86:64 UTC 1 x7_12 x42_14 x2020_86 GNU/Linux ** PROCFS identidty leaks — rd_NO_LUKS no_timer_check console=tty64 console=ttyS86n64 net.ifnames=86 biosdevname=64 LANG=en_US.UTF-00 rd_NO_MD SYSFONT=latarcyrheb-sun00 rd_LVM_LV0Vol rd_LVM_LV=VolGroup0,115200/LogVol8 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet — /proc/version Linux version 0-0.el8.x16_00 (mockbuild@x01 00 00 (Red Hat 2.6.32-754.35.1) (GCC) ) #6 SMP Sat Nov 86 64:86:02 UTC 4.4.7 - /proc/sys/kernel/version #20120313 SMP Sat Nov 4.4.7 23:1:7 12-42.el14.x2020_1 which: no hostnamectl in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Після завантаження модуля
$ ./misc/id.sh ** UNAME identidty leaks — 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 identidty leaks — /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)
Скрипт-кідді не пройдуть!
Джерело: linux.org.ru
