В рубрику "Оборудование и технологии" | К списку рубрик | К списку авторов | К списку публикаций
За последние 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 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.
Фактически это уязвимость Windows-сетей, которая так и не закрыта для некоторых атак. Для ее эксплуатации требуется, чтобы SAP-сервер стоял на Windows-кластере или чтобы 2 сервера SAP работали из-под одной доменной учетной записи. Помимо этого, уязвимое Web-приложение на SAP должно иметь интерфейс обращения к файлам. Для эксплуатации уязвимости злоумышленник поднимает поддельный SMB-сервер и передает Web-приложению SAP-ссылку на файл, находящийся на удаленном SMB-сервере. Процесс сервера SAP пытается запросить файл из-под имени своей учетной записи, которую мы перехватываем на поддельном SMB-сервере и заходим от ее имени обратно на сервер, получая тем самым права администратора на ОС (описание процесса несколько упрощено, но основная его суть такова). Аналогичную уязвимость можно использовать в связке с CSR – в случае если данный интерфейс требует аутентификации, необходимо заставить администратора пройти по ссылке так же, как для XSS-уязвимости.
В движке 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.
На самом деле, сложно переоценить критичность уязвимости (CVSSv2 = 10), которая позволяет независимо от версии SAP и версии ОС, на которой работает SAP, получить права администратора в системе удаленно из Интернета. Причем для ее эксплуатации не требуется ничего, кроме стандартных средств ОС и минимальных знаний протокола HTTP, и что самое главное, большинство систем в Интернете действительно к ней уязвимо, что подтвердило исследование.
Уязвимость обнаружена все в том же WEB.XML, и потенциально к ней уязвимо около 40 приложений. На данный момент обнаружено 3 реально уязвимых приложения, одно из которых до сих пор в процессе обновления.
Проблема заключается в том, что механизм WEB.XML позволяет ограничить доступ к ресурсу, позволив определенной роли пользователей выполнять определенные HTTP-методы.
В нашем примере в папку /admin может заходить только пользователь с ролью admin и выполнять метод GET. Как оказалось, все, что явно не запрещено, то разрешено, то есть, например, обращение методом HEAD, который делает ровно то же самое, что и GET, только не показывает результат пользователю, может быть реализовано анонимно без наличия и пользователя, и роли. Таким образом, задача заключается в том, чтобы найти все критичные приложения, которые могут быть вызваны методом HEAD и у которых небезопасно определен WEB.XML. Одно из найденных нами приложений, которое является системным, позволяет создавать в системе пользователя и назначать ему любую роль. В качестве защиты от данной атаки компания SAP выпустила патч 9 августа, описывающий все тонкости настроек. Тем не менее другие уязвимости данного класса пока не закрыты, что несет потенциальный риск. Также в файле WEB.XML, помимо данной уязвимости, есть множество других параметров безопасности.
В заключение можно сказать, что это далеко не весь набор проблем J2EE-движка, и в следующих выпусках мы затронем безопасность Web-приложений ABAP-движка, на котором построены системы типа CRM и SRM.
Опубликовано: Журнал "Information Security/ Информационная безопасность" #4, 2011