A Holland Free University research group has presented a new attack technique called SLAM (Spectre Linear Address Masking), offering a fresh approach to exploit microarchitectural vulnerabilities of the Spectre type, wherein data leakage occurs during the translation of non-canonical addresses, while the provided extensions in new processors for masking linear addresses are leveraged to bypass canonical checks. The researchers have published a toolkit implementing the method and proposed a demonstration showing how, in a matter of seconds on Ubuntu, one could extract from the kernel memory data corresponding to a specific mask (demonstrated by extracting a string containing the root user password hash).

The attack can be performed on systems with Intel processors supporting the LAM (Linear Address Masking) extension, AMD processors with the UAI (Upper Address Ignore) extension, and ARM processors with the TBI (Top Byte Ignore) extension. These extensions allow part of the bits in 64-bit pointers to store non-addressing metadata (for standard programs, not enough memory is needed, which would allow addressing 64-bit pointers, thus the upper bits can be utilized, for instance, for security-related checks). Interestingly, Intel, AMD, and ARM processors supporting LAM, UAI, and TBI have only been announced but are not yet mass-produced, making SLAM the first speculative attack on future CPUs. The attack can also be executed on older AMD Zen+ and Zen 2 CPUs that are susceptible to vulnerability CVE-2020-12965.
Hasonlóan a Spectre sebezhetőségek kihasználásához, a SLAM támadáshoz is szükség van bizonyos utasítási sorozatokra (gadgetek) a kernelben, amelyek spekulatív utasításvégrehajtást eredményeznek. Az ilyen utasítások spekulatív adatolvasást idéznek elő a memóriából a külső körülmények függvényében, amelyre a támadó hatással lehet. A hibás előrejelzés megállapítása után a spekulatív végrehajtás eredménye elvetésre kerül, de a feldolgozott adatok a cache-ben maradnak, és később harmadik felek által végzett elemzéssel visszanyerhetők. Az elemzők által a cache-ben megmaradt adatok kiolvasására használt módszer az Evict+Reload, amely az adatok cache-ből való kiszorításának feltételeinek megteremtésére épül (például egy olyan aktivitás jön létre, amely egyenletesen kitölti a cache-t tipikus tartalommal) és olyan műveletek végrehajtására, amelyek futási ideje lehetővé teszi az adatok processzorki cache-ben való meglétének megítélését.
A SLAM támadás végrehajtásához a támadó által vezérelt adatok (alább a „secret” változó) alapján elágazásmentes kódot használnak. Például: void unmasked_gadget(long **secret) { **secret; }
Megjegyzendő, hogy az ilyen kódminták gyakran előfordulnak programokban, például a Linux kernelben több tízezer ilyen gadgetet azonosítottak, amelyek közül legalább néhány száz alkalmas az exploitokhoz. Az adatszivárgás megakadályozható olyan további utasítások hozzáadásával ezekhez a gadgetekhez, amelyek blokkolják a spekulatív végrehajtást. Az Intel vállalat annak érdekében, hogy megakadályozza a szivárgást, szoftveres módszert kíván biztosítani a LAM támogatása nélküli processzorok forgalomba hozatala előtt. Az AMD arra javasolta, hogy a Spectre v2 támadások blokkolására létező módszereket alkalmazzanak. A Linux kernel fejlesztői a támadások elleni védelem érdekében a LAM alapértelmezett támogatását letiltották, amíg az Intel meg nem adja az adatszivárgás blokkolására vonatkozó ajánlásait.
Forrás: opennet.ru
