Panaliti kaamanan ti Qualys
Masalahna disababkeun ku ngabahekeun integer dina fungsi stralloc_readyplus (), nu bisa lumangsung nalika ngolah pesen anu kacida gedéna. Operasi merlukeun sistem 64-bit kalawan leuwih ti 4GB memori virtual. Nalika kerentanan asalna dianalisis dina 2005, Daniel J. Bernstein pamadegan yén asumsi dina kode nu ukuran tina Asép Sunandar Sunarya disadiakeun salawasna dina nilai 32-bit dumasar kana kanyataan yén euweuh hiji nyadiakeun gigabytes memori pikeun tiap prosés. Sapanjang 15 taun katukang, sistem 64-bit dina server parantos ngagentos sistem 32-bit, sareng jumlah mémori anu disayogikeun sareng rubakpita jaringan parantos ningkat sacara dramatis.
Pangurus pakét qmail nyandak catetan Bernstein sareng ngawatesan mémori anu sayogi nalika ngamimitian prosés qmail-smtpd (contona, dina Debian 10 watesna disetel ka 7MB). Tapi insinyur ti Qualys kapanggih yén ieu teu cukup jeung, sajaba qmail-smtpd, serangan jauh bisa dilumangsungkeun dina prosés qmail-lokal, nu tetep unrestricted dina sakabéh bungkusan dites. Salaku buktina, prototipe eksploitasi disiapkeun anu cocog pikeun nyerang pakét Debian nganggo qmail dina konfigurasi standar.
Pikeun ngatur palaksanaan kode jauh nalika serangan, server butuh 4GB rohangan disk bébas sareng 8GB RAM.
Eksploitasi ngamungkinkeun anjeun pikeun ngajalankeun sagala paréntah cangkang sareng hak-hak pangguna mana waé dina sistem, kecuali pikeun pangguna akar sareng sistem anu henteu gaduh subdirektori sorangan dina diréktori "/home" (prosés qmail-lokal diluncurkeun kalayan hak pamaké lokal ka saha pangiriman dilaksanakeun).
Serangan dilaksanakeun
ngaliwatan ngirim pesen surat anu kacida gedéna, kaasup sababaraha garis header, ukuranana kira 4GB na 576MB. Ngolah string misalna dina qmail-lokal hasilna integer ngabahekeun nalika nyobian pikeun ngirim pesen ka pamaké lokal. Integer ngabahekeun lajeng ngabalukarkeun panyangga mudal nalika nyalin data sarta kamungkinan overwriting kaca memori sareng kode libc. Ku manipulasi tata perenah data dikirimkeun, eta oge mungkin nulis ulang alamat tina fungsi "buka ()", ngaganti eta jeung alamat tina fungsi "sistem ()".
Salajengna, dina prosés nelepon qmesearch () di qmail-lokal, file ".qmail-extension" dibuka ngaliwatan fungsi kabuka (), nu ngabalukarkeun palaksanaan sabenerna fungsi.
sistem (".qmail-extension"). Tapi saprak bagian "extension" tina file dihasilkeun dumasar kana alamat panarima (contona, "localuser-extension@localdomain"), panyerang tiasa ngatur paréntah pikeun dikirim ka ngajalankeun ku nangtukeun pamaké "localuser-; paréntah. ;@localdomain" salaku panarima suratna.
Salila analisis kode, dua kerentanan ogé dicirikeun dina tambahan qmail-verifikasi patch, anu mangrupa bagian ti pakét pikeun Debian. Kerentanan munggaran (
Pikeun berpungsi dina masalah, Bernstein nyarankeun ngajalankeun prosés qmail kalayan wates total dina mémori anu sayogi ("softlimit -m12345678"), dimana masalahna diblokir. Salaku hiji metodeu alternatif panyalindungan, ngawatesan ukuran maksimum pesen olahan ngaliwatan "kontrol / databytes" file ogé disebutkeun (sacara standar teu dijieun kalawan setélan standar qmail tetep rentan). Sajaba ti éta, "kontrol / databytes" teu ngajaga ngalawan serangan lokal ti pamaké sistem, saprak wates ieu ngan dicokot kana akun ku qmail-smtpd.
Masalahna mangaruhan bungkusan
sumber: opennet.ru