Техника добавления вредоносного контента в буфер обмена пользователя при помощи CSS, известна давно. Ничего не подозревающая жертва копирует с сайта, вместе с куском кода, нежелательную команду, которая впоследствии будет вставлена в терминал из буфера обмена. Данная техника атак имеет ряд очевидных минусов, но теперь ей на замену предлагают похожий и куда более опасный вектор атак, использующий JavaScript.
При помощи CSS действительно можно добавить в буфер обмена жертвы что-нибудь нехорошее, но есть одна проблема: жертва должна скопировать что-то с сайта злоумышленника, а потом вставить эти данные в терминал и выполнить команду, не заметив подвоха. По понятным причинам подобные атаки — это скорее теоретический концепт, на практике их используют редко.
Независимый исследователь Дилан Эйри (Dylan Ayrey) решил стряхнуть пыль с этой методики и вдохнуть в нее новую жизнь. Похоже, ему это удалось. Эйри предложил использовать JavaScript вместо CSS, что делает атаку гораздо опаснее. Исследователь уже представил свой proof-of-concept, назвав новый вектор атак Pastejacking. Эйри поясняет:
«Разница в том, что в данном случае текст может быть скопирован в буфер непосредственно после [нажатия CTRL + C], может быть скопирован спустя некоторое время, а также это простой способ добавления в буфер и шестнадцатеричных символов, которые могут быть использованы для атаки на VIM».
JavaScript действует гораздо хитрее, чем CSS. Теперь пользователю не нужно копировать весь вредоносный текст с сайта в буфер, будет достаточно и пары символов. В теории, злоумышленник может добавить вредоносный Pastejacking код на всю страницу, и если жертва скопирует и вставит в консоль что-либо с такого сайта, за ее спиной будет выполнена вредоносная команда. Хуже того, жертве даже не нужно будет нажимать Enter, чтобы команда в терминале выполнилась, в ряде случаев хватит и простого CTRL+V.
Эйри опубликовал демо, в котором наглядно продемонстрировал, как атакующий может запустить вредоносный код на удаленной машине, очистить консоль, а затем снова добавить туда код, скопированный пользователем, чтобы последний ничего не заметил.
К примеру, у пользователя что-то случилось, и он нашел в сети полезную статью с командами для cmd.exe. Жертва копирует кусок кода из статьи, и вредоносный сайт добавляет в буфер обмена десяток строк кода, скачивает с удаленного сервера малварь и устанавливает ее на машину пользователя. Все это происходит без ведома жертвы и без каких-либо предупреждений, в консоли пользователь видит ровно то, что копировал с сайта.
Так, простейшее демо, созданное Эйри, предлагает скопировать с сайта строку
echo "not evil"
которая в консоли будет подменена на строку
echo "evil"\n
Для сокрытия вредоносной деятельности, как описано выше, Эйри тоже предложил простое решение:
touch ~/.evil
clear
echo "not evil"
Замечу, что для срабатывания атаки копирование нужно осуществлять с клавиатуры, если копировать мышью, трюк не работает.
Защититься от подобных атак несложно, так, Эйри советует проверять, что именно вы собираетесь вставить в терминал из буфера обмена. Для этого, к примеру, можно сначала вставлять код в тестовый редактор.