ld.so OpenBSD дахь эмзэг байдал

Динамик ачаалагч ld.soOpenBSD-д багтсан , тодорхой нөхцөлд, SUID/SGID- Програмууд нь LD_LIBRARY_PATH орчны хувьсагчийг орхиж, улмаар өндөр эрхтэйгээр ажиллаж байгаа процессын хүрээнд гуравдагч талын кодыг ачаалах боломжийг олгодог. Эмзэг байдлыг засах засваруудыг хувилбаруудад ашиглах боломжтой 6.5 и 6.6. Хоёртын засварууд (syspatch) amd64, i386 болон arm64 платформуудын хувьд аль хэдийн үйлдвэрлэгдсэн байгаа бөгөөд энэ мэдээ нийтлэх үед татаж авах боломжтой байх ёстой.

Асуудлын мөн чанар: үйл ажиллагааны явцад ld.so эхлээд орчноос LD_LIBRARY_PATH хувьсагчийн утгыг гаргаж аваад _dl_split_path() функцийг ашиглан түүнийг лавлах замуудын массив болгон хувиргадаг. Хэрэв дараа нь одоогийн процессыг SUID/SGID програмаар эхлүүлсэн бол үүсгэсэн массив болон үнэндээ LD_LIBRARY_PATH хувьсагч арилна. Үүний зэрэгцээ, хэрэв _dl_split_path() санах ой дуусвал (энэ нь орчны хувьсагчдын хэмжээн дээр 256 кБ-ын тодорхой хязгаар байгаа тул энэ нь хэцүү, гэхдээ онолын хувьд боломжтой) _dl_libpath хувьсагч NULL утгыг хүлээн авах бөгөөд дараа нь шалгах болно. энэ хувьсагчийн утга нь _dl_unsetenv("LD_LIBRARY_PATH") руу дуудлагыг алгасах болно.

Мэргэжилтнүүдийн илрүүлсэн эмзэг байдал Qualy-ийн, түүнчлэн хэд хэдэн өмнө нь ил болсон асуудлууд. Эмзэг байдлыг тодорхойлсон аюулгүй байдлын судлаачид асуудал хэр хурдан шийдэгдсэнийг тэмдэглэв: OpenBSD төсөл мэдэгдэл хүлээн авснаас хойш гурван цагийн дотор нөхөөс бэлтгэж, шинэчлэлтүүдийг гаргасан.

Нэмэлт: Асуудалд дугаар өгсөн CVE-2019-19726. oss-security захидлын жагсаалтад хийсэн албан ёсны мэдэгдэл, үүнд OpenBSD 6.6, 6.5, 6.2 болон 6.1 архитектурууд дээр ажиллаж байгаа прототип эксплойт багтсан болно.
amd64 болон i386 (мөлжилтийг бусад архитектурт тохируулж болно).
Асуудал нь анхдагч суулгацад ашиглагдах боломжтой бөгөөд chpass эсвэл passwd suid хэрэгслүүдийг ажиллуулахдаа эрхгүй орон нутгийн хэрэглэгчдэд номын сангийн орлуулалтаар кодыг root болгон ажиллуулах боломжийг олгодог. Ашиглахад шаардлагатай санах ой багатай нөхцлийг бүрдүүлэхийн тулд setrlimit-ээр дамжуулан RLIMIT_DATA хязгаарыг тохируулна уу.

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

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