Ipinapakita ng Google ang pagsasamantala sa mga kahinaan ng Spectre gamit ang JavaScript sa isang browser

Kamakailan ay naglabas ang Google ng ilang prototype exploit na nagpapakita ng posibilidad ng pagsasamantala sa mga kahinaan ng Spectre class sa pamamagitan ng pagpapatupad ng JavaScript code sa isang browser, nang hindi dumadaan sa mga dati nang idinagdag na hakbang sa seguridad.

Maaaring gamitin ang mga exploit upang makakuha ng access sa memorya ng isang prosesong nagpoproseso ng nilalaman ng web sa kasalukuyang tab. Upang subukan ang functionality ng exploit, inilunsad ang website ng leaked page, at ang code na naglalarawan sa lohika ng operasyon ay inilathala sa GitHub.

Ang iminungkahing prototype ay dinisenyo upang atakehin ang mga sistemang may Intel Core i7-6500U processors sa isang kapaligirang may Linux at Chrome 88, bagama't hindi nito pinipigilan ang posibilidad na gumawa ng mga pagbabago upang magamit ang exploit sa ibang mga kapaligiran.

Ang paraan ng pagpapatakbo ay hindi partikular sa mga processor ng Intel : pagkatapos ng naaangkop na pag-aangkop, nakumpirma na ang exploit ay gumagana sa mga system na may mga CPU mula sa ibang mga tagagawa, kabilang ang Apple M1 batay sa arkitektura ng ARM. Pagkatapos ng maliliit na pagsasaayos, gumagana rin ang exploit sa iba pang mga operating system at iba pang mga browser na batay sa Chromium engine.

Sa isang kapaligiran batay sa karaniwang mga processor ng Chrome 88 at Intel Skylake, nakamit namin ang isang pagtagas ng data mula sa proseso na responsable para sa pag-render ng nilalaman ng web sa kasalukuyang tab na Chrome (proseso ng pag-render) sa bilis na 1 kilobyte bawat segundo. Bilang karagdagan, ang mga alternatibong prototype ay binuo, halimbawa, isang pagsasamantala na nagbibigay-daan, sa halagang nabawasan ang katatagan, upang madagdagan ang rate ng tagas sa 8kB / s kapag ginagamit ang pagganap. Ngayon () timer na may katumpakan na 5 microseconds (0.005 milliseconds ). Inihanda rin ang isang pagkakaiba-iba na nagpapatakbo ng isang timer na katumpakan ng isang millisecond, na maaaring magamit upang ayusin ang pag-access sa memorya ng isa pang proseso sa rate na halos 60 bytes bawat segundo.

Ang nai-publish na demo code ay binubuo ng tatlong bahagi:

  • Ang unang bahagi i-calibrate ang timer upang tantyahin ang oras ng pagtakbo ng mga operasyon na kinakailangan upang makuha ang data na nananatili sa cache ng processor bilang isang resulta ng haka-haka na pagpapatupad ng mga tagubilin sa CPU.
  • Ang pangalawang bahagi Tinutukoy ang layout ng memorya na ginamit kapag naglalaan ng JavaScript array.
  • Ang pangatlong bahagi direktang pinagsamantalahan ang kahinaan ng Spectre upang matukoy ang nilalaman ng memorya ng kasalukuyang proseso bilang isang resulta ng paglikha ng mga kundisyon para sa haka-haka na pagpapatupad ng ilang mga operasyon, na ang resulta ay itinapon ng processor matapos matukoy ang isang nabigong pagtataya, ngunit ang mga trace ng pagpapatupad ay naayos sa nakabahaging cache at maaaring maibalik gamit mga pamamaraan upang Tukuyin ang mga nilalaman ng cache gamit ang mga third-party na channel na pinag-aaralan ang pagbabago sa oras ng pag-access sa naka-cache at hindi naka-cache na data.

Ang iminungkahing pamamaraan ng exploitation ay nagbibigay-daan sa paggamit ng mga high-precision timer na makukuha sa pamamagitan ng performance.now() API at walang suporta para sa uri ng SharedArrayBuffer, na nagpapahintulot sa paglikha ng mga array sa shared memory.

Kasama sa pagsasamantala ang aparatong Spectre, na nagiging sanhi ng kontroladong pagpapatupad ng haka-haka na code, at isang tagasuri ng tagas ng channel sa gilid, na tumutukoy kung anong data ang na-cache sa panahon ng ispekulatibong pagpapatupad.

Ang gadget ay ipinapatupad gamit ang isang JavaScript array, kung saan sinusubukang i-access ang isang lugar sa labas ng mga hangganan ng buffer , na nakakaapekto sa estado ng branch prediction block dahil sa pagkakaroon ng isang buffer size check na idinagdag ng compiler (ang processor ay espekulatibong nagsasagawa ng isang maagang pag-access, ngunit ibinabalik ang estado pagkatapos ng pagsusuri).

Upang pag-aralan ang mga nilalaman ng cache sa ilalim ng mga kundisyon ng hindi sapat na katumpakan ng timer, isang pamamaraan ang iminungkahi na trick ang diskarte sa pagpapatalsik ng data ng data ng Tree-PLRU na ginamit sa mga processor at pinapayagan, sa pamamagitan ng pagtaas ng bilang ng mga cycle, upang makabuluhang taasan ang oras ng pagkakaiba kapag ang halaga ay ibinalik mula sa cache at sa kawalan ng isang halaga sa cache.

Naglabas ang Google ng isang prototype ng exploit upang ipakita ang posibilidad ng mga pag-atake gamit ang mga kahinaan sa klase ng Spectre at upang hikayatin ang mga web developer na gumamit ng mga pamamaraan na nagpapaliit sa mga panganib ng mga naturang pag-atake.

Sa parehong oras, naniniwala ang Google na walang isang makabuluhang rebisyon ng ipinanukalang prototype, imposibleng lumikha ng unibersal na pagsasamantala na handa hindi lamang para sa demonstrasyon, ngunit din para sa malawakang paggamit.

Pinagmulan: https://security.googleblog.com


Idagdag bilang ginustong mapagkukunan sa Google