OpenSSH-udviklerne har fortsat opdelingen af sshd i flere separate eksekverbare filer. I det første trin af opdelingen, implementeret i maj, blev sessionhåndtering fra sshd flyttet til en separat proces, sshd-session, mens kun den nødvendige funktionalitet til at modtage nye netværksforbindelser og starte sshd-session for hver ny session blev efterladt i sshd. I går blev der foretaget en ændring i OpenSSH's kodebase, som tilføjede endnu en proces - sshd-auth, der trækker koden til autentificering fra sshd-session.
Processen sshd-auth startes fra sshd-session og giver mulighed for at isolere autentificeringsdata i adresseområdet af en separat proces, hvilket forhindrer adgang til disse data i hukommelsen i tilfælde af angreb mod den kode, der bruges til at håndtere forbindelsesfaserne inden afslutningen af autentificeringen. Desuden vil ændringen let reducere hukommelsesforbruget, da autentificeringskoden nu kun er i hukommelsen under autentificeringsprocessen og derefter aflades ved afslutningen af sshd-auth-processen.
I lighed med sshd, ssh-session og ssh-agent anvendes der for processoren sshd-auth en operation for tilfældig omorganisering af den eksekverbare fil ved hver opstart af operativsystemet. Tilfældig omorganisering gør det svært at forudsige placeringerne af funktioner i de eksekverbare filer og biblioteker, hvilket komplicerer oprettelsen af exploits, der bruger metoder til Return-Oriented Programming (ROP). Ved anvendelse af ROP-teknikken forsøger angriberen ikke at placere sin egen kode i hukommelsen, men arbejder med allerede eksisterende fragmenter af maskinkoder, der slutter med en returkommando (normalt funktionsafslutninger). Eksploitens arbejde består i at opbygge en kæde af opkald til sådanne blokke ("gadgets") for at opnå den ønskede funktionalitet.
Kilde: opennet.ru
