Появление в JavaScript средств для копирования и изменения данных в буфере обмена открыло двери для организации нового вида атаки по подстановке дополнительных команд при вставке данных в терминал из буфера обмена.
В отличие от ранее предложенной атаки, основанной на размещении невидимого блока «span», новая атака подменяет данные силами JavaScript, отслеживая событие копирования из текущего окна браузера в буфер обмена и через 800 мс после определения нажатия Ctrl+C осуществляя добавление дополнительных данных в буфер обмена. При этом браузер не запрашивает у пользователя подтверждения операции по изменению содержимого буфера обмена. Метод также предоставляет более простой способ подстановки в буфер обмена спецсимволов и шестнадцатеричных последовательностей (например, «x1b»), которые могут применяться для атаки на vim.
В демонстрационном примере предлагается скопировать в буфер обмена строку «echo not evil», при вставке которой в терминал будет выведена последовательность:
echo "evil"n
Для скрытия лишнего ввода можно использовать команду «clear» или «echo -ne ’33[1F33[2K'», например, в данном примере будет выполнено:
touch ~/.evil clear echo "not evil"