Spectre эмзэг байдлын хувьд цөмийг нөхөөсгүй орхисон тууралттай нөхөөс. Linux

Grsecurity төслийн хөгжүүлэгчид хуваалцсан Хөрвүүлэгчийн анхааруулгыг бодлогогүй арилгах нь кодын эмзэг байдалд хэрхэн хүргэж болохыг харуулсан сургамжтай түүх. Тавдугаар сарын сүүлээр цөм Linux ptrace системийн дуудлагаар дамжуулан Spectre эмзэг байдлын шинэ ашиглалтын векторын засварыг санал болгосон.

Нөхөөсийг турших явцад хөгжүүлэгчид хөрвүүлэгч нь эмхэтгэлийн явцад код болон тодорхойлолтуудыг холих талаар анхааруулга өгч байгааг анзаарсан (бүтэц нь одоо байгаа хувьсагчдад утга оноож кодын дараа тодорхойлогдсон):

int индекс = n;
хэрэв (n < HBP_NUM) { индекс = массив_индекс_носпек(индекс, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[индекс];

Линус зөвшөөрөв залруулга мастер салбар руугаа, салсан Хувьсагчийн тодорхойлолтыг if блок руу шилжүүлснээр анхааруулга:

if (n < HBP_NUM) { int index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[индекс];

Долдугаар сард уг засварыг цөмийн тогтвортой салбарууд 4.4, 4.9, 4.14, 4.19, 5.2 руу шилжүүлсэн. Тогтвортой салбаруудын арчлагчид мөн анхааруулгатай тулгарсан бөгөөд энэ нь Линусын мастер салбарт аль хэдийн засагдсан эсэхийг шалгахын оронд өөрсдөө засварын ажилд хувь нэмэр оруулсан. Асуудал нь тэд энэ талаар хоёр удаа бодож байгаагүй юм. шилжсэн бүтцийн тодорхойлолтыг дээшлүүлснээр эмзэг байдлаас шууд хамгаалах array_index_nospec дуудлагыг бүтцийн тодорхойлолтод ашиглахаа больсон бөгөөд "index" хувьсагчийн оронд "n" хувьсагчийг үргэлж ашигласан болно:

int индекс = n;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[индекс];
индекс = массив_индекс_носпек(индекс, HBP_NUM);

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

DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster