iLeakage нь WebKit хөдөлгүүр дээр суурилсан хөтчөөр дамжуулан Apple CPU-ийн эмзэг байдлыг ашиглах арга юм.

Жоржиа мужийн Технологийн Хүрээлэн, Мичиганы Их Сургууль, Рурын Их Сургуулийн судлаачид iLeakage халдлагын техникийг боловсруулсан бөгөөд энэ нь Apple A- болон M-series ARM процессоруудын хөтчид тусгайлан боловсруулсан хуудсыг нээх замаар сул талыг ашиглах боломжийг олгодог. Судлаачдын бэлтгэсэн ашиглалтын прототипүүд нь JavaScript кодыг хөтөч дээр ажиллуулахдаа бусад таб дээр нээгдсэн сайтуудын агуулгыг олж мэдэх боломжийг олгодог. Жишээлбэл, тэд Gmail таб дээр нээгдсэн захидлын текстийг тодорхойлох, YouTube үзэх чадварыг харуулсан. түүхийг нээж, LastPass нууц үгийн менежерийн оруулсан нууц үгийг нэвтрэх маягт руу сэргээнэ үү. Instagram. Энэхүү халдлагыг macOS үйлдлийн систем бүхий Safari хөтөч болон iOS платформ дээрх дурын хөтчүүдэд ашиглах боломжтой (Apple-ийн дүрэмд бүх iOS хөтчүүд Safari-д нийтлэг байдаг WebKit системийн хөдөлгүүрийг ашиглахыг шаарддаг).

Хэдийгээр энэ халдлага нь зөвхөн Apple-ийн бүтээгдэхүүнүүдэд хамаатай ч WebKit хөдөлгүүр дэх таймерын нарийвчлалын хязгаарлалтыг тойрч гарах сонирхолтой арга замыг санал болгодог бөгөөд энэ нь бусад хөтөч дээрх ижил төстэй хязгаарлалтыг тойрч гарахад тустай байж болох юм. Apple M1 ба M2 чипүүдэд илэрсэн эмзэг байдал нь сонгодог Spectre v1-ийн эмзэг байдлыг санагдуулдаг бөгөөд таамаглалын горимд үйлдлүүдийг гүйцэтгэх үед санах ойн агуулга алдагдахад хүргэдэг бөгөөд буруу таамагласан тохиолдолд процессор устгадаг боловч тэдгээрийн гүйцэтгэлийн ул мөр процессорын кэшэд хадгалагдана.

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

Аюулгүй байдлын үүднээс WebKit хөдөлгүүр нь зөвхөн JavaScript-г 35 битийн заагчтай ажиллахыг зөвшөөрдөг. Процессын хаягийн орон зайг бүхэлд нь хангаж, 35 битийн хязгаарыг давахын тулд судлаачид JavaScript хөдөлгүүрийг буруу төрөлтэй объектыг боловсруулахад албадахын тулд Type Confusion аргыг ашигласан. Хөдөлгүүрт тусгайлан зохион бүтээсэн JavaScript объектыг боловсруулах үед массив руу нэвтрэх зааврыг таамаглаж гүйцэтгэх нөхцөл бүрддэг.

Объектийн төрөл нь боловсруулж буй массивын төрөлтэй тохирохгүй тул ердийн нөхцөлд эдгээр үйлдлүүдийг хаадаг тул Type Confusion халдлагын кодыг ердийн нөхцөлд идэвхжээгүй нөхцөлт "if" блокт байрлуулна. , гэхдээ процессор цаашид салбарлахыг буруу таамагласан тохиолдолд таамаглалын горимд ажиллана. Үүний үр дүнд процессор нь үүсгэсэн 64 бит заагч руу ханддаг боловч амжилтгүй таамаглалыг тогтоосны дараа төлөвийг буцаана. Энэ тохиолдолд таамаглалын гүйцэтгэлийн ул мөр нь хуваалцсан кэшэд хадгалагдаж, хажуугийн сувгаар кэшийн агуулгыг тодорхойлох аргуудыг ашиглан сэргээж болно.

Таамаг үйлдлүүдийн дараа үлдсэн CPU L1 кэшээс өгөгдлийг гаргаж авахын тулд халдлага нь Google-ийн өмнө нь санал болгож байсан pLRU (псевдо Least Recently Used) аргын өөрчлөлтийг ашигладаг. Энэ тохиолдолд анхны pLRU арга нь өгөгдөлд хандах үеийн саатлыг хэмжихэд суурилдаг бөгөөд тэдгээрийн ялгаа нь процессорын кэшэд тодорхой дараалал байгаа эсэхийг дүгнэх боломжийг олгодог (хэрэв өгөгдөл кэштэй бол үйл ажиллагаа илүү хурдан хийгддэг, хэрэв үгүй ​​бол удаан). Орчин үеийн хөтчүүдэд процессорын кэшийг шалгахаас хамгаалахын тулд таймерын нарийвчлал нь ялгааг илрүүлэх боломжгүй түвшинд хүртэл буурдаг.

iLeakage халдлага дахь таймерын нарийвчлалын хязгаарлалтыг даван туулахын тулд уралдааны нөхцөлийг ашиглан кэш дэх өгөгдөл байгаа эсвэл байхгүй эсэхийг тодорхойлох аргыг санал болгож байна. Аргын мөн чанар нь үндсэн ба лавлагаа гэсэн хоёр утсыг нэгэн зэрэг эхлүүлэх явдал юм. Лавлагааны урсгал нь тодорхой лавлагааны цагт хийгдэх заавруудын дарааллыг агуулдаг. Лавлагааны урсгалыг гүйцэтгэх хамгийн эхэнд үндсэн урсгалтай хуваалцсан хувьсагчийг 1 болгож, зааврыг гүйцэтгэсний дараа хувьсагчийг тэг болгож тохируулна. Тиймээс хуваалцсан хувьсагч нь тодорхой богино хугацаанд зөвхөн 1 гэсэн утгатай байна.

Үндсэн хэлхээ нь pLRU аргыг ашиглан кэш дэх өгөгдлийг тодорхойлох циклийг эхлүүлдэг. Кэш дэх шалгасан өгөгдөл байгаа эсэх, байхгүй байгаагийн шинж тэмдэг нь таймерын хэмжилт биш харин шалгасны дараа хамтарсан хувьсагчийн төлөв байдал юм. Хэрэв хувьсагч нь 1 утгатай бол үйл ажиллагаа нь параллель хэлхээнд хийгдсэн лавлагааны кодоос илүү хурдан хийгдсэн болно, өөрөөр хэлбэл. өгөгдлийг кэшээс өгсөн. Хэрэв хувьсагч нь 0 утгыг агуулж байгаа бол кэшэд өгөгдөл байхгүйн улмаас үйлдлийг гүйцэтгэхэд харьцангуй удаан хугацаа шаардагдаж, зэрэгцээ хэлхээний лавлагааны код бүрэн боловсруулагдах хугацаа шаардагдана.

iLeakage - WebKit хөдөлгүүр дээр суурилсан хөтчөөр дамжуулан Apple CPU-ийн эмзэг байдлыг ашиглах арга.

Санал болгож буй кэшийн агуулгыг тодорхойлох аргын нарийвчлал нь процессор болон төхөөрөмжөөс хамааран 90% -аас 99% хооронд хэлбэлздэг бөгөөд өгөгдөл тодорхойлох гүйцэтгэл нь секундэд 23-34 байт байна. Довтолгоог хийхээс өмнө лавлагааны кодыг тохируулах шаардлагатай бөгөөд үүнд ойролцоогоор таван минут шаардагдана. Одоогийн системд тохируулга хийж дуусмагц 64 тэмдэгттэй мөрийг задлахад ойролцоогоор 30 секунд шаардлагатай.

iLeakage - WebKit хөдөлгүүр дээр суурилсан хөтчөөр дамжуулан Apple CPU-ийн эмзэг байдлыг ашиглах арга.
iLeakage - WebKit хөдөлгүүр дээр суурилсан хөтчөөр дамжуулан Apple CPU-ийн эмзэг байдлыг ашиглах арга.

Нэмж дурдахад, Chrome дээр ашиглалттай хуудсыг нээх үед бусад процессуудад боловсруулсан өгөгдлийг задлахад Zen2 бичил архитектур дээр суурилсан AMD процессоруудын Zenbleed-ийн эмзэг байдлыг ашигладаг прототипийн эксплойтийг нийтэлж байгааг бид тэмдэглэж болно. Zenbleed-ийн (CVE-2023-20593) эмзэг байдлаас гадна Chrome 2023 дээр зассан V3079 хөдөлгүүрийн CVE-8-115-ийн эмзэг байдлыг энэ мөлжлөгт оруулдаг.

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

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