22.06.2021

Демонстрация атаки на редакторы кода, приводящей к утечке файлов при открытии исходных текстов

Продемонстрирован метод атаки на редактор кода VSCode, позволяющий передать произвольные системные файлы при открытии в редакторе специально оформленного исходного кода. В предложенной демонстрации при открытии кода на языке Rust, в котором используется процедурный макрос, выполняется установка соединения с хостом 127.0.0.1:8080 и отправка содержимого файла «~/.ssh/id_rsa» с SSH-ключами пользователя.

Для компрометации достаточно просто открыть файл с кодом, без выполнения каких-либо других действий с проектом. Для работы примера требуется наличие в VSCode плагина rust-analyzer (обвязка над штатным компилятором rustc) и наличие в системе инструментария для работы с кодом на языке Rust. Проблема связана с раскрытием процедурных макросов во время начального анализа кода. Аналогичного эффекта также можно добиться во время компиляции с использованием команды «cargo build».

Отмечается, что проблема может затрагивать другие редакторы кода и языки программирования. VSCode и rust-analyze использованы лишь для демонстрации вектора атаки. Теоретически проблеме подвержен любой редактор кода, раскрывающий процедурные макросы, позволяющие создавать расширения синтаксиса и выполнять код на этапе компиляции. Изначально исследователь изучал возможность совершения вредоносных действий во время компиляции кода, но обнаружил, что процедурные макросы раскрываются при обработке исходных текстов в редакторах кода. Вероятно атака может затрагивать и другие языки программирования, например, в Java похожим образом можно манипулировать с обработкой аннотаций.

[embedded content]
Источник.