2016-01-15 12 views
3

Я пытаюсь унять провал PCI сканирования мы недавно были сделаны, в котором говорится:RequestFiltering не работает для MS-DOS устройств дорожек имени

Microsoft ASP.NET MS-DOS устройства Имени DoS

Сводка: Рамка, используемая удаленным веб-сервером, имеет уязвимость отказа в обслуживании. Удар: Веб-сервер, запущенный на удаленном хосте, как представляется, использует Microsoft ASP.NET и может быть затронута уязвимостью в отношении отказа в обслуживании. Запрос URL , содержащий имя устройства MS-DOS, может привести к тому, что веб-сервер станет временно не отвечать на запросы.

Вкратце, мы посещаем URL-адрес нашего приложения, например /AUX/.aspx, получаем ошибку 500.

Я использую RequestFiltering для фильтрации этих запросов и вместо этого возвращаю 404 вместо сервера, пытающегося обработать запрос.

Отрывок из моего web.config ниже:

<system.webServer> 
    <security> 
     <requestFiltering> 
      <denyUrlSequences> 
       <add sequence="/AUX/.aspx" /> 
      </denyUrlSequences> 
     </requestFiltering> 
    </security> 
</system.webServer> 

Однако, это не работает, он все еще возвращая 500.

Я бы ожидать, что она возвращает 404.

Если добавить следующий кетчуп все URL в denyUrlSequences то весь сайт производит ожидаемый 404.

<add sequence="/" /> 

Стоит отметить, что приложение является MVC-приложением, работающим на IIS 7.5 (Windows 2008 R2)

+0

Выяснили небольшое обходное решение - удалив блок '', он работает как ожидалось ... – Alex

ответ

3

Просто пришлось решить эту проблему.

Моим решением было отключить .Net Error Pages и включить страницы ошибок IIS.

При перемещении пользовательской обработки с более высокого уровня .Net на более низком уровне IIS ошибки в ответ HTTP изменения кода от 500 до 404.

PCI тест пройден :-)

1

Я боролся с этим в течение некоторого времени сам. Я думаю, что код ответа 500 верен для имен MS-DOS в URL-адресе, и вам не нужно ничего добавлять для фильтрации запросов.

Вы заметите, что получите 500 ошибок, если используете какие-либо имена MS-DOS (https://support.microsoft.com/en-us/kb/74496), не делая ничего для вашей конфигурации. Однако, если вы добавите RequestFiltering denySequence для чего-то другого, например «foo», тогда вы увидите ошибку 404.5 при просмотре/foo.

Если вы добавили relaxedUrlToFileSystemMapping = "true" в httpRuntime element вместе с вашими фильтрами запроса denySequence, то вы получите имена 404.5 для MS-DOS.

Но отключив конфигурацию asp.net по умолчанию, чтобы вы могли получить что-то другое, тогда ответ 500 для URL с именем MS-DOS является кратким запросом проверки соответствия PCI.