Как стать автором
Обновить

Комментарии 13

Спасибо, статья — огонь! :)
На сколько я понимаю, от DMA атаки можно защититься через IOMMU (VTd или AMD-Vi). Где-нибудь такое используется?
Правильно понимаете, а я банально забыл про это упомянуть, каюсь. Реального использования IOMMU для защиты от DMA-атак я не видел пока, но думаю, что еще увижу, а если чипсеты AMD, которые мы сейчас используем, окажутся ей подвержены, то придется реализовавывать защиту самому.
НЛО прилетело и опубликовало эту надпись здесь
Про механизм этот я в тексте упомянул. Я не вникал в реализацию IOMMU на процессорах Intel, но на AMD можно выделить определенные области под DMA Remap еще в прошивке и залочить их намертво до перезагрузки.
Честно сказать — глубоко в этом направлении не копал, поэтому ничего утверждать не буду.
Ну мы давно используем его для защиты от DMA атак, но, правда, не из UEFI, а из своего варианта Linux+KVM.
Тут проблема в том, что IOMMU работает далеко не на всех мамках, даже если чипсет его поддерживает. Я, если честно, пока не копал почему. А еще многие мамки имеют 1-2 IOMMU домена на все устройства, т.е. нельзя для конкретного устройства разрешить запись куда-то, а для другого запретить, что довольно уныло :(
На сколько я понял вы сами делаете мамки, так что для вас эта проблема не очень актуальна.
Именно так, сами делаем модули и сами к ним БИОСы пишем (понятно, что не с нуля, но тем не менее), поэтому можем обойтись и без IOMMU, но никогда ведь не знаешь, какой 0day найдут послезавтра…
НЛО прилетело и опубликовало эту надпись здесь
Хорошее дополнение, спасибо.
Я просто в последнее время работаю с системами на AMD, и этот момент совершенно вылетел из головы. У AMD TSEG задается двумя MSR — TSegBase и TsegMask, и потому такой проблемы там не возникает.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Кстати, насколько помню coreboot, в нём SMM обработчики отсутствуют (про куски AMDшной PI, и схожего с ним интеловского blob-а ничего не скажу, там оно вполне себе может жить). Такчто параноиками и диким любителям безопасности могу порекомендовать перелезть на coreboot с открытой agesa-ой (тоесть на 10-15 семейство амдшных процессоров). Далее залочить флешку и жить спокойно.
Добавлю, что халява уже кончилась, и более новые процессоры AMD содержат в себе PSP, которому нужен собственный NVRAM с доступом на запись.

Во-первых, спасибо, Николай, за счастливое детство и цикл статей по NVRAM

Во-вторых, расскажу про Интелловскую VT-d, вдруг пригодится кому. Там за защиту от DMA отвечает контроллер DMA Remapping unit (возможно, несколько), который перехватывает DMA-запросы и сверяет с управляющими структурами. Структуры следующие: Root-Entry table, Context-Entry table для описания каждой PCI-шины и каждого PCI-устройства (в том числе и функции). Для каждого устройства формируется многоуровневая таблица страниц, по которой DMAR unit проходится, исходя из адреса, который был в запросе. В итоге он получает права доступа, которые предоставлены устройству (чтение\запись\выполнение) и область памяти, на которую необходимо перенаправить запрос. Если возникает какая-то ошибка, вызывается callback, который может считать инфу об ошибке из специальных регистров.

Таким образом получается и изолировать устройства друг от друга, и защитить память, и логирование устроить . Можно также перенаправлять запросы на исходный адрес, просто настроить права доступа и получить просто защиту.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории