Атака DMA — это тип атаки по побочным каналам в компьютерной безопасности , при которой злоумышленник может проникнуть в компьютер или другое устройство, используя наличие высокоскоростных портов расширения, которые разрешают прямой доступ к памяти (DMA).
DMA включен в ряд соединений, поскольку он позволяет подключенному устройству (например, видеокамере , сетевой карте , устройству хранения данных или другому полезному аксессуару или внутренней карте ПК ) передавать данные между собой и компьютером на максимально возможной скорости, используя прямой аппаратный доступ для чтения или записи непосредственно в основную память без какого-либо контроля или взаимодействия со стороны операционной системы . Законное использование таких устройств привело к широкому внедрению аксессуаров и соединений DMA, но злоумышленник может в равной степени использовать ту же возможность для создания аксессуара, который будет подключаться с использованием того же порта, а затем потенциально может получить прямой доступ к части или всему адресному пространству физической памяти компьютера, обходя все механизмы безопасности ОС и любой экран блокировки , чтобы прочитать все, что делает компьютер, украсть данные или криптографические ключи , установить или запустить шпионское ПО и другие эксплойты или изменить систему, чтобы разрешить бэкдоры или другие вредоносные программы.
Предотвращение физических подключений к таким портам предотвратит атаки DMA. На многих компьютерах подключения, реализующие DMA, также могут быть отключены в BIOS или UEFI , если они не используются, что в зависимости от устройства может свести на нет или уменьшить потенциал для этого типа эксплойта.
Примерами подключений, которые могут допускать использование DMA в той или иной форме, являются FireWire , CardBus , ExpressCard , Thunderbolt , USB 4.0 , PCI , PCI-X и PCI Express .
В современных операционных системах несистемным (т. е. пользовательским ) приложениям запрещен доступ к любым ячейкам памяти, явно не разрешенным контроллером виртуальной памяти (называемым блоком управления памятью (MMU)). Помимо сдерживания ущерба, который может быть вызван недостатками программного обеспечения, и обеспечения более эффективного использования физической памяти, эта архитектура является неотъемлемой частью безопасности операционной системы. Однако драйверы режима ядра, многие аппаратные устройства и уязвимости пользовательского режима обеспечивают прямой, беспрепятственный доступ к адресному пространству физической памяти. Физическое адресное пространство включает в себя всю основную системную память, а также шины, отображенные в память, и аппаратные устройства (которые управляются операционной системой посредством чтения и записи, как если бы они были обычной оперативной памятью).
Спецификация OHCI 1394 позволяет устройствам, в целях повышения производительности, обходить операционную систему и получать доступ к физической памяти напрямую без каких-либо ограничений безопасности. [1] [2] Однако устройства SBP2 можно легко подделать , что позволяет обмануть операционную систему, позволив злоумышленнику как считывать, так и записывать физическую память, и тем самым получить несанкционированный доступ к конфиденциальным криптографическим материалам в памяти. [3]
Системы по-прежнему могут быть уязвимы для атаки DMA внешним устройством, если у них есть FireWire , ExpressCard , Thunderbolt или другой порт расширения, который, как и PCI и PCI Express в целом, подключает подключенные устройства напрямую к физическому, а не виртуальному адресному пространству памяти. Поэтому системы, не имеющие порта FireWire, могут по-прежнему быть уязвимы, если у них есть порт PCMCIA / CardBus / PC Card или ExpressCard, который позволяет установить карту расширения с FireWire.
Например, злоумышленник может использовать атаку социальной инженерии и отправить «счастливчику» мошенническое устройство Thunderbolt. При подключении к компьютеру устройство, благодаря своему прямому и беспрепятственному доступу к физическому адресному пространству, сможет обойти почти все меры безопасности ОС и получить возможность считывать ключи шифрования, устанавливать вредоносное ПО или управлять другими системными устройствами. Атаку также можно легко осуществить, если злоумышленник имеет физический доступ к целевому компьютеру.
Помимо вышеупомянутых неблаговидных применений, существуют и некоторые полезные применения, например, функции DMA могут использоваться для отладки ядра . [4]
Для этой атаки существует инструмент под названием Inception [5] , требующий только машины с портом расширения, восприимчивым к этой атаке. Другое приложение, известное тем, что использует эту уязвимость для получения несанкционированного доступа к работающим компьютерам Windows, Mac OS и Linux, — это шпионская программа FinFireWire .
Атаки DMA можно предотвратить с помощью физической защиты от потенциально вредоносных устройств.
Драйверы режима ядра имеют много возможностей для нарушения безопасности системы, и необходимо проявлять осторожность при загрузке надежных драйверов без ошибок. Например, последние 64-битные версии Microsoft Windows требуют, чтобы драйверы были протестированы и имели цифровую подпись Microsoft, и предотвращают установку любых неподписанных драйверов.
IOMMU — это технология , которая применяет концепцию виртуальной памяти к таким системным шинам и может использоваться для закрытия этой уязвимости безопасности (а также для повышения стабильности системы). Intel маркирует свой IOMMU как VT-d. AMD маркирует свой IOMMU как AMD-Vi. Linux и Windows 10 поддерживают эти IOMMU [6] [7] [8] и могут использовать их для блокировки неразрешенных транзакций ввода-вывода.
Новые операционные системы могут принимать меры для предотвращения атак DMA. Последние ядра Linux включают возможность отключения DMA через устройства FireWire, при этом разрешая другие функции. [9] Windows 8.1 может запретить доступ к портам DMA необслуживаемой машины, если консоль заблокирована. [10] Но по состоянию на 2019 год основные поставщики ОС не принимали во внимание множество способов, которыми вредоносное устройство может воспользоваться сложным взаимодействием между несколькими эмулированными периферийными устройствами, выявляя тонкие ошибки и уязвимости. [11]
Никогда не позволяйте конфиденциальным данным храниться в ОЗУ в незашифрованном виде — это еще один способ смягчения последствий атак DMA. Однако защиты от чтения содержимого ОЗУ недостаточно, поскольку запись в ОЗУ через DMA может поставить под угрозу, казалось бы, безопасное хранилище за пределами ОЗУ путем внедрения кода . Примером последнего типа атаки является TRESOR-HUNT, которая раскрывает криптографические ключи, которые никогда не хранятся в ОЗУ (а только в определенных регистрах ЦП); TRESOR-HUNT достигает этого путем перезаписи частей операционной системы. [12]
Microsoft рекомендует внести изменения в конфигурацию Windows по умолчанию, чтобы предотвратить это, если это вызывает беспокойство. [13]