Retbleed бол Intel болон AMD процессоруудын таамаглалын гүйцэтгэлийн механизмд хийсэн шинэ халдлага юм

ETH Zurich-ийн хэсэг судлаачид төв процессор дахь шууд бус шилжилтийн спекулятив гүйцэтгэлийн механизмд шинэ халдлагыг илрүүлсэн нь цөмийн санах ойноос мэдээлэл гаргаж авах эсвэл виртуал машинаас хост систем рүү халдлага зохион байгуулах боломжийг олгодог. Эмзэг талууд нь Retbleed (CVE-2022-29900, CVE-2022-29901) гэсэн кодтой бөгөөд Spectre-v2 халдлагад ойрхон байдаг. Ялгаа нь "jmp" командыг ашиглан шууд бус үсрэлтийн оронд стекээс үсрэх хаягийг татах "ret" (буцах) зааврыг боловсруулахдаа дурын кодыг таамаглаж гүйцэтгэх зохион байгуулалтаас үүдэлтэй бөгөөд хаягийг ачаалах санах ой эсвэл CPU бүртгэл.

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

Таамаглалын үйлдлүүдийн дараа кэшэд үлдсэн өгөгдлийг тодорхойлохын тулд халдагчид кэштэй болон кэшгүй өгөгдөлд хандах хугацааны өөрчлөлтөд дүн шинжилгээ хийх гэх мэт үлдэгдэл өгөгдлийг тодорхойлохын тулд хажуугийн сувгийн аргыг ашиглаж болно. Өөр түвшний (жишээлбэл, цөмийн санах ойноос) мэдээллийг зориудаар гаргаж авахын тулд "гаджетууд" - нөлөөлж болох гадаад нөхцөл байдлаас шалтгаалан санах ойноос өгөгдлийг таамаглан уншихад тохиромжтой цөмд байгаа командуудын дарааллыг ашигладаг. халдагч.

Нөхцөлт болон шууд бус үсрэлт зааврыг ашигладаг Spectre ангиллын сонгодог халдлагаас хамгаалахын тулд ихэнх үйлдлийн системүүд шууд бус үсрэлтүүдийг "ret" заавараар солиход үндэслэсэн "retpoline" техникийг ашигладаг бөгөөд үүнд процессорууд тусдаа стек төлөвийг урьдчилан таамаглах нэгж ашигладаг. .салбарын таамаглалын блок ашиглахгүй байх. Ретполиныг 2018 онд нэвтрүүлж байх үед "ret" зааврыг ашиглан спекулятив салбарлахад Specter шиг хаягийн заль мэхийг ашиглах боломжгүй гэж үздэг байсан.

Retbleed халдлагын аргыг боловсруулсан судлаачид "ret" зааврыг ашиглан таамаглалын шилжилтийг эхлүүлэх бичил архитектурын нөхцөлийг бүрдүүлэх боломжийг харуулж, Линуксийн цөмийн эмзэг байдлыг ашиглахад тохиромжтой зааврын дарааллыг (гаджет) тодорхойлох бэлэн хэрэгслүүдийг нийтэлсэн. ийм нөхцөл байдал илэрдэг.

Судалгааны явцад Intel CPU-тэй системүүд дээр хэрэглэгчийн орон зай дахь давуу эрхгүй процессоос цөмийн санах ойноос секундэд 219 байт хурдтай, 98% нарийвчлалтай дур мэдэн өгөгдлийг гаргаж авах боломжийг олгодог ажлын exploit бэлтгэсэн. AMD процессорууд дээр мөлжлөгийн үр ашиг хамаагүй өндөр байдаг - алдагдал нь секундэд 3.9 КБ байна. Практик жишээ болгон бид /etc/shadow файлын агуулгыг тодорхойлохын тулд санал болгож буй ашиглалтыг хэрхэн ашиглахыг харуулж байна. Intel CPU-тэй системүүд дээр үндсэн хэрэглэгчийн нууц үгийн хэшийг тодорхойлох халдлага 28 минутын дотор, AMD CPU-тэй системүүд дээр 6 минутын дотор хийгдсэн.

Энэхүү халдлагыг 6 оны 8-р улирлаас өмнө гаргасан Intel процессоруудын 3-2019-р үеийнхэн (Skylake-г оруулаад) болон 1 оны 1-р улирлаас өмнө гарсан Zen 2, Zen 2021+, Zen 3 бичил архитектурт суурилсан AMD процессорууд батлагдлаа. AMD ZenXNUMX, Intel Alder Lake зэрэг шинэ процессорын загварууд, түүнчлэн ARM процессоруудад одоо байгаа хамгаалалтын механизмуудаар асуудал хаагдсан байна. Жишээлбэл, IBRS (Indirect Branch Restricted Speculation) зааврыг ашиглах нь халдлагаас хамгаалахад тусалдаг.

Линуксийн цөм болон Xen гипервизорт зориулсан багц өөрчлөлтүүдийг бэлтгэсэн бөгөөд энэ нь хуучин CPU-ийн програм хангамжийн асуудлыг хаах болно. Linux цөмд зориулсан санал болгож буй засвар нь 68 файлыг өөрчилж, 1783 мөр нэмж, 387 мөрийг устгадаг. Харамсалтай нь хамгаалалт нь ихээхэн хэмжээний нэмэлт зардалд хүргэдэг - AMD болон Intel процессорууд дээр хийгдсэн текстүүдэд гүйцэтгэлийн бууралтыг 14% -иас 39% хүртэл тооцдог. Intel-ийн шинэ үеийн процессоруудад ашиглах боломжтой, Linux цөм 4.19-ээс эхлэн дэмжигдсэн IBRS заавар дээр суурилсан хамгаалалтыг ашиглах нь илүү дээр юм.

Intel процессорууд дээр Return Stack Buffer-ийн доод хязгаар (дутуу урсгал)-аар халих үед гарч ирдэг функцийн ачаар таамаглалын шууд бус үсрэлтийн хаягийг орлуулах боломжтой. Ийм нөхцөл байдал үүссэн үед "ret" заавар нь ердийн шууд бус үсрэлттэй адил хаяг сонгох логикийг ашиглаж эхэлдэг. Линуксийн цөмд ийм буцах урсгалыг эхлүүлэх нөхцлийг бүрдүүлдэг мянга гаруй газар олдсон бөгөөд системийн дуудлагаар дамжуулан хандах боломжтой.

AMD процессорууд дээр "ret" зааврыг стекийн тусгай буфер (Буцах хаягийн стек) ашиглахгүйгээр гүйцэтгэдэг бөгөөд салбар таамаглах хэсэг нь "ret" зааврыг хяналтын өгөөж биш, харин шууд бус салбар гэж үздэг. , мөн үүний дагуу шууд бус шилжилтийг урьдчилан таамаглахад өгөгдлийг ашигладаг. Эдгээр нөхцөлд системийн дуудлагаар дамжуулан хүрч болох бараг бүх "ret" үйлдлийг ашиглаж болно.

Нэмж дурдахад, AMD CPU-д (CVE-2022-23825, Салбарын төрлийн төөрөгдөл) зохиомол салбаруудыг хэрэгжүүлэхтэй холбоотой өөр нэг асуудал илэрсэн - салбарыг урьдчилан таамаглах нөхцөл нь шаардлагатай салбар зааваргүйгээр ч тохиолдож болох бөгөөд энэ нь салбарыг урьдчилан таамаглах буферт нөлөөлөх боломжийг олгодог. "ret" зааваргүйгээр. Энэ функц нь хамгаалалтын хэрэгжилтийг ихээхэн хүндрүүлж, салбарыг урьдчилан таамаглах буферийг илүү идэвхтэй цэвэрлэхийг шаарддаг. Цөмд бүрэн хамгаалалт нэмснээр нэмэлт зардлыг 209% нэмэгдүүлэх төлөвтэй байна.

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

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