OpenSSH arendajad on jätkanud sshd jagamist mitmeks eraldi täidesaatvaks failiks. Mais ellu viidud jagamise esimeses etapis viidi sshd-st eraldi protsessi sshd-session funktsioonid, mis on seotud seansside töötlemisega, ning sshd-s jäeti alles vaid funktsionaalsus uue võrgusisalduse vastuvõtmiseks ja sshd-sessioni käivitamiseks iga uue seansi jaoks. Eile tehti OpenSSH koodibaasis muudatus, mis lisas veel ühe protsessi — sshd-auth, kuhu viidi sshd-sessionist kood, mis teostab autentimise.
Protsess sshd-auth käivitatakse sshd-sessionist ja võimaldab veelgi isoleerida autentimisega seotud andmed eraldi protsessi aadressiruumi, mis ei luba pääseda nendele andmetele mälus, kui rünnatakse koodi, mida kasutatakse ühendamise etappide töötlemiseks enne autentimise lõpule viimist. Lisaks vähendab muudatus veidi mälutarvet, kuna autentimisega seotud kood on nüüd mälus olemas ainult autentimise ajal ja seejärel laaditakse välja sshd-auth protsessi lõpetamisel.
Sarnaselt sshd-le, ssh-sessionile ja ssh-agentile rakendatakse sshd-auth protsessi puhul täidesaatva faili juhuslikku ümberkorraldamist iga operatsioonisüsteemi käivitamise ajal. Juhuslik ümberkorraldamine teeb funktsioonide nihked täidesaatvates failides ja raamatukogudes halvasti ennustatavaks, mis raskendab ROP (Return-Oriented Programming) meetodeid kasutavate eksploitide loomist. ROP tehnikat kasutav ründaja ei püüa oma koodi mälus paigutada, vaid tegeleb juba olemasolevate masinakeelsete käskude fragmentidega, mis lõppevad juhtimise tagastamise käsuga (tavaliselt funktsioonide lõppega). Eksploid töö tabab kettad sarnaste plokkide ("gadgetide") väljakutsumiseks vajalikku funktsionaalsust.
Allikas: opennet.ru
