Как именно отлаженный процесс может поставить под угрозу процесс отладки (компьютер)?
Всякий раз, когда кто-то хочет присоединиться к процессу из Visual Studio, он получает это неприятное сообщение:
Этот вопрос и его ответы показывают борьбу, чтобы избавиться от него. В этой статье Microsoft рассказывается о потенциальных опасностях подключения к процессу / машине отладки:
Однако многие разработчики не осознают, что угроза безопасности может также распространяться в противоположном направлении. Вредоносный код в процессе отладки может поставить под угрозу безопасность машины отладки: существует ряд мер безопасности, от которых необходимо защититься.
Вопрос: как отлаживаемый процесс может использовать процесс отладки? (Меня интересуют лишь несколько основных моментов, так как я представляю, что об этом можно написать книгу).
А также, какова цель этого предупреждения при отладке на локальном компьютере? w3wp.exe
процесс (я думаю, что подавляющее большинство сеансов отладки происходит в машине разработки). Если процесс w3wp на локальной машине скомпрометирован, у вас все равно будут большие проблемы.
2 ответа
Это предупреждение появляется при подключении к процессу, который запускается с ограниченной учетной записью пользователя. Как и w3wp.exe, веб-сервер обычно настраивается с такой учетной записью, чтобы злоумышленник не мог нанести слишком большой ущерб после того, как выяснил, как скомпрометировать веб-сервер. Обратите внимание, как обычно вы используете учетную запись с правами администратора для отладки веб-сервера.
Это открывает общую дыру в безопасности, которая очень похожа на ту, что использовалась "разрушенной атакой". Повышение привилегий, непривилегированный процесс, использующий привилегии другого процесса. Каналом является транспорт отладчика, канал, который позволяет отладчику управлять отладчиком. Я думаю, сокет в случае, когда процесс выполняется на другой машине, именованный канал, если он работает на той же машине. Скомпрометированный процесс может подделать сообщения, которые отладчик интерпретирует как обычные ответы. Все возможно, ничего не просто, ничего из этого не задокументировано. Преднамеренно.
Обратите внимание, как вы все еще используете удаленный отладчик, когда w3wp.exe работает локально. Обычно это 64-битный процесс, а VS 32-битный, удаленный отладчик (msvsmon.exe) необходим для преодоления разницы в битности.
Это сценарий атаки, когда Microsoft вынуждена вскидывать руки и больше не может гарантировать, что такая атака не может быть успешной и нанесет реальный ущерб вашей машине. Поверхность атаки слишком велика. Таким образом, они отображают диалоговое окно, вы должны интерпретировать его как "мы больше не несем ответственности за то, что произойдет дальше". Правдоподобное отрицание, когда дело доходит до судебного иска. Информация, которую она отображает, на самом деле не полезна для оценки того, скомпрометирован ли процесс, но это все, что они получили. Жизнь слишком коротка, чтобы беспокоиться об этом каждый раз, когда вы нажимаете "Присоединить", юристы никогда не облегчали работу программиста:)
Когда вы выполняете что-то в отладчике, вы эффективно запускаете код в отладчике. Это где потенциальная проблема безопасности может быть.
Например, предположим, что отладчик имеет несколько типов, которые будут загружать natvis в отладчик. И предположим, что в C++ Expression Evaluator есть дыра в безопасности, которая позволяет атаку переполнения буфера через natvis. Просто отладив определенный процесс, удаленный процесс может получить контроль над вашей локальной машиной. Конечно, это маловероятно, но отладчик не защищен от подобных атак. Природа отладки означает, что вы должны позволить любому коду работать.
В другом направлении, когда процесс отлаживается, отладчик получает те же разрешения, что и он. Вы можете делать все что угодно.
Это предупреждение ниже появляется при подключении к процессу неизвестных пользователей. Смотрите эту статью: https://msdn.microsoft.com/ro-ro/library/ms241736.aspx