SWAPGS - CPU-ийн таамаглалын гүйцэтгэлийн механизмын шинэ эмзэг байдал

Bitdefender-ийн судлаачид тодорхойлсон шинэ эмзэг байдал (CVE-2019-1125) орчин үеийн CPU-ийн зааварчилгааг гүйцэтгэх механизмд SWAPGS гэж нэрлэгддэг бөгөөд энэ нь асуудал үүсгэж буй процессорын зааврын нэртэй тохирч байна. Эмзэг байдал Энэ нь олгодог давуу эрхгүй халдагчид цөмийн санах ойн хэсэг эсвэл ажиллаж байгаа виртуал машинуудын агуулгыг тодорхойлох боломжийг олгоно. Асуудал батлагдсан Intel процессоруудад (x86_64) болон хэсэгчлэн нөлөөлдөг Гол халдлагын вектор харагдахгүй AMD процессорууд. Spectre болон Meltdown-ийн эмзэг байдлаас урьдчилан сэргийлэхийн тулд өмнө нь хэрэгжүүлсэн аргууд нь Intel процессоруудыг ашиглах үед SWAPGS халдлагаас хамгаалдаггүй боловч Linux, ChromeOS, Android болон Windows-д засваруудыг аль хэдийн санал болгосон.

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

Шинэ халдлагын онцлог нь хэрэглэгчийн орон зайгаас үйлдлийн системийн цөмд (GS) удирдлага шилжих үед GS регистрийн утгыг солихын тулд үйлдлийн системд ашигладаг SWAPGS зааврыг таамаглаж гүйцэтгэх явцад үүссэн алдагдлыг ашиглах явдал юм. Хэрэглэгчийн орон зайд ашигласан утгыг цөм дэх үйл ажиллагааны явцад ашигласан утгаар солино). Линуксийн цөмд GS нь цөмийн өгөгдөлд хандахад ашигладаг per_cpu заагчийг хадгалдаг бөгөөд хэрэглэгчийн зай нь TLS (Thread Local Storage) руу заагчийг хадгалдаг.

Цөмд дахин нэвтрэх үед эсвэл GS регистрийг өөрчлөх шаардлагагүй кодыг гүйцэтгэх үед SWAPGS зааврыг хоёр удаа дуудахаас зайлсхийхийн тулд зааврын өмнө шалгалт болон нөхцөлт салбарыг гүйцэтгэдэг. Таамаглалын гүйцэтгэлийн хөдөлгүүр нь шалгалтын үр дүнг хүлээлгүйгээр SWAPGS заавартай кодыг идэвхтэй ажиллуулж, хэрэв сонгосон салбар нь батлагдаагүй бол үр дүнг устгана. Иймд SWAPGS-ийн гүйцэтгэлийг оролцуулаагүй салбарыг таамаглалаар сонгосон тохиолдолд нөхцөл байдал үүсч болзошгүй боловч таамаглалын гүйцэтгэлийн явцад GS регистрийн утгыг SWAPGS зааварчилгаанд өөрчилж, CPU-ийн кэшэд дуусдаг хамааралтай санах ойн үйлдлүүдэд ашиглах болно.

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

Линуксийн цөмд асуудал байна хасагдсан Spectre v1 ангиллын бусад сул талуудыг засахтай адил SWAPGS зааврыг дуудах логикийг өөрчилснөөр (таамгийн гүйцэтгэлийг хаах). Нэмэлт хамгаалалт нь ердийн ажлын ачааллын гүйцэтгэлд хамгийн бага нөлөө үзүүлэх төлөвтэй байна. Хэрэглэгч болон цөмийн орон зай хооронд шилжих үе шатанд хоцролт үүсдэг бөгөөд жишээлбэл, программаас хүнд систем дууддаг эсвэл NMI-г байнга үүсгэж, тасалдсан үед гүйцэтгэл мууддаг.

Засвар нь хост систем болон зочны орчинд хоёуланд нь цөмийн шинэчлэлт суулгаж, дараа нь системийг дахин ачаалах шаардлагатай. Линукс дээрх хамгаалалтыг идэвхгүй болгохын тулд "nospectre_v1" сонголтыг ашиглаж болох бөгөөд энэ нь мөн SWAPGS эмзэг байдлыг хаах арга хэмжээг идэвхгүй болгодог. Засварыг дараах байдлаар ашиглах боломжтой нөхөөс хувилбаруудад аль хэдийн орсон Linux цөмд зориулсан 4.19.65, 5.2.7, 4.14.137, 4.9.188 болон 4.4.188. Линукс түгээлтийн шинэчлэл хараахан гараагүй байна (Debian, RHEL, Федора, Arch Linux, SUSE/openSUSE, Ubuntu). Windows дээр асуудлыг чимээгүйхэн зассан Долдугаар сарын шинэчлэл. Google компани бэлтгэсэн ChromeOS-д нийлүүлсэн цөмийн 4.19-д зориулсан засвар болон Android.

Bitdefender-ийн судлаачдын үзэж байгаагаар Intel-д энэ асуудлын талаар өнгөрсөн оны наймдугаар сард мэдэгдсэн байна. Асуудлыг программчлан засахаар шийдсэн бөгөөд үүний тулд Microsoft, Google болон Linux цөмийн хөгжүүлэгчид засварын зохицуулалтыг боловсруулахад оролцсон. Ivy Bridge-ээс өмнөх Intel-ийн хуучин процессоруудыг ашиглахад ашигладаг WRGSBASE зааврыг дэмждэггүй тул халдлага хийхэд илүү хэцүү байдаг. ARM, POWER, SPARC, MIPS, RISC-V системүүд нь SWAPGS зааврыг дэмждэггүй тул асуудалд өртөхгүй.

Асуудал нь ихэвчлэн Intel процессор эзэмшигчдэд нөлөөлдөг -
AMD системүүд дээр зөвхөн хоёрдахь халдлагын хувилбарыг хуулбарлах боломжтой байсан бөгөөд энэ нь санамсаргүй санах ойн хэсгүүдэд тодорхой утгыг хайхад ашиглаж болох GS бүртгэлийн үндсэн утгыг таамаглах замаар хязгаарлагддаг. Энэ халдлагын сонголтыг хаахын тулд хангалттай Spectre v1-ээс хамгаалах одоо байгаа аргууд.

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

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