OpenSSH arendajad jätkasid sshd jagamist mitmeks eraldi täidetavaks failiks. Maikuus toimunud jagamise esimeses etapis viidi sshd-st eraldi protsessiks sshd-session seansside töötlemise funktsioonid, jättes sshd-le alles vaid uue võrguühenduse vastuvõtmiseks ja iga uue seansi jaoks sshd-session käivitamiseks vajaliku funktsionaalsuse. Eile tehti OpenSSH koodibaasi muudatus, mis lisas veel ühe protsessi — sshd-auth, kuhu sshd-session-ist viidi üle autentimise teostav kood.
sshd-auth protsess käivitatakse sshd-sessionist ja võimaldab täiendavalt isoleerida autentimisega seotud andmed eraldi protsessi aadressiruumi, mis takistab nende andmete juurdepääsu mälus juhul, kui rünnakud suunatakse koodile, mida kasutatakse ühenduse etappide töötlemiseks kuni autentimise lõpuleviimiseni. Lisaks vähendab muudatus veidi mälutarbimist, kuna autentimisega seotud kood on nüüd mälus vaid autentimise ajal ja seejärel vabastatakse, kui sshd-auth protsess lõpetatakse.
Sarnaselt sshd, ssh-sessionile ja ssh-agentile on sshd-auth protsessi jaoks rakendatud juhusliku ümberkorraldamise operatsioon iga kord, kui operatsioonisüsteem käivitatakse. Juhuslik ümberkorraldamine muudab funktsioonide offsetid eksekutiivfailides ja teekides halbade ennustuste jaoks, mis raskendab ROP (Return-Oriented Programming) meetodeid kasutavate eksploitide loomist. ROP tehnikat kasutav ründaja ei püüa enda koodi mällu paigutada, vaid opereerib juba olemasolevate masinainstruktsioonide tükkidega, mis lõppevad juhtimise tagastamise käsuga (üldiselt funktsioonide lõppude korral). Eksplooit tõmbab üles sarnaste plokkide („gadgetide”) kutsumise ahela vajalikku funktsionaalsust saavutamiseks.
Allikas: opennet.ru
