DroŔības pÄtnieki no Qualys
ProblÄmu izraisa vesela skaitļa pÄrpilde funkcijÄ stralloc_readyplus(), kas var rasties, apstrÄdÄjot ļoti lielu ziÅojumu. DarbÄ«bai bija nepiecieÅ”ama 64 bitu sistÄma ar vairÄk nekÄ 4 GB virtuÄlÄs atmiÅas. Kad ievainojamÄ«ba tika sÄkotnÄji analizÄta 2005. gadÄ, Daniels J. Bernsteins apgalvoja, ka kodÄ ietvertais pieÅÄmums, ka pieŔķirtÄ masÄ«va lielums vienmÄr nepÄrsniedz 32 bitu vÄrtÄ«bu, ir balstÄ«ts uz faktu, ka neviens katram procesam nenodroÅ”ina gigabaitus atmiÅas. PÄdÄjo 15 gadu laikÄ 64 bitu sistÄmas serveros ir aizstÄjuÅ”as 32 bitu sistÄmas, un piegÄdÄtÄs atmiÅas apjoms un tÄ«kla joslas platums ir dramatiski palielinÄjies.
Qmail pakotÅu uzturÄtÄji ÅÄma vÄrÄ Bernstein piezÄ«mi un ierobežoja pieejamo atmiÅu, startÄjot qmail-smtpd procesu (piemÄram, Debian 10 ierobežojums ir iestatÄ«ts uz 7 MB). TaÄu Qualys inženieri atklÄja, ka ar to nepietiek, un papildus qmail-smtpd var veikt attÄlu uzbrukumu qmail-local procesam, kas palika neierobežots visÄs pÄrbaudÄ«tajÄs pakotnÄs. KÄ pierÄdÄ«jums tika sagatavots ekspluatÄcijas prototips, kas bija piemÄrots uzbrukumam Debian pakotnei ar qmail noklusÄjuma konfigurÄcijÄ.
Lai organizÄtu attÄlu koda izpildi uzbrukuma laikÄ, serverim ir nepiecieÅ”ami 4 GB brÄ«vas vietas diskÄ un 8 GB RAM.
EkspluatÄcija ļauj palaist jebkuras Äaulas komandas ar jebkura lietotÄja tiesÄ«bÄm sistÄmÄ, izÅemot saknes un sistÄmas lietotÄjus, kuriem direktorijÄ ā/homeā nav sava apakÅ”direktorija (tiek palaists qmail-local process ar tiesÄ«bÄm vietÄjais lietotÄjs, kuram piegÄde tiek veikta).
Uzbrukums tiek veikts
nosÅ«tot ļoti lielu pasta ziÅojumu, ieskaitot vairÄkas galvenes, aptuveni 4 GB un 576 MB. Å Ädas virknes apstrÄde programmÄ qmail-local rada veselu skaitļu pÄrpildÄ«Å”anu, mÄÄ£inot piegÄdÄt ziÅojumu vietÄjam lietotÄjam. Vesela skaitļa pÄrpilde noved pie bufera pÄrpildes, kopÄjot datus un iespÄju pÄrrakstÄ«t atmiÅas lapas ar libc kodu. ManipulÄjot ar pÄrsÅ«tÄ«to datu izkÄrtojumu, iespÄjams arÄ« pÄrrakstÄ«t funkcijas āopen()ā adresi, aizstÄjot to ar funkcijas āsystem()ā adresi.
PÄc tam, izsaucot qmesearch() programmÄ qmail-local, fails ā.qmail-extensionā tiek atvÄrts, izmantojot funkciju open(), kas noved pie funkcijas faktiskÄs izpildes.
system(".qmail-extension"). TaÄu, tÄ kÄ faila daļa āpaplaÅ”inÄjumsā tiek Ä£enerÄta, pamatojoties uz adresÄta adresi (piemÄram, ālocaluser-extension@localdomainā), uzbrucÄji var organizÄt komandas nosÅ«tÄ«Å”anu, norÄdot lietotÄju ālocaluser-;commandā. ;@localdomainā kÄ ziÅojuma adresÄtu.
Koda analÄ«zes laikÄ tika konstatÄtas arÄ« divas ievainojamÄ«bas papildu qmail-verify ielÄpÄ, kas ir daļa no Debian pakotnes. PirmÄ ievainojamÄ«ba (
Lai novÄrstu problÄmu, Bernstein ieteica palaist qmail procesus ar kopÄjo pieejamÄs atmiÅas ierobežojumu (āsoftlimit -m12345678ā), un tÄdÄ gadÄ«jumÄ problÄma tiek bloÄ·Äta. KÄ alternatÄ«va aizsardzÄ«bas metode tiek minÄta arÄ« apstrÄdÄtÄ ziÅojuma maksimÄlÄ izmÄra ierobežoÅ”ana, izmantojot failu ācontrol/databaitesā (pÄc noklusÄjuma tas netiek izveidots ar noklusÄjuma iestatÄ«jumiem, qmail paliek neaizsargÄts). TurklÄt "kontrole/databaiti" neaizsargÄ pret vietÄjiem sistÄmas lietotÄju uzbrukumiem, jo āāierobežojumu Åem vÄrÄ tikai qmail-smtpd.
ProblÄma ietekmÄ iepakojumu
Avots: opennet.ru