Mayhem — атака, която изопачава битове в паметта, за да заобиколи удостоверяването в sudo и OpenSSH

Изследователи от Университета Вустър представиха нов тип атака Mayhem, която използва метод на изкривяване на битове в динамична оперативна памет Rowhammer за промяна на стойностите на променливите в стека, прилагани в програмата като флагове за вземане на решение относно успешността на аутентификацията и преминаването през проверки за сигурност. Практическите примери за прилагане на атаката са демонстрирани за заобикаляне на аутентификацията в SUDO, OpenSSH и MySQL, както и за промяна на резултатите от проверки, свързани с сигурността, в библиотеката OpenSSL.

Атаката може да бъде приложена към приложения, при които проверките използват сравнение на различията на стойностите от нула. Пример за уязвим код: int auth = 0; … // код за проверка, променящ стойността на auth в случай на успешна аутентификация if(auth != 0) return AUTH_SUCCESS; else return AUTH_FAILURE;

В контекста на този пример за успешна атака е достатъчно да се постигне изкривяване на произволен бит в паметта, принадлежаща на 32-битовата променлива auth в стека. При изкривяване на произволен бит в променливата, стойността вече няма да бъде равна на нула и условният оператор ще определи успешното преминаване на аутентификацията. Подобни шаблони на проверка са широко разпространени в приложения и се срещат например в SUDO, OpenSSH, MySQL и OpenSSL.

Mayhem - атака, изкривяваща битовете в паметта за заобикаляне на автентикацията в sudo и OpenSSH

Атаката може да бъде приложена и на сравнения от вида «if(auth == 1)», но в този случай нейното провеждане се усложнява, тъй като трябва да се изкриви не всякакъв бит от 32, а последният бит. Метода може също да се използва за влияние върху стойностите на променливите в регистрите на процесора, тъй като съдържанието на регистрите може временно да бъде записано в стека при превключване на контекста, извикване на функции или задействане на обработчик на сигнали. В периода, в който стойностите на регистрите са в паметта, в тази памет могат да се внесат изкривявания и в регистъра ще бъде възстановена променената стойност.

Mayhem - атака, изкривяваща битовете в паметта за заобикаляне на автентикацията в sudo и OpenSSH

За изкривяване на битовете се използва една от модификациите на атаката от класа RowHammer. Паметта DRAM представлява двумерен масив от клетки, всяка от които съдържа кондензатор и транзистор. Непрекъснатото четене на една и съща област от паметта води до флуктуации на напрежението и аномалии, предизвикващи малка загуба на заряд в съседни клетки. При висока интензивност на четенето, съседната клетка може да загуби достатъчно голямо количество заряд и следващият цикъл на регенерация няма да успее да възстанови първоначалното й състояние, което ще доведе до промяна на стойността на данните, съхранявани в клетката. За защита от RowHammer производителите на чипове добавиха механизъм TRR (Target Row Refresh), който блокира изкривяването на клетките в индивидуални случаи, но не защитава от всички възможни варианти на атаката.

За защита от атаката Mayhem се препоръчва да се използва не оценка на разликите от нула или съвпадения с единица в сравненията, а проверка на съвпадение, използвайки случайна стойност с ненулеви октети. В този случай, за да се зададе необходимата стойност на променливата, е необходимо точно да се изкривят значителен брой битове, което е нереалистично, в сравнение с изкривяване на един бит. Пример за код, неподвластен на атака: int auth = 0xbe406d1a; … // код за проверка, който задава значението на auth на 0x23ab8701 в случай на успешна автентикация if(auth == 0x23ab8701) return AUTH_SUCCESS; else return AUTH_FAILURE;

Указаният метод за защита вече е приложен от разработчиците на sudo и влиза в състава на версия 1.9.15 като поправка на уязвимостта CVE-2023-42465. Прототип на кода за извършване на атаката се планира да бъде публикуван след внасянето на поправки в основните уязвими проекти.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster