воскресенье, 3 июля 2011 г.

Решения, которые ничего не решают

Это перевод Solutions that don't actually solve anything. Автор: Реймонд Чен.

Если изменение настройки изначально требует администраторских полномочий, то любое поведение, которое получается в результате этого, не может рассматриваться как дыра в безопасности, потому что, чтобы изменить настройку, у атакующего уже должен быть администраторский доступ на машине, а к этому моменту вы уже проиграли. Если у атакующих есть администратор, то они не будут тратить время на возню с какими-то настройками, чтобы добыть какие-то привилегии в системе. Они уже администраторы; зачем им делать какие-то действия, чтобы получить то, что у них и так уже есть?

Одна из реакций людей на такое положение вещей - попытаться "защитить" какую-то возможность: "Ну, а может можно как-то затруднить изменение настройки?". К примеру, в комментариях к посту о ключе реестра Image File Execution Options Norman Diamond предложил "разрешать запуск только известных отладчиков". Но это решение ничего не решает. Что могло бы значить "известный отладчик"?
  • "Операционная система будет содержать жёстко зашитый список известных отладчиков. В этом списке будут ntsd.exe, cdb.exe и, быть может, windbg.exe". Лично я не возражаю против этого варианта, но это только потому, что я и так делаю всю отладку в ассемблере. Большинство разработчиков хотели бы использовать devenv.exe или bds.exe (прим.пер.: это сам Реймонд сказал, это не моя добавка) или даже gdb.exe. Если кто-то создаст новый отладчик, то они будут писать петиции в Microsoft, чтобы их добавили в жёстко зашитый список "известных отладчиков" и затем им ещё пришлось бы ждать сервис-пака или новой версии ОС. И даже до высыхания чернил на электронах, я уверен, что кто-то где-то уже подаст анти-конкурентный иск ("Microsoft незаконно повышает барьер для входа конкурирующих продуктов-отладчиков!")
  • "OKэй, тогда программам нужно быть просто подписанными цифровой подписью, чтобы быть "известным отладчиком". Не все люди захотят отдавать $500 в год (стоимость сертификата подписи кода)". Но следует ли операционной системе запрашивать у пользователя, действительно ли они доверяют центру сертификации/сертификату перед запуском отладчика? (что делать, если отладчик вызывается на службу или удаленный компьютер? Нет никакого места, где можно было бы показать UI!) На самом деле, все эти вопросы с подвохом. Не имеет значения, задаёт ли подобный вопрос операционная система или нет, потому что нападающие просто отметят сертификат, которым они подписали отладчик, в качестве "доверенного" ​​сертификата. И, в самом деле, $500 в год не остановят нападающих, так как они просто создадут свой ​​собственный (самоподписанный) сертификат и установят его в качестве "доверенного корня". Поздравляем, только честным людям придётся платить $500 в год. Плохие парни просто проскользнут мимо со своим самоподписанным доверенным корневым сертификатом.
  • "OKэй, забудем про подписи, просто введите ключ реестра, в котором будут перечислены "известные отладчики". Если файл в этом списке, то его можно использовать в ключе Image File Execution Options". Ну, в этом случае, атакующие просто обновят этот список в ключе реестра, добавив туда себя как "известный отладчик". Этот ключ реестра не притормозит их даже на секунду - ведь у них есть права администратора.
  • "OKэй, тогда не ключ реестра, а какую-то другую настройку, которую было бы тяжело найти". Ох, и теперь вы предлагаете безопасность через неведение?
Более того, весь этот разговор вообще не имеет смысла - не имеет значения, сколько усилий вы вложите в "защиту" ключа Image File Execution Options. Поскольку у атакующих уже есть администраторские полномочия на вашей машине, им нет смысла трогать этот ключ. Они просто установят руткит и отпразднуют присоединение ещё одной машины к их армии роботов.

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

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.