Линуксийн цөм хог цуглуулагч дахь уралдааны нөхцөл нь давуу эрхийг нэмэгдүүлэхэд хүргэж болзошгүй

Нэгэн цагт Spectre болон Meltdown-ийн эмзэг байдлыг тодорхойлсон Google Project Zero багийн гишүүн Жанн Хорн Линуксийн цөмийн хог цуглуулагч дахь эмзэг байдлыг (CVE-2021-4083) ашиглах аргыг нийтэлжээ. Энэ эмзэг байдал нь unix залгуурууд дээрх файлын тодорхойлогчдыг цэвэрлэх явцад үүссэн уралдааны нөхцөл байдлаас үүдэлтэй бөгөөд орон нутгийн эрх мэдэлгүй хэрэглэгчдэд цөмийн түвшинд өөрийн кодыг ажиллуулах боломжийг олгодог.

Асуудал нь сонирхолтой юм, учир нь уралдааны нөхцөл үүсэх цаг хугацааны цонхыг бодит мөлжлөгийг бий болгоход хэтэрхий бага гэж тооцоолсон боловч хэрэв мөлжлөгийг бүтээгч нь эргэлзэж байсан ийм эмзэг байдал ч жинхэнэ халдлагын эх үүсвэр болж чадна гэдгийг судалгааны зохиогч харуулсан. шаардлагатай ур чадвар, цаг хугацаа. Янн Хорн филиграфын тусламжтайгаар та close() болон fget() функцуудыг нэгэн зэрэг дуудах үед үүсэх уралдааны нөхцөл байдлыг бүрэн ашиглах боломжтой сул тал болгон бууруулж, аль хэдийн чөлөөлөгдсөн өгөгдөлд хандах боломжтой болохыг харуулсан. цөмийн доторх бүтэц.

Close() болон fget()-г нэгэн зэрэг дуудаж байхад файлын тодорхойлогчийг хаах явцад уралдааны нөхцөл үүсдэг. fget()-г гүйцэтгэхээс өмнө хаах() дуудлага гарч болох бөгөөд энэ нь хог цуглуулагчийг төөрөгдүүлэх болно, учир нь дахин тооллогын дагуу файлын бүтцэд гадаад лавлагаа байхгүй, харин файлын тодорхойлогчтой хавсаргасан хэвээр байх болно, i.e. Хог цуглуулагч үүнийг бүтцэд онцгой эрхтэй гэж бодох боловч үнэн хэрэгтээ богино хугацаанд файлын тодорхойлогч хүснэгтэд үлдсэн оруулга нь чөлөөлөгдсөн бүтцийг зааж өгөх болно.

Уралдааны нөхцөл байдалд орох магадлалыг нэмэгдүүлэхийн тулд хэд хэдэн заль мэхийг ашигласан бөгөөд энэ нь системийн тусгай оновчлолыг нэвтрүүлэх үед ашиглалтын амжилтын магадлалыг 30% хүртэл нэмэгдүүлэх боломжтой болсон. Жишээлбэл, файлын тодорхойлогч бүхий бүтцэд хандах хугацааг хэдэн зуун наносекундээр нэмэгдүүлэхийн тулд кэшийг өөр CPU-ийн цөм дээр үйл ажиллагаа явуулах замаар процессорын кэшээс өгөгдлийг зайлуулсан бөгөөд энэ нь бүтцийг санах ойноос бус харин санах ойноос сэргээх боломжтой болгосон. хурдан CPU кэш.

Хоёр дахь чухал онцлог нь уралдааны нөхцөлийг нэмэгдүүлэхийн тулд техник хангамжийн таймераас үүсгэсэн тасалдлыг ашиглах явдал байв. Уралдааны нөхцөл байдал үүссэн үед тасалдлын зохицуулагч гал гаргаж, кодын гүйцэтгэлийг хэсэг хугацаанд тасалдуулахаар мөчийг сонгосон. Удирдлагыг буцааж өгөхийг хойшлуулахын тулд хүлээлгийн дараалалд 50 мянга орчим оруулгыг epoll ашиглан үүсгэсэн бөгөөд энэ нь тасалдал зохицуулагчаар хайх шаардлагатай болсон.

Эмзэг байдлыг ашиглах техникийг задруулахгүй 90 хоногийн дараа ил болгосон. Асуудал 2.6.32 цөмөөс хойш гарч ирсэн бөгөөд 5.16-р сарын эхээр зассан. Засварыг цөм 2021-д оруулсан бөгөөд түгээлтийн хэсэгт нийлүүлсэн цөмийн багц болон цөмийн LTS салбарууд руу шилжүүлсэн. MSG_PEEK тугийг боловсруулах үед хог цуглуулагч дээр илэрдэг CVE-0920-XNUMX ижил төстэй асуудалд дүн шинжилгээ хийх явцад эмзэг байдлыг илрүүлсэн нь анхаарал татаж байна.

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

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