Что я должен сделать, чтобы защитить себя?
[Обновление 2010-09-29]
Бюллетень по безопасности Microsoft
KB Статья со ссылкой на исправление
ScottGu содержит ссылки для загрузки
[Обновление 2010-09-25]
Пока мы ждем исправления, вчера ScottGu представил обновление о том, как добавить дополнительный шаг для защиты ваших сайтов с помощью пользовательского правила URLScan.
В основном убедитесь, что вы предоставили пользовательскую страницу ошибок, чтобы злоумышленник не подвергался внутренним ошибкам .Net, которые вы всегда должны делать в режиме выпуска / производства.
Дополнительно добавьте случайный сон на странице ошибок, чтобызапретить атакующему синхронизировать ответы для добавления информации об атаке.
In web.config
<configuration>
<location allowOverride="false">
<system.web>
<customErrors mode="On" defaultRedirect="~/error.html" />
</system.web>
</location>
</configuration>
Это перенаправит любую ошибку на пользовательскую страницу, возвращаемую с 200код состояния.Таким образом, злоумышленник не может просмотреть код ошибки или информацию об ошибке для получения информации, необходимой для дальнейших атак.
Также можно безопасно установить customErrors mode="RemoteOnly"
, поскольку это перенаправит «реальных» клиентов.Только просмотр с локального хоста покажет внутренние ошибки .Net.
Важная часть - убедиться, что все ошибки настроены так, что они возвращают одну и ту же страницу ошибок.Для этого необходимо явно установить атрибут defaultRedirect
в разделе <customErrors>
и убедиться, что коды для каждого состояния не заданы.
Что поставлено на карту?
Если злоумышленнику удастся использоватьупомянутый эксплойт, он / она может загружать внутренние файлы из вашего веб-приложения.Обычно web.config является целевым объектом и может содержать конфиденциальную информацию, такую как данные для входа в систему в строке подключения к базе данных, или даже ссылку на базу данных sql-express с автоматикой, которую вы не хотите, чтобы кто-то получил.Но если вы следуете передовой практике, вы используете Защищенную конфигурацию для шифрования всех конфиденциальных данных в вашем файле web.config.
Ссылки на ссылки
Прочтите официальный комментарий Microsoft об этой уязвимостив http://www.microsoft.com/technet/security/advisory/2416728.mspx. В частности, в разделе «Временное решение» для подробностей реализации этой проблемы.
Также некоторую информацию о блоге ScottGu, включая скрипт , чтобы найтиуязвимые приложения ASP.Net на вашем веб-сервере.
Для объяснения "Понимание атак Oracle" читайте @ sri's answer .
Комментарии кarticle:
Атака, которую Rizzo и Duong осуществили против приложений ASP.NET, требует, чтобы крипто-реализация на веб-сайте имела оракула, который при отправке зашифрованного текста будет не только дешифровать текст, но и дать отправителю сообщение о том, является ли допустимым заполнение в зашифрованном тексте .
Если заполнение недействительно, сообщение об ошибке, которое получает отправитель, даст ему некоторую информацию о том, как работает процесс расшифровки сайта.
Чтобы атака сработаладолжно быть верно следующее:
- Ваше приложение должно выдать сообщение об ошибке о том, что заполнение недействительно.
- Кто-то должен вмешаться в ваши зашифрованные куки или viewstate
Итак, если вы вернете в ваше приложение сообщения об ошибках, читаемые человеком, например «Что-то пошло не так, попробуйте еще раз» , тогда вы должны быть в безопасности.Чтение небольшого количества комментариев к статье также дает ценную информацию.
- Сохранение идентификатора сеанса в зашифрованном cookie
- Сохранение реальных данных в состоянии сеанса (сохраняется в БД)
- Добавьте случайное ожидание, когда пользовательская информация неверна, перед возвратом ошибки, чтобы вы не могли рассчитать время
Таким образом, захваченный файл cookie может использоваться только для получения сеанса, которыйскорее всего, больше не присутствует или не признан недействительным.
Будет интересно посмотреть, что на самом деле представлено на конференции Ekoparty, но сейчас я не слишком беспокоюсь об этой уязвимости.