DMA-атака

DMA-атака — тип атаки по сторонним каналам в компьютерной безопасности, при которой злоумышленник может получить доступ к компьютеру или другому устройству, используя высокоскоростные интерфейсы расширения, позволяющие осуществлять прямой доступ к памяти (Direct Memory Access, DMA)[1].

DMA используется в различных типах подключений, так как позволяет подключённым устройствам (например, видеокамере, сетевой карте, запоминающему устройству, другим периферийным устройствам или внутренним платам расширения) обмениваться данными с компьютером на максимально возможной скорости посредством прямого аппаратного доступа к основной памяти, минуя контроль и участие операционной системы. Легитимное использование таких устройств привело к широкому распространению аксессуаров и интерфейсов с поддержкой DMA. Однако злоумышленные устройства, использующие тот же тип подключения, могут аналогично получить прямой доступ ко всей или части физического адресного пространства оперативной памяти компьютера, обходя механизмы защиты операционной системы и любые экраны блокировки. Это позволяет атакующему отслеживать всю деятельность компьютера, похищать данные и криптографические ключи, устанавливать или запускать шпионские программы и другие эксплойты, а также модифицировать систему для создания бэкдоров или другого вредоносного программного обеспечения[2].

Предотвращение физического подключения к подобным портам является эффективной мерой защиты от DMA-атак. На многих компьютерах интерфейсы с поддержкой DMA также можно отключить в настройках BIOS или UEFI, если они не используются, что в зависимости от устройства позволяет полностью устранить или существенно снизить вероятность подобных атак[3].

Примеры интерфейсов, которые могут позволять DMA-доступ и быть потенциально уязвимыми для подобных атак: FireWire, CardBus, ExpressCard, Thunderbolt, USB 4, PCI, PCI-X и PCI Express[4].

Описание

В современных операционных системах приложениям, работающим в пользовательском режиме (user-mode), запрещён доступ к тем участкам памяти, которые не были явно разрешены контроллером виртуальной памяти — блоком управления памятью (Memory Management Unit, MMU). Помимо ограничения ущерба от возможных программных ошибок и более эффективного использования физической памяти, такая архитектура играет ключевую роль в обеспечении безопасности операционной системы. Однако драйверы, работающие в режиме ядра (kernel-mode), многие аппаратные устройства, а также уязвимости в приложениях пользовательского режима могут предоставить прямой и беспрепятственный доступ к физическому адресному пространству памяти. Это физическое адресное пространство включает в себя всю системную оперативную память, а также области памяти, отображаемые на шины и аппаратные устройства (доступ к которым операционная система осуществляет с помощью операций чтения и записи, аналогично обычной оперативной памяти)[1].

Спецификация OHCI 1394 разрешает устройствам в целях повышения производительности осуществлять прямой доступ к физической памяти, минуя операционную систему и без каких-либо ограничений безопасности[5][6]. Однако устройства, использующие протокол SBP2, могут быть легко подделаны, что позволяет злоумышленнику обмануть операционную систему и получить возможность произвольно читать и записывать физическую память. Это открывает несанкционированный доступ к конфиденциальным криптографическим данным, хранящимся в памяти[7].

Системы могут оставаться уязвимыми для DMA-атак со стороны внешних устройств, если имеют порты расширения (например, FireWire, ExpressCard, Thunderbolt или другие), которые, подобно интерфейсам PCI и PCI Express, обеспечивают подключённым устройствам прямой доступ к физическому (а не виртуальному) адресному пространству памяти. Таким образом, даже системы, лишённые встроенного FireWire-порта, могут быть уязвимы, если у них присутствуют слоты PCMCIA, CardBus, PC Card или ExpressCard, позволяющие установить карту расширения с интерфейсом FireWire[8].

Использование

Например, злоумышленник может использовать приём социальной инженерии, отправив «счастливому победителю» вредоносное устройство с интерфейсом Thunderbolt. При подключении к компьютеру такое устройство, благодаря прямому и беспрепятственному доступу к физическому адресному пространству памяти, способно обойти практически любые защитные механизмы операционной системы. Таким образом атакующий сможет получить доступ к ключам шифрования, установить вредоносное ПО или получить контроль над другими аппаратными компонентами системы. Кроме того, такая атака может быть легко осуществлена, если злоумышленник имеет физический доступ к целевому компьютеру.

Помимо вышеупомянутых неблаговидных применений, существуют и некоторые полезные применения, например, функции DMA могут использоваться для отладки ядра[9]

Для осуществления DMA-атаки существует инструмент под названием Inception, требующий лишь наличия у атакующего устройства расширения, восприимчивого к подобной атаке. Другим известным примером приложения, эксплуатирующего данную уязвимость и позволяющего получить несанкционированный доступ к работающим компьютерам под управлением Windows, Mac OS и Linux, является шпионская программа FinFireWire.

Использование в сфере читерства в видеоиграх

DMA-атаки нашли применение в сфере читерства в видеоиграх, предоставляя злоумышленникам возможность обходить традиционные античит-системы. Используя специализированное аппаратное обеспечение, такие как PCIe-карты с прямым доступом к памяти, читеры получают возможность считывать и изменять данные игры в реальном времени, оставаясь незамеченными для программных средств защиты. Например, в игре Valorant, несмотря на наличие продвинутой античит-системы Vanguard, были зафиксированы случаи использования DMA-читов, что побудило разработчиков усилить меры безопасности, включая блокировку подозрительных устройств и сотрудничество с Microsoft для интеграции аппаратных функций безопасности Windows[10].

Разработчики других игр также предпринимают шаги по борьбе с DMA-читами. Так, команда GTI Security, отвечающая за защиту игры Delta Force, внедрила аппаратные меры защиты, расширенное шифрование данных и создала базу данных устройств, используемых для DMA-атак, что позволяет выявлять и блокировать подозрительное оборудование[11] .

Тем не менее, борьба с DMA-читами остаётся сложной задачей, требующей постоянного обновления методов защиты и тесного сотрудничества между разработчиками игр и производителями аппаратного обеспечения[10].

Методы защиты

DMA-атаки могут быть предотвращены с помощью физической защиты, не допускающей подключения потенциально вредоносных устройств к компьютеру.

Драйверы, работающие в режиме ядра, обладают широкими возможностями, которые могут поставить под угрозу безопасность системы, поэтому необходимо тщательно следить за загрузкой только доверенных и лишённых ошибок драйверов. Например, современные 64-разрядные версии Windows требуют, чтобы драйверы были проверены и имели цифровую подпись от Microsoft, предотвращая установку любых неподписанных драйверов.

IOMMU (Input–Output Memory Management Unit) — технология, применяющая концепцию виртуальной памяти к системным шинам, что позволяет устранить описанную уязвимость (а также повысить стабильность работы системы). Компания Intel использует для своей реализации IOMMU торговую марку VT-d, а компания AMDAMD-Vi. Современные операционные системы поддерживают данные реализации IOMMU[12][13][14] и могут использовать их для блокировки операций ввода-вывода, которые не были предварительно разрешены.

Современные операционные системы предпринимают меры для предотвращения DMA-атак. В частности, последние версии ядра Linux содержат опцию, позволяющую отключить DMA-доступ для устройств, подключённых через интерфейс FireWire, сохраняя при этом остальные функции таких устройств[15]. В Windows 8.1 также реализована возможность блокировки доступа к DMA-портам, когда консоль компьютера находится в заблокированном состоянии[16]. Однако по состоянию на 2019 год основные разработчики операционных систем всё ещё недостаточно учитывали сложные сценарии, при которых вредоносные устройства могут эксплуатировать тонкие ошибки и уязвимости, возникающие при взаимодействии нескольких эмулируемых периферийных устройств[17].

Ещё одним способом защиты от DMA-атак является запрет на хранение конфиденциальных данных в оперативной памяти (RAM) в незашифрованном виде. Однако одной защиты от чтения содержимого памяти недостаточно, поскольку запись в память посредством DMA может привести к компрометации внешних защищённых хранилищ путём инъекции вредоносного кода. Примером подобной атаки является TRESOR-HUNT, позволяющая получить доступ к криптографическим ключам, которые никогда не сохраняются в оперативной памяти (а находятся только в определённых регистрах процессора). TRESOR-HUNT достигает этого, перезаписывая отдельные части операционной системы.

Примечания

  1. 1 2 Robison, Ariella. Memory Lane - Direct Memory Access Attacks | Eclypsium (амер. англ.). Eclypsium | Supply Chain Security for the Modern Enterprise (31 января 2020). Дата обращения: 21 апреля 2025.
  2. Hacker Journal From 2016-03 | PDF. Scribd. Дата обращения: 21 апреля 2025.
  3. DMA attacks | Device Control Plus. www.manageengine.com. Дата обращения: 21 апреля 2025.
  4. Direct Memory Access (DMA) attacks. Risks, techniques, and mitigations in hardware hacking | Pen Test Partners. www.pentestpartners.com. Дата обращения: 21 апреля 2025.
  5. Freddie Witherden. Memory Forensics Over the IEEE 1394 Interface (7 сентября 2010). Дата обращения: 22 мая 2024.
  6. Piegdon, David Rasmus (21 февраля 2006). Hacking in Physically Addressable Memory - A Proof of Concept (PDF). Seminar of Advanced Exploitation Techniques, WS 2006/2007.
  7. Blocking the SBP-2 Driver to Reduce 1394 DMA Threats to BitLocker. Microsoft (4 марта 2011). Дата обращения: 15 марта 2011.
  8. What Is a DMA Attack? Analysis & Mitigation (англ.). Kroll. Дата обращения: 21 апреля 2025.
  9. Tom Green. 1394 Kernel Debugging: Tips And Tricks. Microsoft. Дата обращения: 2 апреля 2011. Архивировано из оригинала 9 апреля 2011 года.
  10. 1 2 Warren, Tom. Valorant is winning the war against PC gaming cheaters (амер. англ.). The Verge (4 ноября 2024). Дата обращения: 21 апреля 2025.
  11. Delta Force Enhances DMA Cheat Protection: GTI Security Releases Progress Report // GameGPU.
  12. /linux/Documentation/Intel-IOMMU.txt (14 июля 2014). Архивировано из оригинала 14 июля 2014 года.
  13. Linux Kernel Driver DataBase: CONFIG_AMD_IOMMU: AMD IOMMU support. cateee.net.
  14. Dansimp. Kernel DMA Protection (Windows 10) - Microsoft 365 Security (амер. англ.). docs.microsoft.com. Дата обращения: 16 февраля 2021.
  15. Hermann, Uwe. Physical memory attacks via FireWire/DMA - Part 1: Overview and Mitigation (14 августа 2008). Архивировано из оригинала 4 марта 2016 года.
  16. Countermeasures: Protecting BitLocker-encrypted Devices from Attacks. Microsoft (январь 2014). Архивировано из оригинала 24 марта 2014 года.
  17. Thunderclap: Exploring Vulnerabilities in Operating System IOMMU Protection via DMA from Untrustworthy Peripherals – NDSS Symposium (амер. англ.). Дата обращения: 21 января 2020.