Kiddy – modul za Linux jezgru, dizajniran s ciljem smanjenja rizika od iskorištavanja (nekih) ranjivosti jezgre.
Osnova mehanizma zaštite implementiranog u ovom modulu je jednostavna ideja da se tokom napada na bilo koji način vrši identifikacija objekta napada. Stoga, ako se oteža ta identifikacija, može se značajno povećati složenost iskorištavanja, jer u mnogim slučajevima gotovi eksploiti sadrže različite tabele pomaka (offseta) koje odgovaraju ciljnim verzijama jezgre.
Na primjer, ovako je to učinjeno za CVE-2017-1000112. Tamo se može vidjeti da se identifikacija verzije jezgre vrši korištenjem uname.
Razvijeni modul je jednostavan za implementaciju i omogućava:
- promjenu identifikacije jezgre;
- ograničavanje pristupa jezgrenom dnevniku (dmesg);
- ograničavanje pristupa nekim datotekama u /proc, koje također sadrže identifikacione informacije;
- ograničavanje pristupa datotekama i folderima koji potencijalno sadrže identifikacione informacije;
- promjenu identifikacije verzije jezgre dostupne preko vDSO.
Tokom procesa izrade, modul omogućava korištenje takozvanih „preset-a“ koji implementiraju različitu logiku promjene identifikacije. Na primjer, koristeći preset „windows“, moguće je dobiti sljedeće ponašanje:
Prije učitavanja modula
$ ./misc/id.sh ** UNAME identitetska curenja — uname -r 2.6.32-754.35.1.el6.x86_64 — uname -v #1 SMP Sub Nov 7 12:42:14 UTC 2020 — uname -a Linux localhost.localdomain 2.6.32-754.35.1.el6.x86_64 #1 SMP Sub Nov 7 12:42:14 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ** PROCFS identitetska curenja — /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 verzija 2.6.32-754.35.1.el6.x86_64 (mockbuild@x86-02.bsys.centos.org) (gcc verzija 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) ) #1 SMP Sub Nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/version #1 SMP Sub Nov 7 12:42:14 UTC 2020 — /proc/sys/kernel/osrelease 2.6.32-754.35.1.el6.x86_64 which: nema hostnamectl u (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Nakon učitavanja modula
$ ./misc/id.sh ** UNAME identitetska curenja — 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 identitetska curenja — /proc/cmdline EFIMicrosoftBootbootmgfw.efi — /proc/version Windows NT 4.0 — /proc/sys/kernel/version NT 4.0 — /proc/sys/kernel/osrelease Windows which: nema hostnamectl u (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
Skripti kiddie neće proći!
Izvor: linux.org.ru
