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

Продемонстровано метод атаки на редактор VSCode, що дозволяє передати довільні файли в рамках прав поточного користувача при відкритті в редакторі спеціально оформленого вихідного коду. У запропонованій демонстрації при відкритті коду на мові Rust, в якій використовується процедурний макрос, виконується встановлення з'єднання з хостом 127.0.0.1:8080 та відправлення вмісту файлу "~/.ssh/id_rsa" з SSH-ключами користувача.

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

Зазначається, що проблема може торкатися інших редакторів коду та мови програмування. VSCode та rust-analyze використані лише для демонстрації вектора атаки. Теоретично проблемі піддається будь-який редактор коду, що розкриває процедурні макроси, що дозволяють створювати розширення синтаксису і виконувати код на етапі компіляції. Спочатку дослідник вивчав можливість здійснення шкідливих дій під час компіляції коду, але виявив, що процедурні макроси розкриваються під час обробки вихідних текстів у редакторах коду. Ймовірно, атака може зачіпати й інші мови програмування, наприклад, в Java схожим чином можна маніпулювати з обробкою анотацій.



Джерело: opennet.ru

Додати коментар або відгук