Ranljivost v vseh operacijskih sistemih zaradi napačnega branja dokumentacije procesorjev

Matej Huš

11. maj 2018 ob 12:55:24

Vsi večji proizvajalci operacijskih sistemov, vključno z Microsoftom, Applom, FreeBSD-jem in Linuxom, so usklajeno izdali popravek za eno večjih lukenj, ki se je v operacijskih sistemih skrivala zaradi napačne interpretacije ukazov MOV SS in POP SS na platformah Intel x86-64. Ranljivosti, ki se vodi pod številko CVE-2018-8897, sicer ni mogoče izrabljati oddaljeno, temveč napadalec potrebuje fizični dostop do računalnika, ki je okužen ali ima kako drugače zagotovljen dostop do uporabniškega računa. Vseeno pa je ranljivost pomembna, ker omogoča dostop do zaščitenega dela (ring 0) tudi uporabniškim aplikacijam (ring 3).

Popravek je tudi lep primer sodelovanja med proizvajalci, saj so se uskladili na isti dan zakrpali luknjo v vseh operacijskih sistemih. Razlog za njen nastanek je očitno napačno branje dokumentacije, saj so razvijalci programske opreme napak razumeli, kako AMD-jevi in Intelovi procesorji obravnavajo določene izjeme pri razhroščevanju. Ali povedano drugače, dokumentacija ni bila povsem jasna, zato so jo programerji napačno interpretirali. Zaradi tega je mogoče z natančno prilagojeno serijo ukazov procesor prepričati, da prebere podatke, do katerih program načeloma ne bi smel imeti dostopa. Programerji so predvidevali, da ukaza POP SS ali MOV SS nikoli ne moreta vrniti nekonsistentnih podatkov. Toda če se takoj po ukazu pojavi kakšen ukaz, ki povzroči prekinitev (interrupt), to ni nujno res. Zato se lahko zgodi nepričakovano vedenje, ko jedro izvede ukaze iz uporabniškega dela, ki jih ne bi smelo. Podrobno sta ranljivost opisala odkritelja Nick Peterson in Nemanja Mulasmajic.