imageНа сервере github появились два проекта, использующие неожиданную уязвимость – возможность исполнения шпионящих за компьютером программ при помощи видеопроцессора. Уязвимость была впервые описана в исследовательской работе 2013 года под названием "Печатать можно, спрятаться нельзя: кейлогер на основе GPU".

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

И вот, пожалуйста – проекты Jellyfish rootkit и Demon keylogger доказывают на деле возможность такого подхода. Никак не модифицируя ядро системы, они работают за счёт видеокарты. Вот что пишет создатель проекта под ником x0r1:

Jellyfish – работающий под Linux руткит в стадии «proof of concept» (доказательство возможности работы), использующий технику LD_PRELOAD из Jynx (CPU), а также OpenCL API, разработанный Khronos group (GPU). В данный момент код работает с видеокартами AMD и NVIDIA. Кроме этого AMDAPPSDK также поддерживает и Intel.

До этого зловреды, использующие GPU, попадались разве что среди программ, тайно майнящих биткоины на видеокарте компьютера. И конечно, они не работали целиком на GPU, а использовали его только для непосредственных расчётов.

Комментарии (8)


  1. tzlom
    08.05.2015 23:27
    +2

    Круто, но без передачи данных кейлогер смысла не имеет а это всё равно на CPU должно делаться.
    Хотя теоретически через тот же DMA становится уязвимым любой софт и OH SHI~


    1. Disasm
      09.05.2015 00:26

      Можно таргетированно в сетевые пакеты подмешивать, если знать где что лежит.


    1. ToSHiC
      09.05.2015 01:43
      +2

      Просто посмотрите вот эти слайды: www.alchemistowl.org/arrigo/Papers/Arrigo-Triulzi-PACSEC08-Project-Maux-II.pdf


  1. nerudo
    09.05.2015 00:46
    +6

    Век живи — дураком помрешь(ц)
    Всю жизнь считал, что для dma-обмена устройству выделяется определенный диапазон, и если оно пытается выйти за границы — ему дают по шапке.


    1. bolk
      09.05.2015 13:03

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


    1. vikarti
      09.05.2015 14:17
      +4

      в железе с поддержкой IOMMU ( en.wikipedia.org/wiki/List_of_IOMMU-supporting_hardware ) — дают. и на этом базируются в том числе многие хитрые схемы с поддержкой проброса видеокарт в виртуалки


  1. kahi4
    10.05.2015 18:03

    Пфф. Читал, как считывали нажатия клавиш по скачкам напряжения на БП, а тут какой-то easy-mod. (Правда отношусь к тому способу со скептицизмом, и думаю. что сработает разве что с PS/2 клавиатурой, тем не менее).

    Вот меня мучает вопрос: допустим, кто-то запустил программу, части которой написаны на низкоуровневом языке или вообще ассемблере. Как следствие — она спокойно может переписать вектор прерываний по таймеру и заменить системный планировщик. Собственно, тогда она уже будет неуязвимой. А что и где она будет писать заранее сказать сложно. Как с таким борятся? Вектор прерываний по таймеру можно задать только раз при загрузке системы? Или считается, что если будет такая атака, то все — только тотальная чистка?
    P.S. Руткит работает ведь несколько иначе — он маскируется под системный процесс или службу.


    1. coolspot
      11.05.2015 21:17

      Защищённый режим x86 не даст программе что-то заменить в прерываниях.
      На реальном процессоре запускается только ОС и ставит свои хэндлеры на всё, а программа уже исполняется в контроллируемой среде, где память и всё другое виртуализировано.