Kiddy — модул на ядрото на Linux за защита от скрипт-кидди

Kiddy – модул за ядрото на Linux, разработен с цел намаляване на рисковете от експлоатация на (някои) уязвимости в ядрото.

Основата на механизма за защита, реализиран в този модул, е проста идея, която се състои в това, че по време на атака по един или друг начин се извършва идентификация на обекта на атаката. Затова, ако затрудните такава идентификация, можете многократно да увеличите сложността на експлоатацията, тъй като в много случаи готовите експлойти съдържат таблици с различни видове смещения (оффсети), съответстващи на целевите версии на ядрото.

Например, ето как това е направено за CVE-2017-1000112. Там също можете да видите, че идентификацията на версията на ядрото се извършва с помощта на uname.

Разработеният модул е лесен за реализация и позволява:

  • да променяте идентификацията на ядрото;
  • да ограничавате достъпа до дневника на ядрото (dmesg);
  • да ограничавате достъпа до някои файлове в /proc, които също съдържат идентифицираща информация;
  • да ограничавате достъпа до файлове и папки, които евентуално съдържат идентифицираща информация;
  • да променяте идентификацията на версията на ядрото, достъпна чрез vDSO.

По време на компилиране модулът позволява използването на т.н. "пресети", реализиращи различна логика за промяна на идентификацията. Например, с помощта на пресет "windows" можете да получите следното поведение:

Преди зареждане на модула

$ ./misc/id.sh ** UNAME идентификационни изтичания — uname -r 2.6.32-754.35.1.el6.x86_64 — uname -v #1 SMP Съб Ное 7 12:42:14 UTC 2020 — uname -a Linux localhost.localdomain 2.6.32-754.35.1.el6.x86_64 #1 SMP Съб Ное 7 12:42:14 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ** PROCFS идентификационни изтичания — /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 версия 2.6.32-754.35.1.el6.x86_64 (mockbuild@x86-02.bsys.centos.org) (gcc версия 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)) #1 SMP Съб Ное 7 12:42:14 UTC 2020 — /proc/sys/kernel/version #1 SMP Съб Ное 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)

След зареждане на модула

$ ./misc/id.sh ** UNAME идентификационни изтичания — 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 идентификационни изтичания — /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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster