Статья только в электронной версии журнала
Безопасность приложений зависит от мелочей
Четвертый тест онлайновой безопасности из серии OpenHack преподал eWeek Labs ряд уроков по способам защиты корпоративных данных. Он также еще раз доказал, что в вопросах безопасности мелочей нет.
OpenHack - это интерактивная оценка безопасности гетерогенной системы корпоративных ИТ-продуктов, их способности выдержать суровый климат Web. Если прошлые тесты OpenHack концентрировали внимание на сетевых экранах, IDS (системах обнаружения вторжений) и надежности ОС, то OpenHack 4 посвящался безопасности Web-приложений.
В этот раз тестировалось Web-приложение, реально используемое в работе нашей лаборатории. Мы попросили специалистов корпораций Microsoft и Oracle «упрочнить» это приложение и затем развернуть на выбранных по их усмотрению платформах ОС, Web-сервера, сервера приложений и СУБД. Упрочненные приложения и поддерживающие их серверы были размещены на сайте www.openhack.com, после чего мы призвали хакеров всего мира попытаться решить любую из пяти поставленных нами задач по взлому системы.
Происшедшее в ходе теста убедило нас в важности внимательной (и притом неоднократной) проверки кода ПО и многоуровневой стратегии обороны. Мы также ощутили явные преимущества структурированных систем Web-программирования, которые автоматизируют часть работы по написанию безопасного кода.
Бесспорно, что в безопасности все зависит от мелочей, ибо обе успешные кросс-сайтовые сценарные атаки («межсайтовый скриптинг») стали возможны благодаря единственной ошибке всего лишь в одной строчке кода тестового приложения.
Важно еще раз подчеркнуть, что в OpenHack использовалось вполне конкретное приложение eWeek, выбранное для данного теста. Мы не обнаружили никаких проблем безопасности (или существенных функциональных проблем) ни в одном из других проверявшихся компонентов, включая фирменные Web-серверы Microsoft и Oracle, их серверы приложений и СУБД, а также серверные ОС Windows 2000 Advanced Server и RedHat Linux Advanced Server 2.1 фирмы RedHat или использовавшиеся в тесте брандмауэры на базе OpenBSD и коммутаторы фирмы Extreme Networks.
Мишени хакеров
За 18 дней тестирования атакующая сторона смогла успешно справиться только с одной из предложенных ей задач. В первые же сутки испытаний Джереми Поутит, технологический руководитель ИТ-консалтинговой фирмы Technology Partners, обнаружил в тестовом приложении Oracle OpenHack два места, через которые он мог заставить программу отсылать обратно пользователю произвольный (при желании написанный со злым умыслом) код JavaScript.
В своей статье Поутит повествует, как функциональный дефект в приложении послужил ему подсказкой о наличии слабого места в коде. Помимо этого он сумел предпринять и вторую кросс-сайтовую сценарную атаку, манипулируя полем URL-адреса и воспользовавшись индивидуальными особенностями приложения при проверке нестандартных типов данных.
В обоих случаях Поутиту удалось выявить местонахождение скрытых дефектов приложения только благодаря внимательности, помноженной на собственный опыт. Причем он сумел это сделать без доступа к исходному коду, чем подтверждается тот факт, что утаивание исходных текстов - защита очень слабая.
Ни одна из четырех других, более серьезных тестовых задач - раскрытие исходного кода приложения, порча Web-страницы, похищение данных кредитной карточки и овладение возможностью задавать произвольные SQL-команды к базе данных - атакующими решена не была.
И Oracle, и Microsoft имели полную свободу действий по упрочнению приложения в естественных рамках функционального назначения ПО и сохранения близости базовых структур доработанного приложения и его первоисточника.
Безусловно, обе компании проделали серьезную работу, чтобы их собственные варианты приложения и поддерживающей инфраструктуры вышли из-под атак OpenHack целыми и невредимыми, однако некоторые читатели ставят вопрос, насколько реалистично требовать от рядовых ИТ-специалистов, ответственных за безопасность ПО, умения укреплять приложения в той же степени, как Microsoft или Oracle.
Вот что, например, пишет один из читателей: «Много ли компаний в состоянии пригласить столь же классных специалистов, как персонал Microsoft и Oracle, для поддержания безопасности их сайтов? И многие ли компании имеют столь же квалифицированных программистов, чтобы писать для них ПО? Я бы предпочел провести более реалистичную проверку. То есть получить две системы от производителей, инсталлировать и поручить новичку с титулом сертифицированного системного инженера Microsoft или сертифицированного администратора баз данных Oracle за четыре часа упрятать их под замок. А потом пригласить всех желающих попробовать свои силы. Вот это будет реальный тест, как в жизни!»
Мы рассчитывали, насколько это было возможно, проверять не людей, а технологии, однако важнейшую роль в обеспечении ИТ-безопасности конкретных организаций всегда будут играть кадры.
Нам не кажется, что Microsoft и Oracle сделали что-то особенное, выходящее за рамки возможностей умного и заботливого администратора, и уроки прошлых тестов OpenHack, по нашему мнению, свидетельствуют о том, что практически любую систему можно защитить без особого ущерба для ее рабочих функций, если этим занимается толковый специалист.
Мы убедились, что для достижения приемлемого уровня защиты ОС и Web-серверов на Unix-платформах, использовавшихся в нашем тесте, не требуется большой работы. Но многое, конечно, зависит от квалификации специалистов по безопасности, а квалификация эта бывает очень разной.
Вообще говоря, средства Microsoft - ASP (Active Server Pages) .Net Framework и Visual Studio .Net - существенно экономят время разработчиков и обеспечивают лучшую безопасность приложения, нежели платформа JSP (JavaServer Pages), которой воспользовалась Oracle. Кроме того, Microsoft приняла дополнительные меры предосторожности (включая широкое применение IP Security и виртуальных частных сетей), чего не сделала Oracle, и поэтому система Microsoft с самого начала оказалась более сложной и хитрой в плане управления.
Чтобы упростить работу по упрочнению системы, обе компании использовали возможности стандартных средств. Инструменты политики безопасности Windows 2000 позволили быстро внести множество изменений, улучшающих защиту ОС, после чего был написан файл политики. Очень эффективным методом защиты являются также стандартные правила безопасности и сценарии упрочнения ПО. (Oracle на своих серверах прибегала к бесплатным сценариям упрочнения Bastille Linux.)
И Microsoft, и Oracle составили подробную документацию с точным описанием процессов упрочнения. Она опубликована на сайте www.eweek.com/openhack, где можно найти и другую информацию по OpenHack.
ИТ-безопасность, как уже показали прошлые тесты OpenHack, представляет собой глобальную проблему. Первые две тестовые системы OpenHack взломал один и тот же хакер из Гибралтара по имени Луис Мора. По данным IDS-мониторинга сайта, двадцать наиболее активных атак OpenHack 4 велись из восьми разных стран четырех континентов (см. карту).
Первые два десятка нападавших в тесте OpenHack
За время тестирования сайт подвергся почти 53 тысячам атак. Наиболее распространенными видами нападений, обнаруженных системой IDS, были стандартные атаки на Web-сервер на основе URL-кодирования и атаки с просачиванием через дерево Web-каталогов при помощи попыток обхода каталогов. Из других частых атак следует назвать низкоуровневые приемы использования TCP/IP и различные формы зондирования (перечень двадцати самых распространенных способов атак приведен в таблице).
Большинство атак на Web-серверы оказалось попросту «фоновым излучением» всевозможных Web-серверных червей, которые постоянно циркулируют по Сети в поисках легкой добычи. Любому Web-серверу со своевременно залатанным ПО они не страшны. Наши брандмауэры на базе OpenBSD автоматически отразили атаки уровня TCP/IP.
Гораздо большую опасность для Web-серверов OpenHack представляли примерно 240 тыс. атак с использованием деформированных или незаконных HTTP-запросов. Поскольку главным предметом данного теста была безопасность Web-приложения, более серьезные хакеры как раз экспериментировали с HTTP-запросами и их параметрами (именно этим методом воспользовался и Поутит).
Прием заданных пользователем параметров, выполнение исходя из них определенных действий и последующее сохранение информации в корпоративной базе данных - все это потенциально рискованные операции, и организациям следует задействовать все доступные стандартные средства, чтобы отфильтровывать опасные входные данные, прежде чем они попадут в приложения.
И Oracle, и Microsoft использовали для очистки HTTP-трафика многоуровневый подход.
Oracle добавила в файл httpd.conf своего Web-сервера Apache специальные записи, позволявшие сразу блокировать URL-запросы с подозрительными символами до поступления запроса в сервер приложений. А Microsoft воспользовалась собственным фильтром трафика URLScan (он бесплатно распространяется через Интернет) для просмотра и очистки HTTP-трафика перед входом в подсистему ASP. Оба метода оказались очень эффективными и заблокировали многие десятки тысяч опасных запросов.
Две другие проблемы - аутентификацию пользователей и проверку допустимости параметров - Oracle и Microsoft решали по-разному, что отражает фундаментальные различия между инструментальными платформами Java и .Net.
Приложение Oracle почти во всем следовало исходному приложению eWeek Labs, с самого начала написанному на JSP и Java. Это приложение имело собственную логику аутентификации пользователей, контроля прав доступа к страницам и проверки законности параметров.
Доступная информация по OpenHack 4
Все это имеется на странице www.eweek.com/openhack:
- Исходный код тестовых приложений Microsoft OpenHack (написан на ASP и C#) и Oracle OpenHack (написан на JSP и Java), а также исходного приложения, выбранного для тестирования (на JSP и Java).
- Документация, материалы и сценарии корпораций Oracle и Microsoft, описывающие конфигурации использованных ими систем, методы упрочнения ПО и наилучшие практические подходы к развертыванию Web-приложений на их фирменных платформах.
- Структура системы eWeek Labs и сведения об упрочнении брандмауэров, маршрутизаторов, Web-сервера документации сайта, сервера DNS и почтового сервера, участвовавших в тестировании.
- Системные протоколы Web-доступа и регистрации ошибок для Web-сервера сайта OpenHack, Web-сервера Microsoft и Web-сервера Oracle.
- Отчеты системы IDS n Статистика использования аппаратуры брандмауэра и Web-сервера и загрузки сети.
Усвоенные уроки
- Внимательно проверяйте код, используйте тесты на проникновение и автоматизированные средства проверки Web-приложений, чтобы выявить максимум ошибок еще до развертывания приложений.
- Используйте технологии HTTP-фильтрации для очистки внешнего трафика до его поступления на сервер приложений.
- Используйте преимущества структурированных способов Web-программирования и библиотек, избавляющие от прямого написания кода для управления пользователями, аутентификации или проверки допустимости параметров.
- При любой возможности пользуйтесь регулярными выражениями как сильным средством проверки законности пользовательских входных данных.
- Развертывайте брандмауэры на серверах и в сети, используйте хранимые процедуры СУБД, механизмы контроля доступа к базам данных и криптозащиту данных, чтобы обеспечить многоуровневую оборону. Применение этих барьеров в тесте OpenHack эффективно ограничило ущерб от дефектов безопасности приложения.