Група изследователи от Техническия университет в Грац (Австрия), известни със разработката на атаките MDS, NetSpectre, Throwhammer и ZombieLoad, публикуваха нов метод за атака (CVE-2021-3714) чрез странични канали на механизма за дедупликация на страници в паметта (Memory-Deduplication), който позволява да се установи наличието на определени данни в паметта, да се организира байтова теч на съдържанието на паметта или да се установи разпределението на паметта за заобикаляне на защитата, основана на рандомизация на адресите (ASLR). Новият метод, в сравнение с преди демонстрираните варианти на атаки върху механизма за дедупликация, се различава с провеждането на атаката от външен хост, използвайки като критерий времето за отговори на изпратените от атакуващия заявки по протоколите HTTP/1 и HTTP/2. Възможността за провеждане на атака е демонстрирана за сървъри на база Linux и Windows.
Атаките върху механизма за дедупликация на паметта използват разликата във времето за обработка на операцията по запис като канал за теч на информация, в ситуации, при които промяната на данните води до клониране на дедуплицираната страница на паметта чрез механизма Copy-On-Write (COW). В процеса на работа ядрото определя идентични страници на паметта от различни процеси и ги обединява, показвайки идентични страници на паметта в една физическа памет, за да съхранява само едно копие. При опит за изменение на данни, свързани с дедуплицираните страници от един от процесите, възниква изключение (page fault) и чрез механизма Copy-On-Write автоматично се създава отделна копия на страницата на паметта, която се прикрепя към процеса. Изпълнението на копирането отнема допълнително време, което може да бъде признак за промяна на данните, кръстосващи се с друг процес.
Изследователите показаха, че забавянията, произтичащи от работата на механизма COW, могат да бъдат уловени не само локално, но и чрез анализ на изменението на времето за доставка на отговори през мрежата. Предложени са няколко метода за определяне на съдържанието на паметта от отдалечен хост чрез анализ на времето за изпълнение на заявките по протоколите HTTP/1 и HTTP/2. За запазване на подбраните шаблони се използват типични уеб приложения, които запазват информацията, постъпваща в заявките, в паметта.
Общият принцип на атаката е сведен до запълване на сървър страници в паметта с данни, потенциално повтарящи съдържанието на вече съществуваща страница в паметта на сървъра. След това атакуващият изчаква времето, необходимо на ядрото за дедупликация и свързване на страницата в паметта, след което извършва промяна на контролирания дубликат на данните и оценява времето за реакция, за да определи успешността на атаката.

По време на проведените експерименти максималната скорост на изтичане на информация достигна 34.41 байта на час при атака през глобалната мрежа и 302.16 байта на час при атака през локалната мрежа, което е по-бързо от другите методи за извличане на данни през външни канали (например, при атака NetSpectre скоростта на предаване на данни е 7.5 байта на час).
Предложени са три работни варианта на атака. Първият вариант позволява да се определят данни в паметта уеб сървър, при който се използва Memcached. Атаката се състои в зареждане на определени набори данни в хранилището Memcached, изчистване на дедуплицирания блок, повторно записване на същия елемент и създаване на условия за COW-копиране чрез промяна на съдържанието на блока. При експеримента с Memcached е успяло да се определи версията на libc, инсталирана в системата, работеща в виртуална машина, за 166.51 секунди.
Вторият вариант предоставя възможност за узнаване на съдържанието на записи в СУБД MariaDB, чрез използване на хранилището InnoDB, чрез възстановяване на съдържанието байт по байт. Атаката се извършва чрез изпращане на специално модифицирани заявки, които водят до еднобайтови несъответствия в страниците в паметта и анализ на времето за реакция, за да се определи, дали предположението за съдържанието на байта е било вярно. Скоростта на подобно изтичане е малка и е 1.5 байта на час при атака от локалната мрежа. Предимството на метода е, че той може да се използва за възстановяване на неизвестно съдържание в паметта.
Третият вариант позволи в рамките на 4 минути напълно да се заобиколи механизмът на защита KASLR и да се получи информация за отклонението в паметта на образа на ядрото на виртуалната машина, в ситуация, при която адресът на отклонението се намира в страницата в паметта, а другите данни в нея не се променят. Атаката беше извършена от хост, намиращ се на 14 прехода (hops) от атакуваната система. Примери за код за извършване на представените атаки обещават да бъдат публикувани в GitHub.
Източник: opennet.ru
