Chrome'догу Spectre чабал жерлерин колдонуунун жаңы ыкмасы

Америкалык, Австралиялык жана Израилдик университеттердин изилдөөчүлөрүнүн тобу Chromium кыймылдаткычынын негизиндеги браузерлерде Spectre классындагы алсыздыктардан пайдалануу үчүн каптал каналдан чабуул жасоонун жаңы ыкмасын сунушташты. Spook.js коддуу чабуул JavaScript кодун иштетүү аркылуу сайтты изоляциялоо механизмин айланып өтүүгө жана учурдагы процесстин бүт дарек мейкиндигинин мазмунун окууга мүмкүндүк берет, б.а. башка өтмөктөрдөгү, бирок ошол эле процессте иштетилген барактардан берилиштерге жетүү.

Chrome ар кандай процесстерде ар кандай сайттарды иштеткендиктен, практикалык чабуулдарды жасоо мүмкүнчүлүгү ар кандай колдонуучуларга өз баракчаларын жайгаштырууга мүмкүндүк берген кызматтар менен чектелет. Бул ыкма чабуулчу өзүнүн JavaScript кодун кыстаруу мүмкүнчүлүгүнө ээ болгон барактан, ошол эле сайттан колдонуучу ачкан башка барактардын бар экендигин аныктоого жана алардан купуя маалыматты, мисалы, ишеним грамоталарын же алмаштырылган банк реквизиттерин алууга мүмкүндүк берет. желе формаларындагы талааларды автоматтык түрдө толтуруу системасы менен. Демонстрация катары Tumblr кызматында башка бирөөнүн блогуна кантип кол салса болору көрсөтүлөт, эгерде анын ээси ошол эле кызматта жайгашкан чабуулчулардын блогун башка өтмөктө ачса.

Методду колдонуунун дагы бир варианты - бул чабуулчу тарабынан башкарылган кошумчаны орнотууда башка кошумчалардан маалыматтарды чыгарууга мүмкүндүк берген браузердин кошумчаларына чабуул. Мисал катары, биз зыяндуу кошумчаны орнотуу менен LastPass сырсөз башкаргычынан купуя маалыматты кантип чыгара аларыңызды көрсөтөбүз.

Окумуштуулар CPUIntel i89-7K жана i6700-7U менен системаларда Chrome 7600да иштеген эксплуатациянын прототибин жарыялашты. Эксплойт түзүүдө, мурун Google тарабынан жарыяланган JavaScript кодунун прототиптери Spectre классындагы чабуулдарды ишке ашыруу үчүн колдонулган. Белгиленгендей, изилдөөчүлөр Intel жана Apple M1 процессорлорунун негизинде системалар үчүн жумушчу эксплойттарды даярдай алышты, бул эстутумду окууну секундасына 500 байт ылдамдыкта жана 96% тактыкта ​​уюштурууга мүмкүндүк берет. Бул ыкма AMD процессорлоруна да тиешелүү деп болжолдонууда, бирок ал толук функционалдык эксплуатацияны даярдоо мүмкүн болгон жок.

Кол салуу Chromium кыймылдаткычына негизделген бардык браузерлерге, анын ичинде Google Chrome, Microsoft Edge жана Brave үчүн колдонулушу мүмкүн. Окумуштуулар ошондой эле ыкманы Firefox менен иштөөгө ыңгайлаштырса болот деп эсептешет, бирок Firefox кыймылдаткычы Chrome'дон абдан айырмаланып тургандыктан, мындай эксплоатты түзүү иштери келечекке калды.

Инструкцияларды алып-сатарлык аткарууга байланыштуу браузерге негизделген чабуулдардан коргоо үчүн, Chrome дарек мейкиндигин сегментациялоону ишке ашырат - кумдук обочолонуу JavaScript'ке 32 биттик көрсөткүчтөр менен гана иштөөгө мүмкүндүк берет жана 4 ГБ үймөктөрдөгү иштетүүчүлөрдүн эс тутумун бөлүшөт. Процесстин бүтүндөй дарек мейкиндигине жетүү жана 32 биттик чектөөнү айланып өтүү үчүн изилдөөчүлөр JavaScript кыймылдаткычын туура эмес типтеги объектти иштетүүгө мажбурлаган Type Confusion деп аталган ыкманы колдонушкан, бул 64 биттик мейкиндикти түзүүгө мүмкүндүк берет. эки 32 биттик маанилердин айкалышынын негизинде көрсөткүч.

Чабуулдун маңызы JavaScript кыймылдаткычында атайын иштелип чыккан зыяндуу объектти иштетүүдө массивге кире турган инструкциялардын спекуляциялык аткарылышына алып келүүчү шарттар түзүлөт. Объект чабуулчу тарабынан башкарылган талаалар 64 биттик көрсөткүч колдонулган аймакка жайгаштырылгандай кылып тандалган. Зыяндуу объекттин түрү иштетилип жаткан массивдин түрүнө дал келбегендиктен, кадимки шарттарда мындай аракеттер Chrome'до массивдерге кирүү үчүн колдонулган кодду оптимизациялоо механизми аркылуу бөгөттөлөт. Бул көйгөйдү чечүү үчүн Type Confusion чабуулунун коду шарттуу “if” блогуна жайгаштырылат, ал кадимки шарттарда иштетилбейт, бирок, эгерде процессор андан ары бутактанууну туура эмес болжолдосо, спекуляциялык режимде аткарылат.

Натыйжада, процессор генерацияланган 64-бит көрсөткүчкө жетет жана аткарылбай калган божомолду аныктагандан кийин абалды артка кайтарат, бирок аткаруунун издери жалпы кэште кала берет жана аларда өзгөрүүлөрдү талдоочу каптал-канал кэш аныктоо ыкмаларын колдонуу менен калыбына келтирилиши мүмкүн. кэштелген жана кэштелбеген маалыматтарга кирүү убакыттары. JavaScript'те жеткиликтүү болгон таймердин тактыгы жетишсиз болгон шартта кэштин мазмунун талдоо үчүн Google тарабынан сунушталган ыкма колдонулат, ал процессорлордо колдонулган Tree-PLRU кэш чыгаруу стратегиясын алдап, циклдердин санын көбөйтүү менен, кэште маани бар жана жок болгон убакыттын айырмасын олуттуу көбөйтүү. .

Source: opennet.ru

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