Как работят MeltdownPrime и SpectrePrime и какви са последствията от тях
Както вече съобщихме, експерти от Принстънския университет и от компанията Nvidia публикуваха нови варианти на атаките Meltdown и Spectre, на които дадоха имената MeltdownPrime и SpectrePrime.
Новите експлойти използват съвсем друг начин за възстановяване на информацията от процесорния кеш. Ключовата разлика от предишните способи за достъп до чувствителната информация е използването на две процесорни ядра, при които за канал за достъп се използват особеностите на протокола за съгласуваното използване на кеш-паметта от процесорните ядра, известен като Invalidation-Based Coherence Protocol.
Прототипът на MeltdownPrime и SpectrePrime вече е публикуван е GitHub и стана възможно в детайли да се разбере какво се случва при използването на тези атаки и какви изводи следва да се направят.
Новият прототип на експлойта използва особеностите на съвременните многоядрени процесори и атакува с помощта на два паралелни потока: първият поток „primeProbe“ извършва запълването на кеша на централния процесор с еталонни данни и изчаква изпълнението на процесорните команди, контролирани от втория поток „primeTest“ – това са командите за спекулативно изпълнение на процесорен код. През това време, програмата-жертва работи със своите данни и променя част от запълнената с еталонни данни процесорна кеш памет. Именно тук „primeProbe“ измерва времето за достъп до данните, адресите на които са останали в кеша. А по скоростта на получените по този начин данни може да се разбере към кои адреси от оперативната памет се е обръщала програмата-жертва. Това не е трудно, понеже достъпът до RAM паметта е многократно по-бавен от достъпа до кеша. Бързо се натрупва статистика и данните за пароли, електронно банкиране и други стават известни.
Дотук, алгоритъмът доста прилича на методите, използвани в Meltdown и Spectre, но има съществена разлика. Новите варианти на атаките използват особеностите на работата на кеш-паметта в многоядрените процесори. Работата е в това, че при едноядрените процесори в кеш паметта чете и записва само едно ядро и тук проблеми няма. Но когато процесорът има две или повече ядра, възниква ситуация, при която, когато едното ядро презапише данните от паметта и кеша, останалите процесорни ядра имат в кеша вече остаряла информация. За избягването на подобни проблеми се използва механизма за кохерентност на паметта.
Новият експлойт използва именно този механизъм, за да презапише данните в кеша на другите ядра. Това става чрез спекулативно изпълнение на процесорен код и именно това е уязвимостта Spectre. Спекулативният код дава възможност на процесора в определени случаи да предположи, каква инструкция ще последва в кода на програмата, още преди да я получи. Ако процесорът е сгрешил в своето предсказване, той отхвърля резултатите от своите изчисления, но понеже ги е оставил в кеша, те могат да бъдат прочетени по косвен начин, чрез анализ на времето за достъп до данните.
Експертите обявиха, че MeltdownPrime и SpectrePrime дават по-висока точност за пресъздаване на чувствителната информация. Прототипът на SpectrePrime, при 100 стартирания демонстрира точност от 99,95%, докато точността на класическия експлойт за Spectre показва 97,9%. Тоест, новите експлойти с времето по-бързо достигат до 100% възстановяване на всичко скрито.
Създателите на MeltdownPrime и SpectrePrime считат, че сега използваните програмни методи срещу Meltdown и Spectre са ефективни и при новите варианти на атаките и не се налага правенето на нови или допълнителни пачове. Тук същественото е друго: засега принципно няма начин да се оправят тези хардуерни уязвимости.
Специалистите подчертаха, че блокирането на атаките на хардуерно ниво изисква принципно нов подход при процесорните архитектури и подготвяните за излизане нови централни процесори на Intel със защита от Meltdown и Spectre, остават незащитени от MeltdownPrime и SpectrePrime. Intel опроверга тази информация и каза, че нейните нови процесори, в които тези уязвимости за решени, ще са защитени и от новите варианти на атаките.
Подробната информация за MeltdownPrime и SpectrePrime бе публикувана в arXiv.org.

