OpenSSH-ի մշակողները շարունակեցին sshd-ման բաժանումը մի քանի առանձին executable ֆայլերի: Մայիսին իրականացված բաժանման առաջին փուլում sshd-ից առանձին sshd-session գործընթաց տեղափոխվեցին սեանսների մշակման հետ կապված ֆունկցիաները, իսկ sshd-ին թողնվեց միայն այն ֆունկցիոնալությունը, որը անհրաժեշտ էր նոր ցանցային կապի ընդունման և sshd-session-ի գործարկման համար յուրաքանչյուր նոր սեանսի համար: Սեսիոն սկզբի կոդային բազան անցյալ օրը փոփոխություն ընդունեց, որը ավելացրեց ևս մեկ գործընթաց՝ sshd-auth, որն իր մեջ ներառում է sshd-session-ից տեղափոխված վավերացման կատարող կոդը.
sshd-auth գործընթացը գործարկվում է sshd-session-ի կողմից և թույլ է տալիս ավելի հստակ տարանջատել վավերացման հետ կապված տվյալները առանձին գործընթացի հասցեական տարածքում, ինչը չի թույլի հասնել այդ տվյալներին հիշողության մեջ, երբ կատարվում են կոդի վրա իրականացվող հարձակման փորձեր, որոնք վերաբերում են սեղմումների մշակման փուլերին մինչ վավերացման ավարտը: Բացի այդ, փոփոխությունը փոքր-ինչ կրճատի հիշողության սպառումը, քանի որ վավերացման հետ առնչվող կոդն այժմ առկա է հիշողության մեջ միայն վավերացման ընթացքում, իսկ հետո դուրս բերվում է sshd-auth գործընթացի ավարտից:
sshd-ի, ssh-session-ի և ssh-agent-ի նման՝ sshd-auth գործընթացի համար կիրառվել է executable ֆայլի պատահական վերագրման գործողություն յուրաքանչյուր օպերացիոն համակարգի загрузկում: Պատահական վերագրման շնորհիվ ֆունկցիաների անցումները executable ֆայլերում և գրադարաններում դառնում են վատ կանխատեսելի, ինչը բարդացնում է հարձակման մեթոդների մշակումը, որոնք կախում են վերադարձված կառավարման ծրագրավորած մեթոդներից (ROP - Return-Oriented Programming). ROP տեխնիկայի օգտագործմամբ հարձակվողը չի փորձում իր կոդը տեղավորել հիշողության մեջ, այլ գործում է արդեն առկա մեքենայական հրահանգների հատվածներով, որոնք ավարտվում են կառավարումը վերադարձվող հրահանգով (օրինակ, սա ֆունկցիաների ավարտներն են): Հոնակագործի աշխատանքի հիմնական խնդիրն է կազմել նման տիպի բլոկների՝ «գաջետների» զանգվածը՝ անհրաժեշտ ֆունկցիոնալություն ստանալու համար.
Ընտանիք: opennet.ru
