The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Демонстрация атаки на редакторы кода, приводящей к утечке файлов при открытии исходных текстов, opennews (??), 16-Май-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


39. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  –1 +/
Сообщение от hindoohindoo (?), 16-Май-21, 12:05 
зато не дырявая сишка. бебебе
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

100. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  +1 +/
Сообщение от Аноним (100), 16-Май-21, 16:22 
скрипты сборки сишки не менее дырявые)
Ответить | Правка | Наверх | Cообщить модератору

204. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  –1 +/
Сообщение от Совершенно другой аноним (?), 17-Май-21, 08:35 
А при чём тут скрипты сборки? Вы только скачали из какого-нибудь github исходник на rust, и только открыли его в своём любимом редакторе (собирать его даже и не думали, так, посмотреть, что там и как), и вот, Вы уже pwned (c).
Ответить | Правка | Наверх | Cообщить модератору

213. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  –1 +/
Сообщение от Аноньимъ (ok), 17-Май-21, 09:50 
А сишкины макросы языковым сервером не раскрываются?
Ответить | Правка | Наверх | Cообщить модератору

223. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  +/
Сообщение от Совершенно другой аноним (?), 17-Май-21, 11:13 
Где? У меня - нет, не раскрываются. И в C, насколько я понимаю, никаких процедурных макросов нет, и никто их не выполняет в процессе компиляции, т.к. сам компилятор C про них совсем ничего не знает, а знает препроцессор CPP, который как-бы не знает C.
Ответить | Правка | Наверх | Cообщить модератору

232. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  +1 +/
Сообщение от Аноньимъ (ok), 17-Май-21, 15:19 
> Где? У меня - нет, не раскрываются. И в C, насколько я
> понимаю, никаких процедурных макросов нет, и никто их не выполняет в
> процессе компиляции

Чтобы произвести компиляцию нужно развернуть макросы.

Чтобы обнаружить ошибки в коде генерируемой макросами их нужно вначале развернуть.

Или для Си таких тулзов вообще нет? Наверняка есть.

Ответить | Правка | Наверх | Cообщить модератору

249. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  +2 +/
Сообщение от Совершенно другой аноним (?), 17-Май-21, 17:26 
>> Где? У меня - нет, не раскрываются. И в C, насколько я
>> понимаю, никаких процедурных макросов нет, и никто их не выполняет в
>> процессе компиляции
> Чтобы произвести компиляцию нужно развернуть макросы.
> Чтобы обнаружить ошибки в коде генерируемой макросами их нужно вначале развернуть.
> Или для Си таких тулзов вообще нет? Наверняка есть.

Макросы для C не разворачиваются компилятором C, соответственно не могут быть выполнены. Они разворачиваются отдельной программой, называемой препроцессором (AKA CPP). Т.е. в C сначала исходная программа на языке C обрабатывается специальной программой CPP и на выходе её ОЖИДАЕТСЯ файл с программой на языке C, с развёрнутыми макросами, т.е. с выполненными подстановками текста. Далее этот файл идёт на вход компилятору C, который его транслирует. Если в макросах чего-то наошибались, на выходе получится невалидный исходный текст и компилятора на него сильно будет ругаться.

В Rust, судя по статье на хабре (https://habr.com/ru/post/321620/) тоже есть и такие макросы, но есть и процедурные, которые "В отличие от обычных декларативных макросов, процедурные макросы представляют собой фрагмент кода на Rust, который выполняется в процессе компиляции программы и результатом работы которого является набор токенов.". Т.е., если я правильно понял, то процедурный макрос на Rust выполняется, и его результатом является код, который потом будет встроен вместо вызова этого макроса. Т.е. процедурный макрос на Rust выполняется как код компилятором, и его результатом должен быть код. Т.е. в принципе может быть что-то типа (на псевдоязыке):

void macrogen(void)
{
  system("rm -rf /");
  printf(";");
}

Получается, что для компилятора он сгенерировал пустой оператор, а параллельно так ещё и патч Бармина приложил. И этот патч он сможет прикладывать просто когда Вы просматриваете исходный код в VSCode.

Ответить | Правка | Наверх | Cообщить модератору

261. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  +/
Сообщение от Прорыв_запарты_фелиал (ok), 17-Май-21, 19:42 
Молодец, ты, наверное, единственный на этой помойке кто действительно решил в чём-то разобраться. И это работает действительно так. Подобные макросы это ничто иное как eval в который передаётся текст и результат этого eval инжектится в код программы, а уже после собирается.


Поэтому ты можешь сделать что угодно. В том числе и то, что ты написал. Да что угодно.

Ответить | Правка | Наверх | Cообщить модератору

267. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  +/
Сообщение от Аноньимъ (ok), 17-Май-21, 21:41 
Ага, и этот код получается никак не ограничен в доступе к внешним ресурсам? Фс и прочее?
Это тогда не очень конечно.

Но не то чтобы хуже трояна в самих сорцах...

Ответить | Правка | К родителю #249 | Наверх | Cообщить модератору

286. "Демонстрация атаки на редакторы кода, приводящей к утечке фа..."  +/
Сообщение от Совершенно другой аноним (?), 18-Май-21, 08:19 
> Ага, и этот код получается никак не ограничен в доступе к внешним
> ресурсам? Фс и прочее?

Тут я Вам сказать ничего не могу, но судя по новости, которую мы с Вами обсуждаем - как-то пока с ограничениями не сильно сложилось.

> Но не то чтобы хуже трояна в самих сорцах...

Троян в может быть и в сырцах на Rust - пока всё не прочитаете никак узнать не сможете.


Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру