Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
DRA_writeup — Разбор уязвимости переполнения буфера стека Oracle DSR (DRA) CVE-2014-6598 | Kitploit
Инструменты/GitHubGitHub/kpn-ciso/dra_writeup
Фреймворки для эксплойтовАнализ уязвимостейЭксплуатацияОбратная инженерияФаззингСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubkpn-ciso/dra_writeup

DRA_writeup

Разбор уязвимости переполнения буфера стека Oracle DSR (DRA) CVE-2014-6598

Репозиторий
1462411 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Уязвимости безопасности в Oracle DSR

KPN CISO REDteam

KPN — телекоммуникационный оператор, расположенный в Нидерландах. Команда CISO REDteam была создана в 2013 году и является командой этичного хакинга KPN. Она участвует в тестировании безопасности приложений и сервисов KPN, чтобы гарантировать, что данные наших клиентов защищены от несанкционированного доступа, модификации и потери.

Общие сведения о Diameter Routing Agent

KPN управляет крупнейшей мобильной сетью в Нидерландах. Одним из компонентов сети 4G, которую эксплуатирует KPN, является приложение Diameter Routing Agent под названием Oracle Diameter Signalling Router (DSR). Diameter Routing Agent (DRA) — это функциональный элемент в сети 3G или 4G, который обеспечивает возможности маршрутизации в реальном времени, чтобы гарантировать правильную маршрутизацию сообщений между элементами сети. [3GPP] представил DRA для решения проблемы увеличения объема трафика сигнализации Diameter и растущей сложности сетей 4G LTE. Он может быть развернут либо как базовый маршрутизатор, направляющий трафик между элементами Diameter в домашней сети, либо как пограничный маршрутизатор, направляющий трафик между элементами Diameter в домашней и роуминговой сетях. 3GPP определяет использование протокола Diameter для ряда интерфейсов, включая один (S6a), который используется для связи MME-HSS, а также для роуминга.

На рисунке ниже показано типичное развертывание DRA в среде LTE. Все интерфейсы между элементами — это интерфейсы S6a.

alt text

  • [PLMN] = public land mobile network (наземная сеть подвижной связи общего пользования)
  • [IPX] = IP eXchange (IP-обмен)
  • [HSS] = Home Subscriber Server (домашний сервер абонентов)
  • [MME] = Mobile Management Entity (объект управления мобильностью)

Oracle DSR представляет собой кластер машин, работающих под управлением CentOS Linux, выполняющий функции DRA. Обычно он подключается к различным MME и HSS в домашней сети LTE, но также может быть связан с роуминговыми партнерами через сеть IPX.

Уязвимости

Используя платформу [Codenomicon] DEFENSICS, команда KPN REDteam обнаружила две серьезные уязвимости в приложении Oracle DSR версии 5.0:

  • Переполнение буфера стека [CVE-2014-6598] в процессе dsr.
  • Ядерный сбой SCTP, который был ранее сообщен и исправлен в рамках [CVE-2014-0101].

Первая уязвимость позволяет неаутентифицированному удаленному злоумышленнику, подключенному к сети IPX, полностью скомпрометировать DRA и его компоненты. Когда злоумышленник получает полный контроль над системой DRA, он может отслеживать весь трафик, проходящий через DRA, и, возможно, проникнуть в ядро сети оператора связи.

График ответственного раскрытия

  • 2014-07-24: Сообщено об уязвимостях в Oracle.
  • 2014-10-21: Выпущен патч безопасности для операторов связи, использующих уязвимую DSR.
  • 2015-01-20: Публичный выпуск Oracle в их Critical Patch Update ([CPU]).
  • 2015-01-29: Публикация этого отчета.

Заключение

Oracle отнеслась к сообщенным уязвимостям серьезно, и команда KPN REDteam тесно сотрудничала с Oracle для их устранения, что также было отмечено в их консультации для клиентов:

«Недавние тесты безопасности выявили две уязвимости в версиях продукта Oracle Diameter Signaling Router. Для защиты вашей сети от возможных эксплуатаций этих уязвимостей Oracle настоятельно рекомендует без промедления применить описанные здесь меры. Oracle выражает благодарность Frank Cozijnsen, этичному хакеру, KPN CISO REDteam, за обнаружение уязвимости стека Diameter, описанной ниже. Особая благодарность выражается KPN за поддержку во время фазы анализа Oracle. Примечание: эти находки будут публично раскрыты в следующем плановом CPU Oracle, запланированном на 20 января 2015 года.»

Обнаруженные проблемы представляют серьезную угрозу для операторов связи, использующих Oracle DSR, и могут быть использованы любым злоумышленником, имеющим доступ к соединению IPX.

Подход к тестированию

Команда KPN REDteam тестирует продукты и услуги до их развертывания в производственных сетях. В рамках проекта модернизации приложение Oracle DSR версии 5.0 было протестировано с точки зрения безопасности командой KPN REDteam. Тестирование безопасности включало фаззинг реализации DIAMETER Oracle DSR с использованием [Codenomicon Diameter Server test Suite]. Сообщение Capabilities Exchange Request (CER), которое используется для проверки возможностей DIAMETER принимающего сервера, было выбрано в качестве первоначальной цели для фаззинга. Это сообщение было выбрано, потому что оно не пересылается другим системам, таким как HSS, а обрабатывается самим DSR. Во время фаззинга на блейдах Message Processor (MP) DSR были замечены несколько сбоев процесса «dsr».

Технические подробности

С помощью GDB с плагином [PEDA] сбой был проанализирован, и в конечном итоге был написан удаленный эксплоит. Сбой был вызван записью за границы буфера, находящегося на стеке. Запись за границы повредила стек управляемыми пользователем данными. Также был перезаписан сохраненный указатель возврата, то есть адрес, по которому программа возвращается после выхода из функции. Если злоумышленник может контролировать этот указатель возврата, это может привести к выполнению произвольного кода.

alt text

Основная причина написания этого блога — объяснить, как команда KPN REDteam смогла обойти механизмы защиты ASLR и NX и создать рабочий удаленный эксплоит для выполнения кода. Обычно ASLR и NX не являются большим препятствием для злоумышленников, но DSR работает на 64-битной CentOS. Существует не так много практической документации по Return Oriented Programming (ROP) на 64-битных системах Linux с защитой ASLR.

Во время отладки было замечено, что библиотека libc всегда отображалась по одному и тому же адресу в процессе dsr, и этот адрес не менялся после перезагрузки. Другие библиотеки отображались по случайным адресам памяти в процессе dsr. Знание адреса памяти libc позволяет использовать libc в качестве источника для ROP-гаджетов. Другой вариант — использовать сам бинарник dsr в качестве источника для ROP-гаджетов, но количество полезных гаджетов в этом файле ограничено.

mprotect()

Чтобы обойти защиту NX, можно использовать функцию mprotect(), чтобы сделать стек исполняемым и выполнить наш шелл-код.

Функция mprotect() требует следующие значения в соответствующих регистрах:

  • %RDI содержит смещение памяти области, которая будет изменена (на границе страницы).
  • %RSI содержит размер изменяемой области памяти.
  • %RDX содержит бит разрешений, в нашем случае 0x7 -> разрешения rwx.

Если все эти регистры установлены, mprotect() можно вызвать по смещению 0xe54b0 в целевой версии библиотеки libc.

ROP-цепочка

Следующая часть документа предполагает знание ROP и того, как он работает. Хороший пример создания ROP-цепочки на 32-битной системе Linux есть на [shell-storm.org]. Из-за «частичного» ASLR местоположение самого стека было непредсказуемым. ROP-гаджеты использовались для сохранения значения указателя стека (%RSP) в регистре %RSI.

Шаг 1

Регистр %RDI должен содержать смещение памяти области памяти, которую нужно сделать исполняемой.

Указатель стека можно использовать для определения этого адреса памяти, и его нужно установить на границу страницы памяти. Инструкция XOR может быть использована для обнуления последних 4 байт этого адреса, чтобы он соответствовал границе страницы. Доступен был только гаджет, который делает это для регистра %RAX, поэтому первый шаг — получить значение указателя стека в регистр %RAX.

Скачать инструмент