Exim програмын үндсэн эрх бүхий сервер дээр код ажиллуулах боломжийг олгодог ноцтой эмзэг байдал.

Exim мэйл сервер дээр тодорхойлсон шүүмжлэлтэй эмзэг байдал (CVE-2019-10149), тусгайлан боловсруулсан хүсэлтийг боловсруулах үед root эрх бүхий сервер дээр алсын кодыг гүйцэтгэхэд хүргэж болно. Асуудлыг ашиглах боломжийг 4.87-аас 4.91 хүртэлх хувилбарууд эсвэл EXPERIMENTAL_EVENT сонголтоор барих үед тэмдэглэсэн.

Анхдагч тохиргоонд гадны хаягийн нэмэлт шалгалтыг хийдэг "шалгах = хүлээн авагч" ACL ашигладаг тул халдлагыг орон нутгийн хэрэглэгч шаардлагагүй хүндрэлгүйгээр хийж болно. Өөр домэйны хоёрдогч MX үүрэг гүйцэтгэх, "шалгах=хүлээн авагч" ACL-г устгах, эсвэл local_part_suffix-д тодорхой өөрчлөлт оруулах гэх мэт тохиргоог өөрчлөх үед алсын халдлага тохиолдож болно. Халдагчид сервертэй холбогдох холболтыг 7 хоногийн турш нээлттэй байлгах боломжтой бол алсаас халдлага үйлдэх боломжтой (жишээ нь, завсарлага авахын тулд минут тутамд нэг байт илгээх). Үүний зэрэгцээ асуудлыг алсаас ашиглах илүү хялбар халдлагын векторууд байж магадгүй юм.

Эмзэг байдал нь /src/deliver.c файлд тодорхойлсон teslim_message() функцэд хүлээн авагчийн хаягийг буруу шалгаснаас үүдэлтэй. Хаягийн форматыг өөрчилснөөр халдагчид өгөгдлөө root эрхтэй execv() функцээр дуудагдсан командын аргументуудад орлуулах боломжтой. Үйл ажиллагаа нь буфер хэт ихсэх эсвэл санах ойн эвдрэлд ашигладаг нарийн төвөгтэй техникийг ашиглах шаардлагагүй бөгөөд энгийн тэмдэгтийг орлуулахад хангалттай.

Асуудал нь хаягийг хөрвүүлэхэд зориулж бүтцийг ашиглахтай холбоотой:

хүргэх_орон нутгийн хэсэг = өргөтгөх_мөр(
string_sprintf("${орон нутгийн_хэсэг:%s}", шинэ->хаяг));
хүргэх_домэйн = тэлэх_мөр(
string_sprintf("${домайн:%s}", шинэ->хаяг));

Expand_string() функц нь "${run{command arguments}" командыг таних зэрэг хэт төвөгтэй хослуулагч бөгөөд энэ нь гадаад зохицуулагчийг ажиллуулахад хүргэдэг. Тиймээс, SMTP сесс дотор халдлага хийхийн тулд локал хэрэглэгч зөвхөн 'RCPT TO “username+${run{...}}@localhost” гэх мэт командыг илгээх шаардлагатай бөгөөд localhost нь local_domains жагсаалтын хостуудын нэг юм. хэрэглэгчийн нэр нь одоо байгаа локал хэрэглэгчийн нэр юм.

Хэрэв сервер шуудангийн дамжуулагчаар ажилладаг бол 'RCPT TO "${run{...}}@relaydomain.com"' командыг алсаас илгээхэд хангалттай бөгөөд relaydomain.com нь relay_to_domains-д жагсаасан хостуудын нэг юм. тохиргооны хэсэг. Exim нь тусгай зөвшөөрлийн горимыг орхигдуулдаггүй (deliver_drop_privilege = худал) тул "${run{...}}"-ээр дамжуулсан командуудыг root хэлбэрээр гүйцэтгэнэ.

Энэ нь эмзэг байдал байсан нь анхаарал татаж байна хасагдсан 4.92-р сард гаргасан XNUMX хувилбарт засвар нь аюулгүй байдлын асуудалд хүргэж болзошгүйг онцолоогүй. Exim хөгжүүлэгчид энэ эмзэг байдлыг зориудаар нуун дарагдуулсан гэж үзэх үндэслэл байхгүй, учир нь энэ үед асуудал шийдэгдсэн. залруулга буруу хаяг дамжуулагдсан үед тохиолддог алдаа бөгөөд эмзэг байдлыг Qualys Exim-д хийсэн өөрчлөлтийн аудитын үеэр илрүүлсэн.

Түгээлтэд үргэлжлүүлэн ашиглагдаж байсан өмнөх хувилбаруудын засварыг одоогоор зөвхөн байдлаар ашиглах боломжтой нөхөөс. Асуудлыг засахын тулд өмнөх салбаруудад зориулсан залруулах хувилбаруудыг зургадугаар сарын 11-нд хийхээр төлөвлөж байна. Багцын шинэчлэлтүүд бэлэн боллоо Debian, Ubuntu, openSUSE. Arch Linux и Федора Тэд 4.92 хувилбарыг нийлүүлдэг бөгөөд үүнд асуудал харагдахгүй байна. RHEL болон CentOS-ийн асуудал мэдрэмтгий биш, Exim нь тэдний ердийн багцын санд ороогүй тул.

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

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