Vývojári OpenSSH pokračovali v delení sshd na niekoľko samostatných vykonávacích súborov. V máji bol zrealizovaný prvý krok rozdelenia, kde sa funkcie spojené so spracovaním relácií presunuli z sshd do samostatného procesu sshd-session, pričom v sshd zostala len funkcionalita potrebná na prijímanie nového sieťového pripojenia a spúšťanie sshd-session pre každú novú reláciu. Včera bola do kódovej základne OpenSSH pridaná zmena, ktorá pridáva ďalší proces — sshd-auth, do ktorého bol presunutý kód z sshd-session vykonávajúci autentifikáciu.
Proces sshd-auth sa spúšťa z sshd-session a umožňuje dodatočne izolovať údaje súvisiace s autentifikáciou v adresnom priestore samostatného procesu, čo zabráni prístupu k týmto údajom v pamäti v prípade útokov na kód používaný na spracovanie fáz pripojenia pred dokončením autentifikácie. Okrem toho zmena trochu zníži spotrebu pamäte, keďže kód súvisiaci s autentifikáciou je teraz prítomný v pamäti len počas vykonávania autentifikácie a následne je vymazaný pri ukončení procesu sshd-auth.
Podobne ako pri sshd, ssh-session a ssh-agent bola pre proces sshd-auth aplikovaná operácia náhodného prekombinovania vykonávacieho súboru počas každej bootovania operačného systému. Náhodné prekombinovanie robí ťažko predpovedateľnými posuny funkcií vo vykonávacích súboroch a knižniciach, čo sťažuje vytváranie exploitov používajúcich techniky návratovo orientovaného programovania (ROP – Return-Oriented Programming). Pri použití techniky ROP sa útočník pokúša neumiestniť svoj kód do pamäti, ale operuje s už existujúcimi útržkami strojových inštrukcií, ktoré končia príkazom na návrat riadenia (zvyčajne ide o konce funkcií). Práca exploitu spočíva vo vytvorení reťazca volaní podobných blokov („gadžetov“) pre dosiahnutie požadovanej funkcionality.
Zdroj: opennet.ru
