• Исследователи из Вустерского политехнического института представили новый тип атаки 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🤔14❤9🔥7
• В кодовую базу OpenSSH добавлена встроенная защита от брутфорса. Для блокировки подобных атак в файл конфигурации
sshd_config
добавлен параметр PerSourcePenalties
, позволяющий определить порог блокировки, срабатывающий при большом числе неудачных попыток соединений с одного IP-адреса. Новый механизм защиты войдёт в состав следующего выпуска OpenSSH и будет включён по умолчанию в OpenBSD 7.6.#OpenSSH
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36👍17👎3❤2🥱2
• Помните атаку на репозиторий liblzma/xz‑utils в начале этого года, конечной целью которой был бэкдор в OpenSSH? Мало кто знает, что бэкдор в xz‑utils на самом деле второй широко известной попыткой внедрения бэкдора в OpenSSH. Впервые это произошло более 22 года назад, в 2002 году:
• Атака 2002 года была довольно простой. Оригинальный анонс: OpenSSH Security Advisory: Trojaned Distribution Files. В те времена, исходный код OpenSSH размещался на ftp.openbsd.org, и каким‑то образом он был заменён на версию с бэкдором. Точно неизвестно, как это произошло, но злоумышленнику удалось подменить файлы
.tar .gz
для нескольких версий. В то время в хакерской среде активно распространялись эффективные эксплойты для серверов, так что в этом нет ничего особо удивительного. К счастью, благодаря разнице в контрольных суммах файлов, бэкдору не удалось долго просуществовать. Например, при попытке собрать версию OpenSSH с бэкдором на FreeBSD система «портов» автоматически проверяла контрольные суммы пакетов, и так как в ней уже была информация о контрольных суммах этих версий до внедрения бэкдора, она сообщала о расхождении. Если бы атакующие дождались выхода новой версии и сразу заменили бы файлы .tar .gz
и файлы с контрольными суммами, они могли бы добиться гораздо большего успеха.• Как не посмотри, это был простой бэкдор, возможно, самый простой, который можно себе представить. Шаг первый: в сборку пакета были внесены изменения, благодаря которым при запуске configure компилировались и выполнялись файлы добавленные злоумышленником. Шаг второй: вредоносный код подключался к захардкоженному IP‑адресу в Австралии каждый час и получал список команд для выполнения на скомпрометированном устройстве.
• До сих пор неизвестно, кто именно стоял за этим бэкдором, но распространённое мнение (по крайней мере среди разработчиков OpenBSD) заключается в том, что это были просто мелкие проделки, которые были вполне обычным делом для 2002 года. Это, конечно, был не первый подобный случай. Например, Wu‑FTPd, самый популярный ftpd 90-х годов, столкнулся с чем‑то подобным еще в 1993 году. Однако это было хорошим предзнаменованием того, что последует дальше. Случай 2002 года представляет собой интересное историческое событие, поскольку он демонстрирует как сходства, так и различия по сравнению с современной попыткой внедрения бэкдора xz‑utils в OpenSSH. Исследуя эти различия мы можем извлечь полезные уроки на будущее.
- Источник 1;
- Источник 2.
#OpenSSH #XZ #backdoor
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥9👨💻3❤2