AMD процессорлорунда Meltdown чабуулдарына жол берген дагы бир алсыздык аныкталган

Грац техникалык университетинин (Австрия) жана Гельмгольц маалымат коопсуздугу борборунун (CISPA) изилдөөчүлөр тобу бардык AMD процессорлорунун Meltdown классын ишке ашырууга мүмкүндүк берген алсыздыгы (CVE-2021-26318) тууралуу маалыматты ачыкка чыгарышты. каптал канал чабуулдары (башында AMD процессорлоруна Meltdown алсыздыгы таасир этпейт деп болжолдонгон). Практикалык жактан алганда, чабуул жашыруун байланыш каналдарын түзүү, ядродогу активдүүлүккө мониторинг жүргүзүү же ядродогу кемчиликтерди пайдаланып, KASLR коргоосун айланып өтүү үчүн ядронун эс тутумундагы даректер жөнүндө маалымат алуу үчүн колдонулушу мүмкүн.

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

Кол салуунун бул жаңы түрүнөн коргоо үчүн, AMD LFENCE нускамаларын колдонуу сыяктуу Meltdown чабуулдарына бөгөт коюуга жардам берген коопсуз коддоо ыкмаларын колдонууну сунуштады. Көйгөйдү аныктаган изилдөөчүлөр мурда Intel процессорлору үчүн гана колдонулган эстутум баракчасынын таблицасын катуураак изоляциялоону (KPTI) иштетүүнү сунушташат.

Эксперименттин жүрүшүндө изилдөөчүлөр ядродогу “if (offset < data_len) tmp = операциясын аткарган гаджеттин бар экендигин эске алуу менен, ядродон маалыматты колдонуучу мейкиндигинде секундасына 52 байт ылдамдыкта агып жиберүүгө жетишти. LUT[маалымат[офсет] * 4096];” . Спекуляциялык аткаруу учурунда кэшке түшкөн каптал каналдар аркылуу маалыматты алуу үчүн бир нече ыкмалар сунушталган. Биринчи ыкма процессордун “PREFETCH” (Prefetch+Time) инструкциясын аткаруу убакытындагы четтөөлөрдү талдоого, экинчиси “PREFETCH” (Prefetch+Power) аткарууда энергияны керектөөнүн өзгөрүшүн өзгөртүүгө негизделген.

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

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

Source: opennet.ru

Комментарий кошуу