Kiddy – modulis Linux kodam, izstrādāts, lai samazinātu (dažu) kodu ievainojamību ekspluatācijas riskus.
Aizsardzības mehānisma pamatā, kas tiek īstenots šajā modulī, ir vienkārša ideja, ka uzbrukuma procesā tiek identificēts uzbrukuma mērķis. Tādēļ, ja apgrūtinām šādu identificēšanu, uzbrukuma realizēšana var kļūt ievērojami sarežģītāka, jo daudzos gadījumos gatavi eksplojti satur dažādu nobīžu (offset) tabulas, kas atbilst mērķa kodu versijām.
Piemēram, tā tas tiek darīts CVE-2017-1000112. Turpat var redzēt, ka kodu versijas identifikācija tiek veikta, izmantojot uname.
Izstrādātais modulis ir vienkārši īstenojams un ļauj:
- mainīt kodu identifikāciju;
- ierobežot piekļuvi kodu žurnālam (dmesg);
- ierobežot piekļuvi dažām failēm katalogā /proc, kas arī satur identificējošu informāciju;
- ierobežot piekļuvi failiem un mapēm, kas var saturēt identificējošu informāciju;
- mainīt kodu versijas identifikāciju, pieejamu caur vDSO.
Moduļa kompilēšanas laikā ir iespējams izmantot tā saucamos „presetus”, kas īsteno dažādu identifikācijas mainīšanas loģiku. Piemēram, izmantojot presetu „windows”, var iegūt sekojošu uzvedību:
Pirms moduļa ielādes
$ ./misc/id.sh ** UNAME identitātes noplūdes — uname -r 2.6.32-754.35.1.el6.x86_64 — uname -v #1 SMP Sat Nov 7 12:42:14 UTC 2020 — uname -a Linux localhost.localdomain 2.6.32-754.35.1.el6.x86_64 #1 SMP Sat Nov 7 12:42:14 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ** PROCFS identitātes noplūdes — /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 versija 2.6.32-754.35.1.el6.x86_64 (mockbuild@x86-02.bsys.centos.org) (gcc versija 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)) #1 SMP Sat Nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/version #1 SMP Sat Nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/osrelease 2.6.32-754.35.1.el6.x86_64 which: nav hostnamectl ( /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Pēc moduļa ielādes
$ ./misc/id.sh ** UNAME identitātes noplūdes — 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 identitātes noplūdes — /proc/cmdline EFIMicrosoftBootbootmgfw.efi — /proc/version Windows NT 4.0 — /proc/sys/kernel/version NT 4.0 — /proc/sys/kernel/osrelease Windows which: nav hostnamectl ( /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Kiddy skripti nepārvarēs!
Avots: linux.org.ru
