Как именно отлаженный процесс может поставить под угрозу процесс отладки (машину)?

Всякий раз, когда кто-то хочет подключиться к процессу из Visual Studio, он получает это неприятное сообщение:

Прикрепить предупреждение системы безопасности

Этот вопрос и ответы на него демонстрируют борьбу чтобы избавиться от этого. В этой статье Microsoft рассказывается о потенциальные опасности присоединения для процесса отладки / машины:

Однако многие разработчики не осознают, что угроза безопасности может течь и в обратном направлении. Злонамеренный код в процессе отладки может поставить под угрозу безопасность отладочной машины: существует ряд уязвимостей безопасности, от которых необходимо защититься.

Вопрос: как отлаживаемый процесс может использовать процесс отладки? (Меня интересуют лишь несколько основных моментов, поскольку я полагаю, что об этом можно написать книгу).

А также, какова цель появления этого предупреждения при отладке процесса w3wp.exe на локальной машине (я полагаю, что подавляющее большинство сеансов отладки происходит на машине разработки). Если процесс w3wp на локальном компьютере скомпрометирован, у вас все равно большие проблемы.


person Alexei - check Codidact    schedule 05.04.2017    source источник
comment
в этом документе приведены возможные причины появления этого предупреждения во время отладки локального процесса w3wp.exe: developers.de/blogs/damir_dobric/archive/2009/11/13/. Например, он появится, если процесс подключения, на котором размещена служба, размещен пользователем, у которого нет разрешений на отладку.   -  person Jack Zhai-MSFT    schedule 06.04.2017
comment
Вы видели это: security.stackexchange.com/questions/127681/?   -  person Simon Mourier    schedule 18.04.2017
comment
@SimonMourier - я читал похожую статью MSDN, но информация довольно общая. Меня интересовали некоторые технические детали того, как отлаживаемый процесс может фактически поставить под угрозу процессы отладчика. Думаю, было бы интересно узнать кое-что по этой теме.   -  person Alexei - check Codidact    schedule 18.04.2017


Ответы (2)


Вы получаете это предупреждение, когда подключаетесь к процессу, который выполняется с ограниченной учетной записью. Подобно w3wp.exe, веб-сервер обычно настраивается с такой учетной записью, чтобы злоумышленник не мог нанести слишком большой ущерб после того, как он выяснил, как скомпрометировать веб-сервер. Обратите внимание, как вы обычно используете учетную запись с правами администратора для отладки веб-сервера.

Это открывает обычную дыру в безопасности, которая очень похожа на ту, что используется при «атаке с разбиением». Повышение привилегий, непривилегированный процесс, использующий привилегии другого процесса. Канал - это транспорт отладчика, канал, который позволяет отладчику управлять отладчиком. Я думаю, что это сокет в случае, когда процесс выполняется на другой машине, именованный канал, если он работает на той же машине. Скомпрометированный процесс может подделать сообщения, которые отладчик интерпретирует как нормальные ответы. Все возможно, нет ничего простого, ничего из этого не задокументировано. Умышленно.

Обратите внимание, как вы по-прежнему используете удаленный отладчик, когда w3wp.exe запускается локально. Обычно это 64-битный процесс, а VS - 32-битный, удаленный отладчик (msvsmon.exe) необходим для устранения разницы в битах.

Это сценарий атаки, при которой Microsoft вынуждена вскинуть руки и больше не может гарантировать, что такая атака не увенчается успехом и нанесет реальный ущерб вашей машине. Поверхность атаки слишком велика. Таким образом, они отображают диалог, вы должны интерпретировать его как «мы больше не несем ответственности за то, что произойдет дальше». Правдоподобное отрицание когда дело доходит до судебного процесса. Информация, которую он отображает, на самом деле не помогает судить о том, скомпрометирован ли процесс, но это все, что они получили. Жизнь слишком коротка, чтобы беспокоиться об этом каждый раз, когда вы нажимаете «Прикрепить», юристы ни разу не облегчили программисту работу :)

person Community    schedule 20.04.2017
comment
Итак, если я правильно понимаю, даже если я отлаживаю управляемый процесс, фактическая отладка происходит неуправляемым образом, не так ли? - person Alexei - check Codidact; 20.04.2017
comment
Конечно, с отладчиком ничего не управляется. ICorDebug - это основной интерфейс отладчика, который используется для отладки управляемого процесса, это чистый собственный код. - person Hans Passant; 20.04.2017

Когда вы запускаете eval в отладчике, вы эффективно запускаете код в отладчике. Вот где может быть потенциальная проблема безопасности.

Например, предположим, что у отлаживаемой программы есть несколько типов, которые загружают natvis в отладчик. И предположим, что в C ++ Expression Evaluator есть дыра в безопасности, которая позволяет атаковать переполнение буфера через natvis. Просто отладив определенный процесс, удаленный процесс может взять под контроль вашу локальную машину. Конечно, это маловероятно, но отладчик не защищен от атак такого рода. Природа отладки означает, что вы должны разрешить выполнение любого кода.

С другой стороны, после отладки процесса отладчик имеет те же права, что и он. Вы можете делать все, что хотите.

Это предупреждение ниже появляется при подключении к процессу неизвестного пользователя. См. Эту статью: https://msdn.microsoft.com/ro-ro/library/ms241736.aspx

person Jack Zhai-MSFT    schedule 20.04.2017