Az új syscall a kiadás előtt álló 5.14-es kernelbe került beolvasztásra. Részletek itt.
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Szerintem kicsit félrevezető. Ez nem jelenti azt, hogy a kernel egyáltalán nem tudja elérni az így allokált memóriát.
Csupán arról van szó, hogy ez a memóriaterület nem lesz folyamatosan bemappelve a laptáblába.
Alapból az egész kernel memória folyamatosan be van mappelve, függetlenül attól, hogy kernel vagy userspace-ben fut-e a processzor, ill. melyik folyamat van beütemezve. 64 bites rendszereken ez a komplett fizikai memóriának egy lineáris képét is tartalmazza, 32 bites rendszereken csak kb az első 900MB-ot, mert több nem fér be. Ez nagyon gyorsítja a kontextusváltásokat, mert nem kell a laptáblát piszkálni, nem kell a TLB-cache-t kiüríteni stb. A memóriát egyedül a read, write, execute lapjogosultság-bitek elvétele védi meg az aktuálisan futó alkalmazástól.
Ez utóbbi bukott meg a meltdown sebezhetőségnél, mikor kiderült, hogy a processzor a laptábla read jogosultság bitjének értékét spekulatívan feltételezi és csak utólag ellenőrzi. (Majd nem-tökéletesen görgeti vissza, ha kiderül, hogy nem volt read jog). Itt számított az, hogy a virtuális memóriába be van mappelve egy csomó minden amihez a futó alkalmazásnak semmi köze. A meltdown-ra workaround az volt, hogy a syscall belépés/kilépéskor a kernel folyamatosan ki-be mappelte a teljes kernel memóriát, ami szignifikáns teljesítményromlással járt (bár kicsit túl volt fújva).
A memfd_secret lényegében ennek egy finomhangolt változata, ahol az alkalmazás meg tudja mondani a kernelnek, hogy hol vannak az igazán szenzitív adatai, amiket semmiképp sem szabad bennfelejteni a virtuális memóriaképben, amikor nem az azt tulajdonoló alkalmazás van beütemezve. Természetesen a kernel ettől függetlenül továbbra is bemappelheti - hiszen máshogy nem tudná elérhetővé tenni az alkalmazás számára - ezáltal a kernel nem "zárta ki magát" erről a memóriaterületről. De a lényeg, hogy csak akkor mappeli be, amikor tényleg kell. Mivel nem a teljes memóriakép ki-be mappeléséről van szó, ezért a TLB flush költsége is csak ezt a memóriaterületet érinti, vagyis remélhetőleg nem jár olyan durva teljesítményvesztéssel, mint a teljes meltdown workaround.
Az elképzelés az, hogy ezt akkor is lehet alkalmazni, ha az adott rendszeren éppen nincsen ismert meltdown-jellegű sebezhetőség, mert ki tudja, hátha mégis.
Másrészt véd olyan kernel security bugoknál, amik lehetővé teszik tetszőleges (kernel virtuális) memóriacímen levő adat elolvasását, de kódvégrehajtást nem. (Ez utóbbi esetben a támadó visszamappelhetné a secret memóriát - ráadásul ad is némi támpontot a támadónak, hogy hol vannak az igazán érdekes részek.)
Harmadrészt - bár a leírások nem említik, de szerintem logikus hogy így legyen - a felszabadításkor ezt a memóriaterületet fizikai memóriában is garantáltan ki lehet nullázni, nem csak unmappelni a memórialapokat, ahogy normálisan történne.
Negyedrészt a jövőben elképzelhető, hogy memfd_secret-re valami hardveres memóriatitkosítást is rákötnek.
Régóta vágyok én, az androidok mezonkincsére már!
- A hozzászóláshoz be kell jelentkezni
En szemely szerint koszonom ezeket az infokat!
- A hozzászóláshoz be kell jelentkezni
Szintén - kár, hogy nincs kifejezetten köszönöm gomb.
- A hozzászóláshoz be kell jelentkezni
Elmondhatom, hogy ma is tanultam valamit, ember, jovok neked egy sorrel! :-)
- A hozzászóláshoz be kell jelentkezni
Kösz a részletes infót. Jó tudni. Bár szerintem ez nem valami hasznos, mert akinek ilyen szintű, ultraparanoiás überbiztonság kell, az használjon OpenBSD-t, abban elég durva security megoldások vannak, random újralinkelése binárisoknak, kernelnek, memóriaszegmens/stack randomizáció, stb.. Amik persze a teljesítményt és debugolhatóságot rontják, de hát a kényelem+teljesítmény és a biztonság mindig is ellentétes irányba hatottak. Persze tőlem a Linux kernelbe is elférnének ezek, ha nincs kötelezően rátolva a userre, így akinek kell használja, akinek nem, az kikapcsolja, nem aktiválja.
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)
- A hozzászóláshoz be kell jelentkezni
Na ezért járok ide! :)
- A hozzászóláshoz be kell jelentkezni
Köszi, nagyon jó összefoglaló!
- A hozzászóláshoz be kell jelentkezni
A cím alapján ez olyan, mint a szupertitkos üzenet: elolvasás előtt megsemmisítendő.
> Sol omnibus lucet.
- A hozzászóláshoz be kell jelentkezni