SWAPGS - isang bagong kahinaan sa mekanismo ng speculative execution ng CPU

Mga mananaliksik mula sa Bitdefender ipinahayag bagong kahinaan (CVE-2019-1125) sa speculative instruction execution mechanism ng mga modernong CPU, na pinangalanang SWAPGS, na tumutugma sa pangalan ng processor instruction na nagdudulot ng problema. kahinaan ay nagbibigay-daan sa payagan ang isang walang pribilehiyong umaatake na matukoy ang mga nilalaman ng mga lugar ng memorya ng kernel o pagpapatakbo ng mga virtual machine. Problema nakumpirma sa mga processor ng Intel (x86_64) at bahagyang nakakaapekto Mga processor ng AMD kung saan hindi lumalabas ang pangunahing vector ng pag-atake. Ang mga naunang ipinatupad na pamamaraan upang malabanan ang mga kahinaan ng Spectre at Meltdown ay hindi nagpoprotekta laban sa pag-atake ng SWAPGS kapag gumagamit ng mga Intel processor, ngunit ang mga pag-aayos ay iminungkahi na para sa Linux, ChromeOS, Android at Windows.

Ang kahinaan ay kabilang sa klase ng Spectre v1 at batay sa ideya ng pagpapanumbalik ng data mula sa cache ng processor na natitira pagkatapos ng haka-haka na pagpapatupad ng mga tagubilin. Upang mapabuti ang pagganap, ang mga yunit ng hula ng sangay ng mga modernong CPU ay gumagamit ng preemptive na pagpapatupad ng ilang mga tagubilin na malamang na maisakatuparan, ngunit nang hindi naghihintay para sa pagkalkula ng lahat ng mga kadahilanan na tumutukoy sa kanilang pagpapatupad (halimbawa, kapag ang mga kondisyon ng sangay o mga parameter ng pag-access ay wala pa kalkulado pa). Kung hindi nakumpirma ang hula, itinatapon ng processor ang resulta ng speculative execution, ngunit ang data na naproseso sa panahon nito ay nananatili sa cache ng processor at maaaring maibalik gamit ang mga pamamaraan para sa pagtukoy ng mga nilalaman ng cache sa pamamagitan ng mga side channel, pag-aaral ng pagbabago sa pag-access oras sa naka-cache at hindi naka-cache na data.

Ang kakaiba ng bagong pag-atake ay ang paggamit ng isang pagtagas na nangyayari sa panahon ng haka-haka na pagpapatupad ng pagtuturo ng SWAPGS, na ginagamit sa mga operating system upang palitan ang halaga ng GS register kapag ang kontrol ay pumasa mula sa espasyo ng gumagamit patungo sa OS kernel (ang GS ang value na ginamit sa user space ay pinapalitan ng value na ginamit sa mga operasyon sa kernel ). Sa Linux kernel, ang GS ay nag-iimbak ng per_cpu pointer na ginagamit para ma-access ang kernel data, at ang user space ay nag-iimbak ng mga pointer sa TLS (Thread Local Storage).

Upang maiwasan ang pagtawag ng dalawang beses sa pagtuturo ng SWAPGS kapag ina-access muli ang kernel mula sa kernel space o kapag nagpapatupad ng code na hindi nangangailangan ng pagbabago sa rehistro ng GS, isang tseke at isang conditional na sangay ang isinasagawa bago ang pagtuturo. Ang speculative execution engine ay proactive na nagpapatuloy upang isagawa ang code sa pagtuturo ng SWAPGS nang hindi hinihintay ang resulta ng tseke, at kung hindi nakumpirma ang napiling branch, itatapon ang resulta. Kaya, ang isang sitwasyon ay maaaring lumitaw kapag ang isang sangay na hindi kinasasangkutan ng pagpapatupad ng SWAPGS ay speculatively na pinili, ngunit sa panahon ng speculative execution ang halaga ng GS register ay babaguhin ng SWAPGS instruction at gagamitin sa dependent memory operations na napupunta sa CPU cache.

Ang mga mananaliksik ay nagmungkahi ng dalawang senaryo ng pag-atake kung saan inihanda ang mga prototype ng pagsasamantala. Ang unang senaryo ay batay sa sitwasyon kung saan ang pagtuturo ng SWAPGS ay hindi isinagawa nang haka-haka, bagama't ito ay aktwal na ginagamit sa pagpapatupad, at ang pangalawa ay ang kabaligtaran, kapag ang pagtuturo ng SWAPGS ay isinagawa nang haka-haka, bagama't hindi ito dapat aktwal na isagawa. Para sa bawat senaryo, mayroong dalawang opsyon para sa pagsasamantala: maaaring matukoy ng attacker ang halaga sa isang partikular na address sa kernel area, at maaaring maghanap ang attacker ng isang partikular na halaga sa mga random na address sa kernel. Ang pagsasagawa ng isang pag-atake ay tumatagal ng mahabang panahon at ang pagsasamantala ay maaaring mangailangan ng ilang oras upang makumpleto ang pagtagas.

May problema sa Linux kernel inalis sa pamamagitan ng pagbabago ng lohika ng pagtawag sa pagtuturo ng SWAPGS (pag-block ng speculative execution), katulad ng pagwawasto ng iba pang mga kahinaan sa klase ng Spectre v1. Ang karagdagang proteksyon ay inaasahang magkakaroon ng kaunting epekto sa pagganap ng mga tipikal na workload. Nagaganap ang latency sa yugto ng paglipat sa pagitan ng user at kernel space, na maaaring magresulta sa mahinang pagganap kapag, halimbawa, mayroong mabigat na system calling mula sa application o madalas na pagbuo ng mga NMI at mga interrupt.

Ang pag-aayos ay nangangailangan ng pag-install ng kernel update sa parehong host system at guest environment, na sinusundan ng system reboot. Upang hindi paganahin ang proteksyon sa Linux, ang "nospectre_v1" na opsyon ay maaaring gamitin, na nagdi-disable din ng mga hakbang upang harangan ang SWAPGS na kahinaan. Ang pag-aayos ay magagamit bilang patch para sa Linux kernel, na kasama na sa mga release 4.19.65, 5.2.7, 4.14.137, 4.9.188 at 4.4.188. Ang mga update para sa mga pamamahagi ng Linux ay hindi pa nailalabas (Debian, RHEL, Fedora, Arch Linux, SUSE/openSUSE, Ubuntu). Sa Windows, tahimik na naayos ang problema Hulyo update. Google Company pinaghandaan ayusin para sa kernel 4.19 na ipinadala kasama ng ChromeOS at Android.

Ayon sa mga mananaliksik mula sa Bitdefender, ipinaalam sa Intel ang problema noong Agosto noong nakaraang taon. Napagpasyahan na ayusin ang problema sa programmatically, kung saan ang mga developer mula sa Microsoft, Google at ang Linux kernel ay kasangkot sa coordinated development ng isang fix. Ang mga lumang processor ng Intel, pre-Ivy Bridge, ay mas mahirap salakayin dahil sa kakulangan ng suporta para sa pagtuturo ng WRGSBASE na ginamit sa pagsasamantala. Ang mga sistema ng ARM, POWER, SPARC, MIPS, at RISC-V ay hindi apektado ng problema dahil hindi nila sinusuportahan ang pagtuturo ng SWAPGS.

Ang problema ay pangunahing nakakaapekto sa mga may-ari ng mga processor ng Intel -
Sa mga sistema ng AMD, ang pangalawang senaryo ng pag-atake lamang ang nagawang kopyahin, na limitado sa pagpoproseso ng haka-haka ng batayang halaga ng rehistro ng GS, na maaaring magamit upang maghanap ng mga tiyak na halaga sa mga random na lugar ng memorya. Upang harangan ang pagpipiliang ito sa pag-atake ay sapat umiiral na mga paraan ng proteksyon laban sa Spectre v1.

Pinagmulan: opennet.ru

Magdagdag ng komento