Qmail мэйл серверийн алсаас ашиглах боломжтой сул тал

Qualys-ийн аюулгүй байдлын судлаачид үзүүлэв боломж мөлжлөг qmail мэйл сервер дэх эмзэг байдал, алдартай 2005 онд (CVE-2005-1513) байсан боловч qmail-ийн зохиогч анхдагч тохиргоонд систем рүү халдлага хийхэд ашиглаж болох ажиллаж байгаа эксплойт үүсгэх нь бодитой бус гэж үзсэн тул засвар хийгдээгүй хэвээр байсан. Qualys энэ таамаглалыг няцаах, тусгайлан боловсруулсан мессеж илгээх замаар сервер дээр алсын кодыг эхлүүлэх боломжийг олгодог мөлжлөгийг бэлтгэж чадсан.

Асуудал нь stralloc_readyplus() функцэд бүхэл тоо хэт ихэссэнээс үүдэлтэй бөгөөд энэ нь маш том мессежийг боловсруулах үед үүсч болно. Үйл ажиллагаа явуулахын тулд 64 ГБ-аас дээш виртуал санах ойтой 4 битийн систем шаардлагатай. Анх 2005 онд эмзэг байдалд дүн шинжилгээ хийхдээ Даниел Ж.Бернштейн кодонд хуваарилагдсан массивын хэмжээ үргэлж 32 битийн утга дотор байдаг гэсэн таамаглал нь процесс бүрт хэн ч гигабайт санах ой өгдөггүй гэсэн үндэслэлээр нотлогдсон. Сүүлийн 15 жилийн хугацаанд сервер дээрх 64 битийн системүүд 32 битийн системийг сольж, нийлүүлсэн санах ойн хэмжээ болон сүлжээний зурвасын өргөн эрс нэмэгдсэн.

Qmail багцын засварчид Бернштейний тэмдэглэлийг анхаарч, qmail-smtpd процессыг эхлүүлэх үед боломжтой санах ойг хязгаарласан (жишээ нь, Debian 10-д хязгаарыг 7MB болгож тохируулсан). Гэвч Qualys-ийн инженерүүд энэ нь хангалтгүй гэдгийг олж мэдсэн бөгөөд qmail-smtpd-ээс гадна qmail-local процесс дээр алсаас халдлага хийх боломжтой бөгөөд энэ нь туршиж үзсэн бүх багцад хязгаарлалтгүй хэвээр үлджээ. Үүний баталгаа болгон анхдагч тохиргоонд qmail-ээр Debian багц руу довтлоход тохиромжтой exploit-ийн прототипийг бэлтгэсэн.
Довтолгооны үед алсын зайнаас код гүйцэтгэх ажлыг зохион байгуулахын тулд серверт 4 ГБ сул дискний зай, 8 ГБ RAM шаардлагатай.
Exploit нь "/home" директорт өөрийн гэсэн дэд директоргүй root болон системийн хэрэглэгчдээс бусад системийн аль ч хэрэглэгчийн эрх бүхий бүрхүүлийн командуудыг ажиллуулах боломжийг олгодог (qmail-local процесс нь эрхтэйгээр эхлүүлсэн). хүргэлт хийж байгаа орон нутгийн хэрэглэгчийн).

Довтолгоог хийж байна
Ойролцоогоор 4 ГБ ба 576 МБ хэмжээтэй хэд хэдэн толгой мөрийг багтаасан маш том мэйл мессеж илгээх замаар. Ийм мөрийг qmail-local-д боловсруулснаар локал хэрэглэгч рүү мессеж хүргэхийг оролдох үед бүхэл тоо хэт их гардаг. Дараа нь бүхэл тооны халилт нь өгөгдлийг хуулах үед буфер халихад хүргэдэг ба санах ойн хуудсуудыг libc кодоор дарж бичих боломжтой. Дамжуулсан өгөгдлийн байршлыг өөрчилснөөр "open()" функцын хаягийг "систем()" функцын хаягаар сольж дахин бичих боломжтой.

Дараа нь qmail-local-д qmesearch()-г дуудах явцад open() функцээр дамжуулан “.qmail-extension” файл нээгдэх бөгөөд энэ нь функцийг бодитоор гүйцэтгэхэд хүргэдэг.
систем(".qmail-өргөтгөл"). Гэхдээ файлын "өргөтгөл" хэсэг нь хүлээн авагчийн хаяг дээр тулгуурлан үүсгэгддэг тул (жишээлбэл, "localuser-extension@localdomain") халдагчид "localuser-;command" гэсэн хэрэглэгчийг зааж өгснөөр тушаалыг ажиллуулахаар зохион байгуулж болно. ;@localdomain” гэж мессежийг хүлээн авагчаар бичнэ.

Кодын шинжилгээний явцад Debian-д зориулсан багцын нэг хэсэг болох qmail-verify нэмэлт нөхөөсийн хоёр эмзэг байдал мөн илэрсэн. Эхний эмзэг байдал (CVE-2020-3811) танд имэйл хаягийн баталгаажуулалтыг алгасах боломжийг олгодог бөгөөд хоёр дахь нь (CVE-2020-3812) орон нутгийн мэдээлэл алдагдахад хүргэдэг. Ялангуяа эхний эмзэг байдал нь командыг илгээхийн тулд ашиглахад ашигласан хаягийн зөв эсэхийг шалгахыг давах боломжийг олгодог ("localuser-;command;" гэх мэт домэйнгүй хаягуудад баталгаажуулалт ажиллахгүй). Хоёрдахь эмзэг байдлыг локал зохицуулагч руу шууд залгах замаар зөвхөн root-д хандах боломжтой (qmail-verify программ нь root эрхтэй ажилладаг) зэрэг систем дээрх файлууд болон лавлахууд байгаа эсэхийг шалгахад ашиглаж болно.

Асуудлыг шийдвэрлэхийн тулд Бернштейн qmail процессуудыг нийт санах ойн хязгаартай (“softlimit -m12345678”) ажиллуулахыг зөвлөсөн бөгөөд энэ тохиолдолд асуудал хаагдсан байна. Хамгаалалтын өөр аргын хувьд "хяналт/өгөгдлийн байт" файлаар дамжуулан боловсруулсан мессежийн хамгийн их хэмжээг хязгаарлахыг дурьдсан (анхдагчаар энэ нь анхдагч тохиргоогоор үүсгэгдээгүй qmail нь эмзэг хэвээр байна). Нэмж хэлэхэд хязгаарыг зөвхөн qmail-smtpd харгалзан үздэг тул "хяналт/датабайт" нь системийн хэрэглэгчдийн локал халдлагаас хамгаалахгүй.

Асуудал нь багцад нөлөөлдөг netqmail, Debian репозиторуудад багтсан. Энэ багцад зориулж 2005 оноос хойш гарч ирсэн хуучин сул талууд (alloc() функцийн кодонд хатуу санах ойн хязгаарлалт нэмснээр) болон qmail-verify дээрх шинэ асуудлуудыг арилгасан багц засваруудыг бэлтгэсэн. Тус тусад нь бэлтгэсэн qmail-verify засварын шинэчилсэн хувилбар. Хөгжүүлэгчид салбарууд notqmail хуучин асуудлуудыг хаахын тулд өөрсдийн засваруудыг бэлтгэж, мөн кодын бүхэл тоон халилтыг арилгахаар ажиллаж эхэлсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх