Влияние рекомендаций Microsoft по безопасности (2269637) на кодирование .NET

Microsoft выпустила рекомендацию по безопасности (2269637) Небезопасная загрузка библиотеки может позволить удаленное выполнение кода.

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

Как эти рекомендации применимы к разработке .NET? Я предполагаю, что это влияет только на Platform Invoke.

Остается ли это рекомендуемым способом импорта системных библиотек?

DllImport("user32.dll")]

person Bernard Vander Beken    schedule 25.08.2010    source источник


Ответы (3)


Системные библиотеки DLL, такие как user32.dll, безопасны, поскольку они в списке KnownDLL в реестре. Если вы попытаетесь загрузить DLL с именем "user32", Windows жестко запрограммирована на получение официальной копии из каталога system32.

person Tim Robinson    schedule 25.08.2010
comment
Верно... но является ли приложение назначенным обработчиком определенных расширений файлов? Например, вы пишете киноплеер? Потому что если нет, то вы не можете контролировать текущий рабочий каталог и атаки нет. Вы действительно должны прочитать об атаке, прежде чем публиковать, я на 90% уверен, что его приложение не пострадало, и есть 1 и только 1 способ узнать наверняка. - person rook; 30.08.2010

С этой страницы:

Microsoft выпустила руководство для разработчиков в статье MSDN, Dynamic- Link Library Security, о том, как правильно использовать доступные интерфейсы прикладного программирования, чтобы предотвратить этот класс уязвимостей.

и

Эта проблема затрагивает только приложения, которые не загружают внешние библиотеки безопасным образом. Microsoft ранее публиковала рекомендации для разработчиков в статье MSDN, Dynamic -Link Library Security, в котором рекомендуются альтернативные методы загрузки библиотек, защищенные от этих атак.

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

person ChrisF    schedule 25.08.2010
comment
Но как применить их к его примеру с User32.dll? Режим безопасного поиска не для процесса, а для сеанса, и на самом деле он не ваш, чтобы играть с ним. DLL загружается системой до того, как вы получаете контроль, поэтому путь поиска также не в ваших руках. Как манифест? Вы действительно хотите добавить все системные библиотеки DLL в свой манифест? Каков правильный портативный способ указать системный каталог в манифесте? - person Rup; 25.08.2010
comment
@Rup - см. ответ @Tim Robinson. Я не думаю, что мог бы добавить что-то еще. - person ChrisF; 25.08.2010

Установите приложение и запустите HD Инструмент Мура. HD Мур обнаружил эту схему атаки.

Если ваше приложение не отвечает за автоматическое выполнение расширения файла, то вы не уязвимы. Бьюсь об заклад, если вы запустите этот инструмент, ваше приложение не появится в списке уязвимых приложений.

person rook    schedule 25.08.2010
comment
Спасибо за эту полезную рекомендацию! - person Bernard Vander Beken; 30.08.2010