Проблема
Translate:
f -
протокол WebDAV
и
канонизация
При первом выявлении этой проблемы вокруг ее причин разгорелись бурные спо-
ры. Официальная позиция компании Microsoft сводилась к тому, что причиной явля-
ется некорректное поведение внутреннего обработчика файлов в ядре
IIS
(что в про-
шлом действительно приводило к некоторым проблемам). Эта позиция была обнаро-
дована в разделе MSOO-58, посвященном вопросам безопасности. Эту информацию
можно найти по адресу
http://www.microsoft.com/technet/security/bulletin/
fqOO-058.asp.
Однако Даниель
Дочкал
(Daniel Docekal) считает, что причиной проблемы является
протокол WebDAV (Web Distributed Authoring and
Versioning)
— протокол обеспечения
стандартов Internet, поддерживаемый преимущественно компанией Microsoft и позво-
ляющий удаленным авторам создавать, удалять, перемещать, находить и изменять атри-
буты файлов и каталогов на Web-серверах (чувствуете, с какими проблемами это может
быть
сопряжено?).
Протокол WebDAV Web-сервером IIS 5 поддерживается по умолча-
нию. И хотя заголовок HTTP Translate: не описан в спецификации протокола
WebDAV (RFC 2518) или других известных авторам документах, Даниель Дочкал утвер-
ждает, что встречал ссылку на него в библиотеке сети MSDN компании Microsoft. По
его словам, там рассказывалось об использовании этого заголовка для получения файло-
вого потока путем указания значения
F
(false)
в
поле заголовка
Translate.
В процессе обсуждения этого вопроса с группой обеспечения безопасности про-
дуктов Microsoft выяснилось, что это действительно так. По словам специалистов,
протокол WebDAV реализован
в
виде фильтра
ISAPI
с
именем
httpext.dll,
интер-
претирующего Web-запросы до их передачи ядру IIS. Заголовок Translate: f пред-
полагает обработку этого запроса, а обратная косая вводит фильтр WebDAV в заблуж-
дение, в результате чего этот запрос направляется непосредственно операционной
системе. Система Win 2000 благополучно возвращает этот файл системе злоумышлен-
ника, а не выполняет его на сервере (как положено по всем правилам).
Здесь мы вплотную подошли к вопросу канонизации (canonization). Это понятие
описано специалистами компании Microsoft в разделе MSOO-57 по адресу
http://www.microsoft.com/technet/security/bulletin/fqOO-057.asp. Там го-
ворится следующее: "Канонизация — это процесс приведения различных эквивалент-
ных форм имени к единому стандартному имени, называемому каноническим именем
(canonical name). Например, на данном компьютере имена
c:\dir\test.dat
и
. .
\..
\test.
dat
могут ссылаться
на
один
и тот же
файл. Канонизация
— это
процесс
приведения таких имен к виду
с:
\dir\test.dat".
Использование одной из различных эквивалентных форм канонического имени
файла может привести к обработке запроса другими средствами
IIS
или операционной
системы. Хорошим примером проблемы канонизации является
вскрытие
исходного
кода
с
помощью выражения
: :
$DATA.
Если
к
некоторому файлу обратиться
с
исполь-
зованием другого имени, то файл будет возвращен броузеру в некорректном виде.
Подобным образом работает и заголовок
Translate:
f. Значение f вводит службу
WebDAV в заблуждение, в результате чего файловый поток возвращается броузеру.
О
Контрмеры: решение
для
проблемы
Translate:
£
Чтобы уменьшить риск, связанный с проблемой
Translate:
f и другими попыт-
ками вскрытия кода, достаточно просто иметь в виду, что любые выполняемые на
сервере файлы могут быть видимы пользователям Internet, и никогда не хранить в них
секретную информацию. Неизвестно, связано ли это с участившимися попытками
вскрытия кода, но компания Microsoft предлагает такой подход в качестве "обычной
рекомендации по безопасности" в разделе FAQ MSOO-58, уже упомянутом ранее.
620 Часть IV. Хакинг программного обеспечения