Pag-unlad sa pagbuo ng pagsasamantala para sa OpenSSH 9.1

Nakahanap si Qualys ng isang paraan upang i-bypass ang malloc at double-free na proteksyon upang simulan ang paglipat ng kontrol sa code gamit ang isang kahinaan sa OpenSSH 9.1 na natukoy na may mababang panganib na lumikha ng isang gumaganang pagsasamantala. Kasabay nito, ang posibilidad ng paglikha ng isang gumaganang pagsasamantala ay nananatiling isang malaking katanungan.

Ang kahinaan ay sanhi ng isang pre-authentication double free. Upang lumikha ng mga kundisyon para maipakita ang kahinaan, sapat na baguhin ang banner ng SSH client sa "SSH-2.0-FuTTYSH_9.1p1" (o isa pang lumang SSH client) upang maitakda ang mga flag na "SSH_BUG_CURVE25519PAD" at "SSH_OLD_DHGEX". Pagkatapos itakda ang mga flag na ito, ang memorya para sa buffer ng "options.kex_algorithms" ay na-freeze nang dalawang beses.

Ang mga mananaliksik mula sa Qualys, habang minamanipula ang kahinaan, ay nakakuha ng kontrol sa "%rip" na rehistro ng processor, na naglalaman ng isang pointer sa susunod na pagtuturo na isasagawa. Ang binuong diskarte sa pagsasamantala ay nagpapahintulot sa iyo na ilipat ang kontrol sa anumang punto sa address space ng proseso ng sshd sa isang hindi na-update na OpenBSD 7.2 na kapaligiran, na ibinibigay bilang default sa OpenSSH 9.1.

Nabanggit na ang iminungkahing prototype ay isang pagpapatupad lamang ng unang yugto ng pag-atake - upang lumikha ng isang gumaganang pagsasamantala, kinakailangan na i-bypass ang mga mekanismo ng proteksyon ng ASLR, NX at ROP, at makatakas sa paghihiwalay ng sandbox, na hindi malamang. Upang malutas ang problema ng pag-bypass sa ASLR, NX at ROP, kinakailangan upang makakuha ng impormasyon tungkol sa mga address, na maaaring makamit sa pamamagitan ng pagtukoy ng isa pang kahinaan na humahantong sa pagtagas ng impormasyon. Ang isang bug sa privileged parent process o kernel ay maaaring makatulong na lumabas sa sandbox.

Pinagmulan: opennet.ru

Magdagdag ng komento