Системийн дуудлагад зориулж Линуксийн цөмийн стек хаягуудыг санамсаргүй байдлаар хуваах засваруудыг нэвтрүүлсэн

kernel.org сайтын системийн ахлах администратор асан, Ubuntu аюулгүй байдлын багийн ахлагч, одоо Google-д Android болон ChromeOS-ийн аюулгүй байдлыг хангах чиглэлээр ажиллаж байгаа Кис Күүк системийн дуудлагыг боловсруулах үед цөмийн стек дэх офсетийг санамсаргүй байдлаар хуваах багц засваруудыг нийтэлжээ. Засварууд нь стекийн байршлыг өөрчилснөөр цөмийн аюулгүй байдлыг сайжруулж, стек рүү халдлага хийх нь илүү хэцүү, амжилтгүй болгодог. Анхны хэрэгжилт нь ARM64 болон x86/x86_64 процессоруудыг дэмждэг.

Засвар хийх анхны санаа нь PaX RANDKSTACK төсөл юм. 2019 онд Intel-ийн инженер Елена Решетова энэ санааг Линуксийн үндсэн цөмд оруулахад тохиромжтой хэрэгжүүлэхийг хичээсэн. Дараа нь Кис Күүк уг санаачлагыг гартаа авч, цөмийн үндсэн хувилбарт тохирсон хэрэгжилтийг танилцуулав. Засваруудыг 5.13 хувилбарын нэг хэсэг болгон оруулахаар төлөвлөж байна. Уг горим нь анхдагчаар идэвхгүй болно. Үүнийг идэвхжүүлэхийн тулд цөмийн командын мөрийн параметр "randomize_kstack_offset=on/off" болон CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT тохиргоог санал болгож байна. Уг горимыг идэвхжүүлэхэд шаардагдах зардлыг ойролцоогоор 1% гүйцэтгэлийн алдагдал гэж тооцдог.

Санал болгож буй хамгаалалтын мөн чанар нь системийн дуудлага бүрт санамсаргүй стекийн офсетийг сонгох явдал бөгөөд энэ нь хаягийн өгөгдлийг хүлээн авсны дараа ч санах ой дахь стекийн байршлыг тодорхойлоход хэцүү болгодог, учир нь дараагийн системийн дуудлага нь стекийн үндсэн хаягийг өөрчлөх болно. PaX RANDKSTACK хэрэгжүүлэлтээс ялгаатай нь цөмд оруулахаар санал болгож буй засваруудад санамсаргүй хуваарилалтыг эхний шатанд биш (cpu_current_top_of_stack) биш харин pt_regs бүтцийг тохируулсны дараа хийгддэг бөгөөд энэ нь санамсаргүй офсетийг тодорхойлохын тулд ptrace-д суурилсан аргуудыг ашиглах боломжгүй болгодог. удаан үргэлжилсэн системийн дуудлагын үеэр.

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

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