Zen+ болон Zen 2 бичил архитектурт суурилсан AMD процессоруудад Meltdown ангиллын эмзэг байдал илэрсэн.

Дрездений Техникийн Их Сургуулийн хэсэг судлаачид Zen+ болон Zen 2020 бичил архитектурт суурилсан AMD процессоруудад Meltdown ангиллын халдлага хийх боломжийг олгодог эмзэг байдлыг (CVE-12965-2) илрүүлжээ. AMD Zen+ болон Zen 2 процессорууд нь Meltdown-ийн эмзэг байдалд өртөмтгий биш гэж анх таамаглаж байсан ч судлаачид каноник бус виртуал хаягуудыг ашиглах үед хамгаалагдсан санах ойн хэсэгт таамаглалаар хандах боломжийг олж илрүүлжээ.

AMD64 архитектур нь виртуал хаягийн зөвхөн эхний 48 битийг ашигладаг бөгөөд үлдсэн 16 битийг үл тоомсорлодог. 48-аас 63-р битүүд нь 47-р битийн утгыг үргэлж хуулбарлах ёстой (тэмдэг битийн өргөтгөл). Хэрэв энэ нөхцөл зөрчигдөж, дээд битийн дурын утгатай хаяг руу нэвтрэх оролдлого хийвэл процессор нь үл хамаарах зүйл үүсгэдэг. Дээд битүүдийг дахин дахин дүүргэх нь боломжтой хаягийн орон зайг хоёр блок болгон хуваахад хүргэдэг - доод блок (0-ээс 00007FFFFFFFFFFFFF), дээд битүүд нь 800000000000, дээд хэсэг нь (FFFF1-аас FFFFFFFFFFFFFFFF хүртэл). бүх дээд битүүдийг XNUMX гэж тохируулсан.

Заасан блокуудад багтах хаягуудыг каноник гэж нэрлэдэг ба дээд битийн дурын агуулгатай буруу хаягуудыг каноник бус гэж нэрлэдэг. Каноник хаягуудын доод мужийг ихэвчлэн процессын өгөгдөлд хуваарилдаг бөгөөд дээд мужийг цөмийн өгөгдөлд ашигладаг (хэрэглэгчийн орон зайгаас эдгээр хаяг руу нэвтрэх эрхийг эрх тусгаарлах түвшинд хаасан).

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

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

AMD Zen+ болон Zen 2 процессоруудад нөлөөлж буй шинэ эмзэг байдлын нэг онцлог нь CPU нь дээд 16 битийг үл тоомсорлож, хүчингүй каноник бус хаяг ашиглан санах ойд хандах таамаглал бүхий унших, бичих үйлдлийг зөвшөөрдөг явдал юм. Тиймээс таамаглалын кодыг гүйцэтгэх явцад процессор үргэлж зөвхөн доод 48 битийг ашигладаг бөгөөд хаягийн хүчинтэй байдлыг тусад нь шалгадаг. Хэрэв каноник бус виртуал хаягийг ассоциатив орчуулгын буфер (TLB) дахь физик хаяг руу хөрвүүлэх үед хаягийн каноник хэсэгт тохирох байдал илэрвэл таамаглалын ачааллын үйлдэл нь агуулгыг харгалзахгүйгээр утгыг буцаана. Дээд талын 16 бит, энэ нь хэлхээ хоорондын санах ойг хуваалцахыг алгасах боломжийг олгодог. Дараа нь үйлдлийг хүчингүйд тооцож, устгах болно, гэхдээ санах ойн хандалт дуусч, өгөгдөл нь кэшэд дуусна.

Туршилтын явцад судлаачид FLUSH+RELOAD кэшийн агуулгыг тодорхойлох техникийг ашиглан секундэд 125 байт хурдтай далд өгөгдөл дамжуулах сувгийг зохион байгуулж чаджээ. Асуудал нь AMD чипээс гадна сонгодог Meltdown эмзэг байдалд өртөмтгий бүх Intel процессоруудад бас хамаатай. LFENCE зааврыг ашиглах гэх мэт Meltdown халдлагыг хаахад тусалдаг ижил аргуудыг энэ шинэ төрлийн халдлагаас хамгаалахад ашиглаж болно. Жишээлбэл, хэрэв Intel процессор нь Meltdown-ийн эсрэг техник хангамжийн хамгаалалттай эсвэл систем нь програм хангамжийн хамгаалалтыг идэвхжүүлсэн бол ийм тохиргоо нь халдлагын шинэ хувилбарт өртөмтгий биш юм.

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

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

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

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