Алсын болон дотоод root хандалтыг зөвшөөрдөг OpenSMTPD дахь эмзэг байдал

Qualys компани илчилсэн мэйл сервер дэх өөр нэг алсын чухал эмзэг байдал (CVE-2020-8794). OpenSMTPD, OpenBSD төслөөс боловсруулсан. Нэгдүгээр сарын сүүлээр тодорхойлсонтой адил эмзэг байдал, шинэ асуудал нь үндсэн хэрэглэгчийн эрхтэй сервер дээр дурын бүрхүүлийн командуудыг алсаас гүйцэтгэх боломжтой болсон. Эмзэг байдал хасагдсан асуудалд OpenSMTPD 6.6.4p1.

Асуудал нь алсын захидлын сервер рүү захидал хүргэдэг кодын алдаанаас үүдэлтэй (ирж буй холболтыг зохицуулдаг кодонд биш). Халдлага нь үйлчлүүлэгч болон серверийн аль алинд нь боломжтой. Үйлчлүүлэгч тал дээр OpenSMTPD-ийн анхдагч тохиргоонд халдлага хийх боломжтой бөгөөд OpenSMTPD нь зөвхөн дотоод сүлжээний интерфэйс (localhost) дээрх хүсэлтийг хүлээн авч, гадаад сервер рүү шуудан мессеж илгээдэг. Эмзэг байдлыг ашиглахын тулд захидал хүргэх явцад OpenSMTPD нь халдагчийн удирддаг мэйл сервертэй сесс үүсгэх эсвэл халдагчид үйлчлүүлэгчийн холболтод (MITM эсвэл DNS эсвэл BGP-ээр дамжуулан халдлагын үед дахин чиглүүлэх) залгахад хангалттай. ).

Сервер талын халдлагын хувьд OpenSMTPD нь бусад шуудангийн серверүүдээс гадаад сүлжээний хүсэлтийг хүлээн авах эсвэл дурын имэйл рүү хүсэлт илгээх боломжийг олгодог гуравдагч талын үйлчилгээнд (жишээлбэл, вэбсайт дээрх хаягийг баталгаажуулах маягт) үйлчлэхээр тохируулагдсан байх ёстой. Жишээлбэл, халдагчид OpenSMTPD сервертэй холбогдож буруу захидал (байхгүй хэрэглэгч рүү) илгээж болох бөгөөд энэ нь халдагчийн сервер рүү алдааны код бүхий захидал илгээх хариуд хүргэдэг. Халдагчийн серверт мэдэгдэл хүргэхийн тулд OpenSMTPD холбогдох үед халдагч эмзэг байдлыг ашиглаж болно. Довтолгооны үед оруулсан бүрхүүлийн командууд нь OpenSMTPD-г дахин эхлүүлэх үед үндсэн эрхээр гүйцэтгэгддэг файлд байршдаг тул халдагч OpenSMTPD-г дахин эхлүүлэх эсвэл OpenSMTPD-ийн сүйрлийг эхлүүлэхийг хүлээх ёстой.

Асуудал нь холболт үүсгэсний дараа алсын серверээс буцаасан олон мөрт хариултыг задлан шинжлэх код дахь mta_io() функцэд байгаа (жишээ нь, "250-ENHANCEDSTATUSCODES" ба "250 HELP"). OpenSMTPD тооцоолсноор эхний мөрөнд "-" тэмдэгтээр тусгаарлагдсан гурван оронтой тоо, бичвэр, хоёр дахь мөрөнд гурван оронтой тоо, хоосон зайгаар тусгаарлагдсан бичвэр орсон байна. Гурван оронтой тооны ард хоосон зай, хоёр дахь мөрөнд бичвэр байхгүй бол текстийг тодорхойлох заагчийг '\0' тэмдэгтийн араас байт руу тохируулж, төгсгөлийн дараа өгөгдлийг хуулах оролдлого хийнэ. мөрийг буфер руу оруулна.

OpenBSD төслийн хүсэлтийн дагуу хэрэглэгчдэд системээ шинэчлэх боломжийг олгох үүднээс эмзэг байдлын ашиглалтын талаарх дэлгэрэнгүй мэдээллийг нийтлэхийг 26-р сарын 2015 хүртэл хойшлуулсан. Асуудал нь 2018 оны 6.6-р сараас хойш кодын санд байгаа боловч 5.9 оны 10-р сараас эхлэн root эрх бүхий кодыг ажиллуулахаас өмнө ашиглах боломжтой болсон. Судлаачид мөлжлөгийн ажлын прототипийг бэлтгэсэн бөгөөд энэ нь OpenBSD 11, OpenBSD 31, Debian XNUMX, Debian XNUMX (туршилт) болон Fedora XNUMX-д зориулсан OpenSMTPD бүтээцэд амжилттай туршигдсан.

OpenSMTPD дээр мөн тодорхойлсон Өөр нэг эмзэг байдал (CVE-2020-8793) нь дотоод хэрэглэгчдэд систем дээрх аливаа файлын эхний мөрийг унших боломжийг олгодог. Жишээлбэл, та root хэрэглэгчийн нууц үгийн хэш агуулсан /etc/master.passwd-ийн эхний мөрийг уншиж болно. Хэрэв энэ файл нь /var/spool/smtpd/ лавлахтай ижил файлын системд байрладаг бол энэ эмзэг байдал нь өөр хэрэглэгчийн эзэмшдэг файлын агуулгыг бүхэлд нь унших боломжийг танд олгоно. /proc/sys/fs/protected_hardlinks-ийн утгыг 1 гэж тохируулсан олон Линукс түгээлтүүд дээр энэ асуудлыг ашиглах боломжгүй.

Асуудал нь бүрэн бус устгалын үр дагавар юм асуудлууд, 2015 онд Qualys компанийн хийсэн аудитын үеэр хэлсэн. Халдагчид “PATH=.” хувьсагчийг тохируулснаар “_smtpq” бүлгийн эрхээр өөрийн кодоо гүйцэтгэх боломжтой. мөн makemap нэртэй скриптийг одоогийн директорт байрлуулах (smtpctl хэрэгсэл нь замыг тодорхой зааж өгөхгүйгээр makemap-ийг ажиллуулдаг). "_smtpq" бүлэгт хандсанаар халдагчид уралдааны нөхцөл үүсгэж (офлайн лавлахад том файл үүсгэж, SIGSTOP дохио илгээх) ба боловсруулалт дуусахаас өмнө офлайн лавлах дахь файлыг хатуу файлаар солих боломжтой. агуулгыг нь унших шаардлагатай зорилтот файл руу чиглэсэн тэмдэгт холбоос.

Fedora 31-ийн эмзэг байдал нь smtpctl процесс нь setgid smtpq тугны оронд setgid root тугаар тоноглогдсон тул нэн даруй root бүлгийн давуу эрхийг олж авах боломжийг олгодог нь анхаарал татаж байна. Та root бүлэгт хандах эрх авснаар /var/lib/sss/mc/passwd агуулгыг дарж бичиж, системд бүрэн root хандалт авах боломжтой.

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

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