Контакты
Подписка
МЕНЮ
Контакты
Подписка

Безопасность SAP: миф или реальность?

Безопасность SAP: миф или реальность?

В рубрику "Оборудование и технологии" | К списку рубрик  |  К списку авторов  |  К списку публикаций

Безопасность SAP: миф или реальность?

Давно существует распространенный миф о том, что SAP – это безопасная система, и единственная проблема – это матрица SOD (матрица разграничения полномочий). Попытаемся развеять этот миф окончательно. Данная статья открывает цикл материалов, посвященных техническим вопросам безопасности платформы SAP.
Александр Поляков
директор Digital Security,
глава исследовательского центра DSecRG

За последние 4 года появилось много исследований в области безопасности SAP, проведенных разными специалистами, начиная от атак на SAPGUI и SAP Router, заканчивая архитектурными уязвимостями в протоколе RFC и уязвимостями программ, написанных на ABAP. SAP, в свою очередь, тоже не дремлет и расширяет отдел Security Response Team. SAP выпускает документы – стандарты по техническим вопросам безопасности SAP, подтверждая существование проблемы, связанной с отсутствием единой базы требований к безопасности, а также покупает компании разработчиков систем безопасности, таких как, например, поставщик решений по шифрованию трафика.

Данная статья кратко рассказывает о последнем исследовании, посвященном платформе SAP NetWeaver J2EE Engine, которой, по сравнению с ABAP Engine, уделено крайне мало внимания, а по ее безопасности на сегодняшний день практически не было исследований. Данная платформа используется во множестве продуктов SAP, обеспечивающих интеграцию и контроль над бизнес-приложениями. Критичность данных систем нельзя недооценить, так как они тесно связаны с другими системами, и например, взломав SAP-портал предприятия через Интернет, можно получить доступ через SSO ко всем ресурсам компании или, например, через уязвимый SAP Solution Manager можно внедрить злонамеренный код во все подключенные к нему SAP-системы.

Уязвимости

Исследования безопасности JAVA движка SAP, начатые более 2 лет назад DSecRG, исследовательским центром компании Digital Security, привели к тому, что было обнаружено около 200 уязвимостей, большая часть которых на данный момент закрывается производителем, но осталось еще много неизученных областей, над которыми ведется работа. Практически все уязвимости не являются единичными, а представляют собой целый класс проблем, примеры которого постоянно обнаруживаются, что, к сожалению, не позволяет раз и навсегда защититься и предполагает постоянный контроль, а также анализ безопасности платформы и ее компонентов. Наиболее критичные из обнаруженных уязвимостей позволяют обойти механизм аутентификации и выполнить любое действие в системе удаленно, не используя никаких пользовательских данных. В случае если система имеет доступ в Интернет, даже двухфакторная аутентификация не спасет от данной атаки, и злоумышленник сможет элементарно получить доступ к сердцу компании удаленно.

Атаки на платформу и приложения

SAP в Интернете Серверы SAP в сети Интернет найти так же просто, как и любые другие доступные интернет-ресурсы, только пользы злоумышленник может получить гораздо больше. Поместив в строку поиска несложное выражение, например inurl:/irj/portal (находит десятки тысяч систем) или inurl:/wsnavigator/jsps/test.jsp (находит 2430 записей), можно обнаружить SAP-серверы крупнейших мировых компаний, доступные через Интернет. Перейдем к практике.

Платформа SAP NetWeaver J2EE Engine представляет собой сервер приложений стандарта J2EE, который позволяет размещать на себе приложения, написанные на Java. Его можно сравнить со знакомым всем Apache Tomcat, только на несколько порядков больше и cложнее, а там где есть сложность, непременно появляются уязвимости. На данном сервере, собственно, и располагаются сами бизнес-системы, такие как SAP Portal, SAP XI, SAP PI или, например, Solution Manager, а также приложения собственной разработки. Такие крупные системы состоят из более мелких приложений, которые по сложности зачастую сопоставимы с полноценным Web-проектом. Данных приложений по умолчанию устанавливается огромное множество. Например, в версии 6.40 их около 500, а в версии 7.2 их уже 1200.

Масштабы впечатляют, а если учитывать, что каждое приложение имеет, помимо общих, также и свои настройки безопасности и уязвимости, то адекватная защита всей платформы, не считая варианта отключения от сети, представляет собой крайне непростую задачу. Рассмотрим основные типы уязвимостей, которые были обнаружены исследовательским центром DSecRG в течение нескольких лет исследования.

Разглашение информации (средняя критичность)

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

  • получение версии и патча движка и приложения (можно узнать, какие уязвимости присутствуют);
  • неавторизованное чтение некоторых файлов журналирования (в них часто хранятся пароли и прочие важные данные);
  • неавторизованное разглашение имен пользователей (можно подбирать пароли);
  • неавторизованное сканирование внутренних хостов сети (возможен даже перебор паролей на внутренние серверы и блокировка учетных записей).

Большинство из данных уязвимостей еще не закрыто производителем. Те, что закрыты, можно исправить, установив SAP Notes (1548548, 1545883, 1503856, 948851).

Межсайтовый скриптинг (средняя критичность)

Одна из самых популярных уязвимостей, к сожалению, встречается в любом ПО, в том числе и в SAP. Она позволяет злоумышленнику получить доступ к сессии пользователя, заманив его на ссылку с внедренным кодом. Зачастую достаточно разместить эту ссылку как документ в системе SAP Portal; это повысит шансы того, что по ней будет выполнен переход. На данный момент выпущено около 20 исправлений, закрывающих около 50 уязвимостей данного типа, обнаруженных DSecRG; над остальными ведется работа. В качестве защиты рекомендуется ежемесячно устанавливать SAP Notes.

SMBrelay (высокая критичность)

Фактически это уязвимость Windows-сетей, которая так и не закрыта для некоторых атак. Для ее эксплуатации требуется, чтобы SAP-сервер стоял на Windows-кластере или чтобы 2 сервера SAP работали из-под одной доменной учетной записи. Помимо этого, уязвимое Web-приложение на SAP должно иметь интерфейс обращения к файлам. Для эксплуатации уязвимости злоумышленник поднимает поддельный SMB-сервер и передает Web-приложению SAP-ссылку на файл, находящийся на удаленном SMB-сервере. Процесс сервера SAP пытается запросить файл из-под имени своей учетной записи, которую мы перехватываем на поддельном SMB-сервере и заходим от ее имени обратно на сервер, получая тем самым права администратора на ОС (описание процесса несколько упрощено, но основная его суть такова). Аналогичную уязвимость можно использовать в связке с CSR – в случае если данный интерфейс требует аутентификации, необходимо заставить администратора пройти по ссылке так же, как для XSS-уязвимости.

Обход авторизации через Invoker Servlet (высокая критичность)

В движке J2EE есть такой механизм, как Invoker Servlet. Он позволяет вызвать любой сервлет (часть приложения, выполняющую функционал на сервере), напрямую набрав в строке URL имя класса для данного сервлета таким образом: <application name>/servlet/<servlet-name-or-class>. Проблема начинается в тот момент, когда вы размещаете ссылку на сервлет в какой-либо директории типа /admin и закрываете к ней доступ для всех, кроме администратора.


В данном случае злоумышленник может обратиться напрямую к сервлету через Invoker-механизм по ссылке /servlet/<servlet-name-or-class> и получит необходимые данные без аутентификации, так как прямой доступ к директории /servlet не заблокирован по умолчанию. Обнаружено немало таких приложений, которые позволяют выполнять различные действия в обход авторизации, хотя для защиты всего лишь требуется поставить ограничение на доступ к корневой директории или к директории /servlet. Для защиты от данной уязвимости SAP рекомендует установить SAP Note 1445998, которая добавит в систему параметр EnableInvokerServletGlobally, позволяющий глобально отключить механизм Invoker Servlet.

Обход аутентификации через подделку HTTP-запросов

На самом деле, сложно переоценить критичность уязвимости (CVSSv2 = 10), которая позволяет независимо от версии SAP и версии ОС, на которой работает SAP, получить права администратора в системе удаленно из Интернета. Причем для ее эксплуатации не требуется ничего, кроме стандартных средств ОС и минимальных знаний протокола HTTP, и что самое главное, большинство систем в Интернете действительно к ней уязвимо, что подтвердило исследование.

Уязвимость обнаружена все в том же WEB.XML, и потенциально к ней уязвимо около 40 приложений. На данный момент обнаружено 3 реально уязвимых приложения, одно из которых до сих пор в процессе обновления.

Проблема заключается в том, что механизм WEB.XML позволяет ограничить доступ к ресурсу, позволив определенной роли пользователей выполнять определенные HTTP-методы.

  • <url-pattern>/admin/*</url-pattern>
  • <http-method>GET</http-method>
  • </web-resource-collection>
  • <auth-constraint>
  • <role-name>admin</role-name>
  • </auth-constraint>
Большинство уязвимостей обнаруживается на грани программистской и администраторской ответственности, когда каждая сторона считает, что это не ее область. Тем не менее злоумышленнику, как правило, без разницы, чья это область, и он не откажется воспользоваться обнаруженной уязвимостью. В данном случае для настройки безопасности Web-сервисов используется файл WEB.XML, который программисты зачастую игнорируют или используют минимально, полагаясь на то, что это задача администраторов. Администраторы же, в свою очередь, зачастую вообще не представляют, что есть такой файл и что его настройка влияет на безопасность.

В нашем примере в папку /admin может заходить только пользователь с ролью admin и выполнять метод GET. Как оказалось, все, что явно не запрещено, то разрешено, то есть, например, обращение методом HEAD, который делает ровно то же самое, что и GET, только не показывает результат пользователю, может быть реализовано анонимно без наличия и пользователя, и роли. Таким образом, задача заключается в том, чтобы найти все критичные приложения, которые могут быть вызваны методом HEAD и у которых небезопасно определен WEB.XML. Одно из найденных нами приложений, которое является системным, позволяет создавать в системе пользователя и назначать ему любую роль. В качестве защиты от данной атаки компания SAP выпустила патч 9 августа, описывающий все тонкости настроек. Тем не менее другие уязвимости данного класса пока не закрыты, что несет потенциальный риск. Также в файле WEB.XML, помимо данной уязвимости, есть множество других параметров безопасности.

В заключение можно сказать, что это далеко не весь набор проблем J2EE-движка, и в следующих выпусках мы затронем безопасность Web-приложений ABAP-движка, на котором построены системы типа CRM и SRM.

Опубликовано: Журнал "Information Security/ Информационная безопасность" #4, 2011

Приобрести этот номер или подписаться

Статьи про теме