Продемонстрирован метод атаки на редактор кода VSCode, позволяющий передать произвольные файлы в рамках прав текущего пользователя при открытии в редакторе специально оформленного исходного кода. В предложенной демонстрации при открытии кода на языке Rust, в котором используется процедурный макрос, выполняется установка соединения с хостом 127.0.0.1:8080 и отправка содержимого файла "~/.ssh/id_rsa" с SSH-ключами пользователя.
Для компрометации достаточно просто открыть файл с кодом, без выполнения каких-либо других действий с проектом. Для работы примера требуется наличие в VSCode плагина rust-analyzer (обвязка над штатным компилятором rustc) и наличие в системе инструментария для работы с кодом на языке Rust. Проблема связана с раскрытием процедурных макросов во время начального анализа кода. Аналогичного эффекта также можно добиться во время компиляции с использованием команды "cargo build".
Отмечается, что проблема может затрагивать другие редакторы кода и языки программирования. VSCode и rust-analyze использованы лишь для демонстрации вектора атаки. Теоретически проблеме подвержен любой редактор кода, раскрывающий процедурные макросы, позволяющие создавать расширения синтаксиса и выполнять код на этапе компиляции. Изначально исследователь изучал возможность совершения вредоносных действий во время компиляции кода, но обнаружил, что процедурные макросы раскрываются при обработке исходных текстов в редакторах кода. Вероятно атака может затрагивать и другие языки программирования, например, в Java похожим образом можно манипулировать с обработкой аннотаций.
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=55159
Для компрометации достаточно просто открыть файл с кодом, без выполнения каких-либо других действий с проектом. Для работы примера требуется наличие в VSCode плагина rust-analyzer (обвязка над штатным компилятором rustc) и наличие в системе инструментария для работы с кодом на языке Rust. Проблема связана с раскрытием процедурных макросов во время начального анализа кода. Аналогичного эффекта также можно добиться во время компиляции с использованием команды "cargo build".
Отмечается, что проблема может затрагивать другие редакторы кода и языки программирования. VSCode и rust-analyze использованы лишь для демонстрации вектора атаки. Теоретически проблеме подвержен любой редактор кода, раскрывающий процедурные макросы, позволяющие создавать расширения синтаксиса и выполнять код на этапе компиляции. Изначально исследователь изучал возможность совершения вредоносных действий во время компиляции кода, но обнаружил, что процедурные макросы раскрываются при обработке исходных текстов в редакторах кода. Вероятно атака может затрагивать и другие языки программирования, например, в Java похожим образом можно манипулировать с обработкой аннотаций.
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=55159