infosec
55.1K subscribers
1.35K photos
74 videos
84 files
1.55K links
Copyright: @SEAdm1n

Вакансии: @infosec_work

Информационная безопасность. Литература для ИТ специалистов. Пентест, DevOps, Администрирование.

Преобрести рекламное размещение: https://telega.in/c/it_secur

РКН: https://vk.cc/cN3VCI
Download Telegram
🔐 Mayhem - атака, искажающая биты в памяти для обхода аутентификации в sudo и OpenSSH.

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

• Атака может быть применена к приложениям в которых при проверках используется сравнение значений отличный от нуля, например:

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


• В контексте данного примера атака Mayhem позволяет добиться искажения бита в памяти, приходящегося на переменную auth в стеке. При искажении любого бита в переменной значение уже не будет равно нулю и условный оператор определит успешное прохождение аутентификации. Подобные шаблоны проверки достаточно распространены в приложениях и встречаются, например, в SUDO, OpenSSH, MySQL и OpenSSL.

• Метод также может использоваться для влияния на значения переменных в процессорных регистрах, так как содержимое регистров может быть на время сброшено в стек при переключении контекста, вызове функций или срабатывании обработчика сигнала. В промежуток времени, пока регистровые значения находятся в памяти, в эту память можно внести искажения и в регистр будет восстановлено изменённое значение.

• Для искажения битов применяется одна из модификаций атаки класса RowHammer. Так как память DRAM представляет собой двухмерный массив ячеек, каждая из которых состоит из конденсатора и транзистора, выполнение непрерывного чтения одной и той же области памяти приводит к флуктуации напряжения и аномалиям, вызывающим небольшую потерю заряда соседних ячеек. Если интенсивность чтения большая, то соседняя ячейка может потерять достаточно большой объём заряда и очередной цикл регенерации не успеет восстановить её первоначальное состояние, что приведёт к изменению значения сохранённых в ячейке данных. Для защиты от RowHammer производители чипов добавили механизм TRR (Target Row Refresh), который блокирует искажение ячеек в частных случаях, но не защищает о всех возможных вариатов атаки.

• Для защиты от атаки рекомендуется использовать в сравнениях не оценку отличий от нуля, а проверку совпадений, используя случайное значение затравки c ненулевыми октетами. В этом случае для выставления нужного значения переменной необходимо точно исказить существенное число битов, что нереалистично, в отличие от приблизительного искажения одного бита. Например:

int auth = 0xbe406d1a;
... // код проверки, выставляющий значение auth в 0x23ab8701 в случае успешной аутентификации
if(auth == 0x23ab8701)
return AUTH_SUCCESS;
else
return AUTH_FAILURE;


• Указанный метод защиты уже применён разработчиками sudo и вошёл в состав выпуска 1.9.15 как исправление уязвимости CVE-2023-42465. Прототип кода для совершения атаки планируют опубликовать после внесения исправлений в основные уязвимые проекты.

➡️ Источник.

#mayhem #rowhammer #OpenSSH
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34🤔149🔥7