• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Белый список против уязвимости RCE (CVE-2019-2729) в Oracle WebLogic

NokZKH

Переводчик
Забанен
Регистрация
09.02.2019
Сообщения
99
Реакции
121
Пожалуйста, обратите внимание, что пользователь заблокирован
Oracle WebLogic недавно обнаружила и исправила уязвимости в программном обеспечении удаленного выполнения кода (RCE), многие из которых были вызваны небезопасной десериализацией. Oracle исправила последнюю уязвимость, CVE-2019-2729 , во внеполосном патче безопасности 18 июня 2019 года. CVE-2019-2729 был присвоен рейтинг CVSS 9,8, что делает ее критической уязвимостью. Эта уязвимость относительно проста в использовании, но требует Java Development Kit (JDK) 1.6. По умолчанию версия 10.3.6 WebLogic поставляется с JDK 1.6.

CVE-2019-2729 по сути является обходом CVE-2019-2725 . Эта проблема безопасности, однако, впервые появилась 24 апреля 2017 года как и CVE-2017-3506 . Мы более подробно рассмотрели CVE-2019-2729, чтобы увидеть, как этот класс уязвимости был исправлен - в частности, путем внесения в черный или белый список - и почему он стал постоянной проблемой безопасности.

Основная причина CVE-2019-2725 и CVE-2019-2729
Распространение контекста на серверах WebLogic позволяет переносить информацию контекста приложения в рамках поддерживаемого протокола. Эта информация передается через сериализованные объекты Java (XML) расширяемого языка разметки. По умолчанию следующие URL-адреса принимают контекстную информацию через запросы простого протокола доступа к объектам (SOAP):

/ _async / *

/ WLS-WSAT / *

Сериализованные данные XML содержатся в тегах <work: WorkContext> запроса SOAP. Десериализации информации WorkContext реализованы в классе WorkContextXmlInputAdapter, как показано на рисунке 1.

image2.png

Рисунок 1. Класс WorkContextXmlInputAdapter, в котором реализована десериализация информации WorkContext

Как показано выше, класс XMLDecoder используется для десериализации контекстной информации. Следует отметить, что XMLDecoder - это класс, который не должен использоваться с ненадежным вводом. Как продемонстрировано в других исследованиях, он допускает произвольные вызовы методов и конструкторов для произвольных типов. Из - за рисков , связанных с использованием XMLDecoder и как смягчение для CVE-2017-3506,функция а Validate () была добавлена WorkContextXmlInputAdapter для того, чтобы отфильтровать вредоносные теги до десериализации.

В случае CVE-2019-2725, функция validate () до появления уязвимости показана на рисунке 2.

image7.png

Рисунок 2. Функция validate () до CVE-2019-2725

Как показано выше, многие теги, необходимые для RCE, фактически заносятся в черный список. Однако validate () не может учесть тег <class> , который может позволить злоумышленнику инициировать любой класс с произвольными аргументами конструктора. Это может быть использовано несколькими способами для достижения выполнения произвольного кода. Примером является инициирование объекта UnitOfWorkChangeSet , который принимает массив байтов в качестве аргумента конструктора.


image6.png

Рисунок 3. Фрагмент кода, показывающий, как UnitOfWorkChangeSet без разбора десерилизует байтовый массив после инициализации

Как показано на рисунке 3, UnitOfWorkChangeSet без разбора десериализует этот байтовый массив при инициализации. Например, байтовый массив с созданным вредоносным сериализованным объектом может использоваться для выполнения произвольного кода. Фрагмент Python, показанный на рисунке 4, может затем использоваться для генерации трафика атаки.


image5.png

Рисунок 4. Python-подтверждение концепции (PoC), способное генерировать трафик атаки, используя полезную нагрузку Jdk7u21, сгенерированную ysoserial.

Естественно, поскольку для работы этого эксплойта требуется тег <class> , Oracle продолжает добавлять этот тег в черный список в качестве патча для CVE-2019-2725.


image1.png

Рисунок 5. Черный список тега <class>, используемого для исправления CVE-2019-2725

CVE-2019-2729: обход CVE-2019-2725

С другой стороны, оказывается, что обход CVE-2019-2725 был не таким уж сложным. Фактически, для JDK 1.6 функциональность тега <class> эффективно заменяется использованием тега <array method = ”forName”> . Простая замена тега <class> на тег <array method = ”forName”> эффективно обходит черный список.

image4.png

Рисунок 6. <массив метод =»forName»> тег (выделено) , который обходит черный список для тега <класс>

Более интересная вещь в этом случае - способ, которым был исправлен CVE-2019-2729: Oracle решила использовать белый список вместо черного списка. Это достигается с помощью недавно представленной функции validateFormat (), правила белого списка которой определены в WorkContextFormatInfo.

image3.png

Рисунок 7. Фрагмент кода, показывающий, как белый список используется для исправления CVE-2019-2729

Как видно на рисунке 7, тег <array> все еще разрешен белым списком, но он может содержать только атрибуты «class» со значением «byte» или атрибут «length» с любым значением.

Лучшие практики
Хотя поначалу это может показаться не очень правильно, но обычно использование белого списка для блокировки вредоносного контента более эффективно, чем использование черного списка, особенно когда речь идет о предотвращении обходных путей, которые могут снова вызвать проблему безопасности. Системные администраторы, разработчики и ИТ-отделы / службы безопасности всегда должны применять передовые методы и меры по снижению риска, которые включают:

● Обновление до не уязвимой версии продукта с помощью аварийного патча Oracle
● Предотвращение доступа к уязвимым компонентам путем удаления war и wls-wsat.war, а затем перезапуска сервиса WebLogic (предотвращает доступ к уязвимым URL-адресам)
● Ограничение доступа к затронутому порту связи только для доверенных хостов
● Проактивный мониторинг, обнаружение и блокирование вредоносного трафика через системы предотвращения вторжений
● Добавление уровней механизмов безопасности, таких как виртуальное исправление , которое предотвращает использование известных, неизвестных и нераскрытых уязвимостей; и контроль приложений , который предотвращает несанкционированные или подозрительные приложения от выполнения

Решения Trend Micro Deep Security ™ и защиты от уязвимостей защищают системы и пользователей с помощью следующего правила Deep Packet Inspection (DPI):
● 1009816 - Уязвимость Oracle Weblogic Server, связанная с удаленным выполнением кода (CVE-2019-2729)

Инспектор Trend Micro Deep Discovery защищает клиентов от угроз , которые могут эксплуатирующих CVE-2019-2729 с помощью этого правила DDI:
● 2903: возможный эксплойт по удаленному выполнению команд Oracle Weblogic - HTTP (запрос)

Система защиты от угроз Trend Micro ™ TippingPoint® опубликовала файл Customer Shield Writer (CSW) для этой уязвимости, который доступен для загрузки пользователями в TMC . Применимое правило следующее:
● C1000001: HTTP: Уязвимость Oracle WebLogic Server, связанная с удаленным выполнением кода

Источник: https://xss.pro
Переводчик статьи - https://xss.pro/members/177895/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх