SOT

Security Orchestration Tools

Напишите нам на sales@securityvision.ru или закажите демонстрацию

DMA-атака и защита от нее

DMA-атака и защита от нее

Руслан Рахметов, Security Vision

 

Большинство кибератак традиционно реализуется удаленно - злоумышленники предпочитают действовать на расстоянии, не рискуя своей физической безопасностью в момент взлома. Однако, есть ряд опасных атак, для которых потребуется физический доступ к атакуемому хосту - например, устройство может быть скомпрометировано после подключения казалось бы безобидной флешки. Кибератаки типа Juice jacking (использование «зарядных» USB-портов в общественных местах для атаки), применение устройств класса BadUSB (например, USB Rubber Ducky), внедрение мини-ПК типа Raspberry Pi или Flipper Zero в атакуемые инфраструктуры - всё это стало обычной практикой и для пен-тестеров, и для продвинутых хакеров. В настоящей статье мы обсудим атаки прямого доступа к памяти (DMA-атаки), для реализации которых также требуется физический доступ к атакуемому устройству.

 

Для начала следует вкратце рассказать, что такое прямой доступ к памяти (англ. DMA, Direct Memory Access). Под памятью в данном случае понимается оперативная память (называется также ОЗУ - оперативное запоминающее устройство), в которой хранятся данные и код (команды для выполнения в ЦПУ - центральном процессорном устройстве). Начиная с процессора Intel 80386, выпущенного в 1985 году, ЦПУ получили ряд функциональных возможностей, используемых до сих пор:


1) Механизм безопасности «Кольца защиты» (англ. Protection Rings): использование разделения привилегий в архитектуре x86, при котором ядро ОС и драйверы уровня ядра работают на наиболее привилегированном уровне ("Ring 0", kernel mode), прочие драйверы - на уровнях "Ring 1" и "Ring 2", а пользовательские приложения запускаются на наименее привилегированном уровне "Ring 3" (user mode). При этом в современных ОС используются, как правило, только "Ring 0" и "Ring 3", а также добавляются более глубокие уровни: гипервизор подсистемы аппаратной виртуализации на "Ring -1", режим системного управления (System Management Mode, SMM) на "Ring -2", подсистема управления чипсетом с отдельным микропроцессором (например, Intel Management Engine Interface или AMD Platform Security Processor) на "Ring -3". При этом любой код, запущенный на более приоритетном уровне, может получить доступ к коду и данным на менее приоритетном уровне, но не наоборот (например, гипервизор с "Ring -1" может получить неограниченный доступ к ядру ОС на "Ring 0", а пользовательская программа не может получить доступ к ядру ОС).


2) Использование виртуальной памяти и её защита: все пользовательские программы из "Ring 3" работают не с физической памятью, а с виртуальной памятью, что позволяет изолировать память (данные и код) приложений друг от друга. Трансляцию виртуальных адресов в физические выполняет специальное устройство - блок управления памятью (Memory Management Unit, MMU). Защита виртуальной памяти позволяет предотвратить доступ процесса к памяти, которая не выделена ему: можно полностью запретить процессу доступ к определенной области памяти, запретить только запись в неё или запретить исполнение содержимого этой области памяти. В современных ЦПУ и ОС используются такие технологии защиты памяти, как предотвращение выполнения данных (Data Execution Prevention, DEP), случайное распределение адресного пространства (Address Space Layout Randomization, ASLR), защита от перезаписи обработки структурированных исключений (Structured Exception Handling Overwrite Protection, SEHOP) и ряд других.


3) Использование страничной памяти (оперативная память разделяется на области-«страницы» фиксированной величины, а виртуальные адреса соотносятся с физическими постранично) и мультизадачность (разные процессы исполняются независимо друг от друга).

 

Итак, разработчики процессоров и операционных систем инвестировали значительные ресурсы в защиту оперативной памяти, поскольку в ней обрабатываются ключи шифрования, пароли и конфиденциальная информация, а также именно в ней высокопривилегированные процессы хранят код исполняемых команд и записывают результаты своей работы. Несмотря на наличие решений для шифрования оперативной памяти и использования защищенных выделенных криптопроцессоров (Trusted Platform Module, TPM), в большинстве случаев важная информация, которая хранится и передаётся в зашифрованном виде, пока что всё равно обрабатывается в оперативной памяти в открытом виде, что и привлекает внимание злоумышленников. DMA-доступ к памяти - это один из методов получения прямого доступа к ОЗУ, не считая атаку через холодную загрузку (cold boot attack), которая основана на сохранении информации в модулях ОЗУ после выключения питания, особенно при низких температурах.


Технология прямого доступа к памяти (англ. DMA, Direct Memory Access) была разработана в благих целях: с увеличением объемов сохраняемой и обрабатываемой на внешних устройствах информации потребовался быстрый доступ устройств к ОЗУ минуя ЦПУ. В обычных условиях ЦПУ управляет передачей данных между периферийными устройствами и оперативной памятью, что приводит к снижению скорости решения им других задач. За счет технологии DMA ускоряется работа с такими устройствами, как внешние высокоскоростные накопители, внешние графические, сетевые и аудио-карты - всей периферии, которая работает с большими объемами информации. Такие периферийные устройства могут подключаться по различным высокоскоростным интерфейсам - IEEE 1394 (FireWire), Thunderbolt, USB 3.0/4.0, PCI/PCI Express, SD Express, также могут использоваться различные переходники и контроллеры - например, USB 3380 (PCI Express - USB 3.0). Подлобные внешние устройства могут оснащаться собственным DMA-контроллером (режим Bus Mastering), который управляет процессом передачи данных между устройством и ОЗУ, взаимодействуя с ЦПУ лишь при запуске и окончании этого процесса. Для управления работой DMA-контроллера с оперативной памятью, по аналогии с описанным выше блоком MMU, был разработан специальный блок управления памятью для операций ввода-вывода (Input–Output Memory Management Unit, IOMMU). Блок IOMMU является посредником между оперативной памятью и DMA-устройством, сообщая ему не реальные физические адреса в памяти, а виртуальные. Кроме того, блок IOMMU в среде виртуализации позволяет гостевым ОС обращаться к периферийным устройствам хоста напрямую, минуя ЦПУ. Производители процессоров со временем формировали свои спецификации на блоки IOMMU, например, Intel (технология VT-d), AMD (технология AMD-Vi), ARM (технология SMMU), Apple (технология DART). 


Однако, использование прямого DMA-доступа к памяти даже с защитным IOMMU-блоком при реализации в различных ОС имеет свои особенности:


1) Разработчики заложили в архитектуру ОС ошибочное предположение о возможности доверять периферийным устройствам.


2) Ввиду того, что работа с DMA-устройствами через блок IOMMU замедляет обмен данными, не во всех ОС и прошивках материнских плат поддержка IOMMU включена по умолчанию. Кроме того, не все ОС в принципе поддерживают IOMMU.


3) Блок IOMMU может быть подвержен пространственной уязвимости подстраниц памяти (англ. Spatial sub-page vulnerability): выделяемая IOMMU страница виртуальной памяти может содержать не только необходимые DMA-устройству данные (небольшие буферы ввода-вывода), но и буферы ядра ОС, что позволяет DMA-устройству получить доступ и к ним. Кроме того, указатели на функции драйвера устройства или объекты ОС могут находиться на той же странице виртуальной памяти, что и буферы ввод-вывода DMA-устройства.


4) Блок IOMMU может быть подвержен временной уязвимости отсроченного аннулирования (англ. Temporal deferred invalidation vulnerability): сопоставление между виртуальной и физической памятью в IOMMU управляется ОС, которая в целях оптимизации производительности может выполнять такой сброс с некоторой задержкой, что позволяет DMA-устройству сохранять доступ к страницам памяти.


5) В стандарте PCI Express предусмотрена функция ATS (Address Translation Service), которая позволяет совместимому DMA-устройству, подключенному по шине PCI Express, самостоятельно выполнять трансляцию виртуальных адресов в физические в обход IOMMU.

 

Более подробную информацию об особенностях описанных уязвимостей можно получить из следующих публикаций:

https://thunderclap.io/wp-content/uploads/2024/01/thunderclap-paper-ndss2019.pdf

https://www.cs.tau.ac.il/~mad/publications/eurosys2021-dma.pdf

https://www.usenix.org/system/files/usenixsecurity24-wang-xingkai.pdf

 

Описанные особенности позволяют DMA-устройству получить неограниченный доступ ко всей оперативной памяти для чтения чувствительной информации (пароли, ключи шифрования), для разблокирования работающего ПК без пароля и для запуска произвольного кода в наиболее привилегированном режиме ("Ring 0"). Подобные нюансы были изучены исследователями ИБ в середине 2000-х годов: например, на конференции CanSecWest в 2005 году был продемонстрирован запуск произвольного кода на Windows-ноутбуке, к которому по FireWire был подключен iPod с кастомизированной Linux-прошивкой. Подобные уязвимости стали массовыми в 2010-х годах, например, в 2016 году ИБ-исследователь показал возможность извлечения паролей из Mac-ноутбуков с помощью устройства, названного PCILeech - этот проект развивается по сей день и поддерживает реализацию DMA-атак с помощью устройства Screamer PCIe Squirrel. Кроме того, доступен и ряд других инструментов для прямого доступа к оперативной памяти, например проект Inception позволяет использовать для атаки хосты под управлением Linux или Mac OS X, оснащенные интерфейсом FireWire. DMA-доступ к оперативной памяти используется и для форензики (компьютерной криминалистики), например, в решениях Rekall Memory Forensic Framework, Volatility Framework, Velociraptor DFIR.

 

Для защиты от DMA-атак можно применять различные решения и обходные пути:


1) Microsoft предлагает использовать функцию Kernel DMA Protection (kDMAp) или, если эта функция не поддерживается ЦПУ или установленной версией ОС (Windows 10 версии 1709 и ниже), то предлагается полностью блокировать устройства Thunderbolt и IEEE 1394, а также не использовать спящий режим (sleep mode) и вместе с BitLocker применять предварительную аутентификацию (Preboot authentication), например, за счет ввода пин-кода при работе TPM-модуля.


2) Для Linux предпочтительно использовать ядро версии 5.0 и выше, в котором была добавлена поддержка технологии kDMAp.


3) Рекомендуется использовать актуальные версии UEFI-прошивок, включать в UEFI поддержку IOMMU и технологий Secure Boot и Trusted Boot, а также использовать современные ЦПУ с поддержкой IOMMU и kDMAp.


4) Для интерфейса Thunderbolt (версии 3 и выше) в UEFI можно настроить использование уровней безопасности SL2 (Secure Connection) или SL3 (только DisplayPort и USB).


5) Применять меры физической безопасности: не оставлять устройства без присмотра, блокировать рабочую станцию даже при отлучении на короткое время, отключать ненужные интерфейсы в UEFI с установкой пароля на изменение настроек UEFI.


6) Внедрять использование аутентификации и подписи указателей, например, по аналогии с технологией Pointer Authentication в архитектуре ARM.


7) Применять полнодисковое шифрование (хотя это не относится напрямую к DMA-атакам): при работе виртуальной памяти большинство ОС создают файлы подкачки (swap-файл в Linux, pagefile.sys в Windows), в которых может находится полезная для атакующих информация. Кроме того, при использовании режима гибернации на накопителе устройства также создается специальный файл, в который копируется вся информация из ОЗУ перед переходом в этот режим.

ИБ для начинающих Практика ИБ Угрозы ИБ

Похожие статьи

Фишинг – что это такое, как защититься от фишинговых атак и писем. Часть 1
Фишинг – что это такое, как защититься от фишинговых атак и писем. Часть 1
Сравнительный обзор: Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP. Часть 2
Сравнительный обзор: Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP. Часть 2
Fingerprint браузера - что это
Fingerprint браузера - что это
Возможности обновленных продуктов Security Vision SOAR и NG SOAR
Возможности обновленных продуктов Security Vision SOAR и NG SOAR
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Спам – что это такое, каким бывает и есть ли в нем польза
Спам – что это такое, каким бывает и есть ли в нем польза
От пользовательского пути к защищённым системам: как UX / UI влияет на кибербезопасность
От пользовательского пути к защищённым системам: как UX / UI влияет на кибербезопасность
Расследование инцидентов и использование специализированных инструментов
Расследование инцидентов и использование специализированных инструментов
Как regreSSHion открыл новую главу в старых атаках OpenSSH
Как regreSSHion открыл новую главу в старых атаках OpenSSH
Облачные версии решений по информационной безопасности: плюсы и минусы
Облачные версии решений по информационной безопасности: плюсы и минусы
Мобильные угрозы, способы их выявления и предотвращения: как узнать, есть ли в телефоне вирус, и удалить его
Мобильные угрозы, способы их выявления и предотвращения: как узнать, есть ли в телефоне вирус, и удалить его

Похожие статьи

Фишинг – что это такое, как защититься от фишинговых атак и писем. Часть 1
Фишинг – что это такое, как защититься от фишинговых атак и писем. Часть 1
Сравнительный обзор: Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP. Часть 2
Сравнительный обзор: Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP. Часть 2
Fingerprint браузера - что это
Fingerprint браузера - что это
Возможности обновленных продуктов Security Vision SOAR и NG SOAR
Возможности обновленных продуктов Security Vision SOAR и NG SOAR
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Спам – что это такое, каким бывает и есть ли в нем польза
Спам – что это такое, каким бывает и есть ли в нем польза
От пользовательского пути к защищённым системам: как UX / UI влияет на кибербезопасность
От пользовательского пути к защищённым системам: как UX / UI влияет на кибербезопасность
Расследование инцидентов и использование специализированных инструментов
Расследование инцидентов и использование специализированных инструментов
Как regreSSHion открыл новую главу в старых атаках OpenSSH
Как regreSSHion открыл новую главу в старых атаках OpenSSH
Облачные версии решений по информационной безопасности: плюсы и минусы
Облачные версии решений по информационной безопасности: плюсы и минусы
Мобильные угрозы, способы их выявления и предотвращения: как узнать, есть ли в телефоне вирус, и удалить его
Мобильные угрозы, способы их выявления и предотвращения: как узнать, есть ли в телефоне вирус, и удалить его