De ontwikkelaars van OpenSSH hebben de sshd verder opgesplitst in verschillende afzonderlijke uitvoerbare bestanden. Tijdens de eerste fase van de opsplitsing, die in mei is gerealiseerd, zijn de functies die verband houden met sessiebeheer uit sshd overgebracht naar een aparte proces sshd-session, terwijl in sshd alleen de functionaliteit is achtergebleven die nodig is voor het aannemen van nieuwe netwerkverbindingen en het starten van sshd-session voor elke nieuwe sessie. Gisteren werd er een wijziging in de codebase van OpenSSH aangebracht die een ander proces heeft toegevoegd ā sshd-auth, waarin de code voor authenticatie vanuit sshd-session is ondergebracht.
Het proces sshd-auth wordt gestart vanuit sshd-session en maakt het mogelijk om gerelateerde authenticatiegegevens verder te isoleren in het adresruimte van een afzonderlijk proces, waardoor toegang tot deze gegevens in het geheugen tijdens aanvallen op de code die wordt gebruikt voor het verwerken van verbindingstappen vóór de voltooiing van de authenticatie wordt voorkomen. Bovendien verlaagt deze wijziging iets het geheugengebruik, aangezien de code die met authenticatie verband houdt nu alleen in het geheugen aanwezig is tijdens de authenticatie en daarna wordt verwijderd wanneer het sshd-auth proces is voltooid.
Net als bij sshd, ssh-session en ssh-agent is voor het proces sshd-auth de techniek van willekeurige herschikking van het uitvoerbare bestand toegepast tijdens elke systeemopstart. Willekeurige herschikking maakt de offsets van functies in uitvoerbare bestanden en bibliotheken moeilijk voorspelbaar, wat het creƫren van exploits bemoeilijkt die gebruik maken van Return-Oriented Programming (ROP). Bij het gebruik van de ROP-techniek probeert de aanvaller niet zijn eigen code in het geheugen te plaatsen, maar gebruikt hij al bestaande delen van machine-instructies die eindigen met een return-instructie (meestal de eindigen van functies). Het succes van de exploit hangt af van het bouwen van een keten van aanroepen van dergelijke blokken ('gadgets') voor het verkrijgen van de gewenste functionaliteit.
Bron: opennet.ru
