Качаем солюшн, распаковываем и открываем в студии. Произойдет одно из двух:
1. Вместе с солюшином у вас откроется калькулятор. Поздравляю, только что у вас выполнился произвольный код с теми же правами, с которыми запущена студия.
2. Вылезет ошибка загрузки одной их немерловских сборок. Видимо это потому, что у вас используется не 9342-ой билд, а я поленился и не заточил этот "эксплоит" под запуск с любыми версиями компилятора и библотеки. Но у вас еще есть шанс: просто запустите сборку проекта и получите все тот же калькулятор.
Понятно, что это не ахти какая уязвимость (а второй сценарий, так и вообще by design, без вопросов), но согласитесь, мало приятного в том, чтобы (например) загрузить из багтрекера выложенный кем-то код, якобы воспроизводящий баг, и получить себе на машину трояна, просто открыв этот проект или запустив его сборку. В связи с чем, два вопроса:
1. А зачем студия при открытии солюшена выполняет код используемых в проекте макросов? Ну зачем, в приницпе, понятно. А без этого никак? #Develop'ная интеграция вот, не запускает
2. Я так думаю, что макросам нафиг не нужен полноценный доступ ко всей системе. Не стоит ли научить компилятор размечать макролибы CAS-атрибутами с тем, чтобы ограничить их в правах и не дать натворить делов на машине разработчика в случае чего?
KV>2. Я так думаю, что макросам нафиг не нужен полноценный доступ ко всей системе. Не стоит ли научить компилятор размечать макролибы CAS-атрибутами с тем, чтобы ограничить их в правах и не дать натворить делов на машине разработчика в случае чего?
Всегда можно было скачать с инета проект, в котором пре-билд/пост-билд степом делается хрень. Это не считая того что сам сорец может поднимать фоновый поток и качать с нета гадость, демонстрируя в это время какую-нить интересность. Так что незнакомые проекты смотреть лучше фаром.
Некоторые наши макросы и пишут в файлы на компе и читают файл из сетевой шары при сборке, и это охренительная фича. Так что если и исправлять, то скорее надо как-то делить макро-dll'ки, а то и солюшоны целиком, на доверенные и недоверенные. Но смысл, учитывая те же post-build, которые работают для любых C#/VB/F#/C++ проектов а не только для Nemerle?
Re: Вредоносные макросы или уязвимость на ровном месте
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Качаем солюшн, распаковываем и открываем в студии. Произойдет одно из двух:
KV>1. Вместе с солюшином у вас откроется калькулятор. Поздравляю, только что у вас выполнился произвольный код с теми же правами, с которыми запущена студия.
если скачать что-то никсовое и дать make, то там и не такое может выполниться. и у многих компиляторов есть уязвимости когда даже чистому .c файлу через прагму можно задать пути вывода чего-то, перезаписав существующий файл.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: Вредоносные макросы или уязвимость на ровном месте
Здравствуйте, hi_octane, Вы писали:
_>Некоторые наши макросы и пишут в файлы на компе и читают файл из сетевой шары при сборке, и это охренительная фича.
*шепотом* я тебе даже больше скажу. У меня макры в SVN за сигнатурами атак и правилами корелляции ходють (и строят по ним ДКА ), но я всегда считал это жутким хаком, от которого надо избавляться при первой же возможности
_>Так что если и исправлять, то скорее надо как-то делить макро-dll'ки, а то и солюшоны целиком, на доверенные и недоверенные.
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Качаем солюшн, распаковываем и открываем в студии. Произойдет одно из двух:
KV>>1. Вместе с солюшином у вас откроется калькулятор. Поздравляю, только что у вас выполнился произвольный код с теми же правами, с которыми запущена студия.
М>если скачать что-то никсовое и дать make, то там и не такое может выполниться. и у многих компиляторов есть уязвимости когда даже чистому .c файлу через прагму можно задать пути вывода чего-то, перезаписав существующий файл.
Ну ок, уговорили. Принимаем риск Меня просто напрягло, что для запуска кода достаточно проект в студии открыть, даже не собирая.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, мыщъх, Вы писали:
М>>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>>Качаем солюшн, распаковываем и открываем в студии. Произойдет одно из двух:
KV>>>1. Вместе с солюшином у вас откроется калькулятор. Поздравляю, только что у вас выполнился произвольный код с теми же правами, с которыми запущена студия.
М>>если скачать что-то никсовое и дать make, то там и не такое может выполниться. и у многих компиляторов есть уязвимости когда даже чистому .c файлу через прагму можно задать пути вывода чего-то, перезаписав существующий файл.
KV>Ну ок, уговорили. Принимаем риск Меня просто напрягло, что для запуска кода достаточно проект в студии открыть, даже не собирая.
если не ошибаюсь, то слудия даже ms vc 4.0 (с более ранними не работал) позволяет выполнять все что угодно. достаточно открыть dsp в блокноте и слегка его захачить. есть идеи как это можно исправить на уровне концепции постройки проекта? а собирать чужие проекты на девелоперской тачке действительно опасно.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: Вредоносные макросы или уязвимость на ровном месте