Поздравляем с Днем народного единства!
   
Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: XLVI Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 07 июня 2018 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Оганисян А.С. УЯЗВИМОСТЬ CVE-2012-1675 В СУБД ORACLE // Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ: сб. ст. по мат. XLVI междунар. студ. науч.-практ. конф. № 11(46). URL: https://sibac.info/archive/meghdis/11(46).pdf (дата обращения: 04.11.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

УЯЗВИМОСТЬ CVE-2012-1675 В СУБД ORACLE

Оганисян Айк Саядович

студент, Самарский Национальный Исследовательский Университет имени академика С.П.Королёва

РФ, г. Самара

Додонов Михаил Витальевич

научный руководитель,

доц., Самарский Национальный Исследовательский Университет имени академика С.П.Королёва

РФ, г. Самара

1. CVE-2012-1675

Описание:

Сервис TNS Listener, используемый в Oracle Database 11g 11.1.0.7, 11.2.0.2 и 11.2.0.3 и 10g 10.2.0.3, 10.2.0.4 и 10.2.0.5, а также в Oracle Fusion Middleware, Enterprise Manager, E-Business Suite и, возможно, других продуктах, позволяет злоумышленникам удаленно выполнять произвольные команды базы данных, проведя т.н. "TNS Poison" атаку (разновидность техники MITM).

 

Рисунок 1. Матрица Риска

 

Атака "TNS Poison":

Атака "TNS Poison" возможна благодаря наличию у сервиса TNS Listener такого функционала, как удаленное конфигурирование, необходимое для создания кластера базы данных (RAC — Real Application Cluster). Обладая минимальной информацией об уязвимой СУБД, злоумышленник может «зарегистрироваться» в сервисе TNS Listener, выдавая себя за узел кластера.

При наличии в кластере двух или более узлов TNS Listener будет пытаться «балансировать» нагрузку на кластер между этими узлами. Злоумышленник, таким образом, может получить доступ только к части подключений, приходящихся на кластер, однако для подключений «клиент – злоумышленник» последний имеет возможность просматривать весь передаваемый в таких подключениях трафик. Перенаправляя (модифицированные) данные обратно в СУБД (полноценная MITM атака), злоумышленник получает возможность полностью контролировать передаваемый трафик.

Историческая справка:

  • Данная уязвимость была найдена исследователем безопасности по имени Joxean Koret в СУБД Oracle еще в 2008 году. В том же году Joxean Koret сообщает о ней Oracle.
  • 17 апреля 2012 года Joxean Koret публикует детали найденной им уязвимости, полагая что она была устранена вышедшим в том же месяце CPU (она не была устранена).
  • 30 апреля 2012 года Oracle выпускает одноразовую рекомендацию касательно данной уязвимости.
  • 20 июня 2014 года Oracle обновляет рекомендацию, подтверждая наличие CVE-2012-1675 в 11.2.0.4 версии СУБД, спустя 8 месяцев после релиза.

Сколько экземпляров уязвимых версий СУБД до сих пор находятся в использовании в 2018 году, не известно.

2. Реализация атаки на уязвимую СУБД

Все подробности уязвимости CVE-2012-1675 и реализации атаки на нее находятся в этом документе. Алгоритм атаки и все скрипты, используемые в данном разделе, были изначально разработаны автором этого документа и принадлежат ему.

Мы в рамках настоящей статьи ограничимся лишь практической частью атаки, а точнее, ее реализацией над уязвимой версией СУБД Oracle.

Для начала уточним некоторые детали:

  • При реализации данной атаки вовлеченными в нее сторонами являлись:
  • Сервер: ВМ#1 на ОС Windows 10 v1803 с установленной на ней Oracle Database XE Release 11.2.0.2
  • Клиент: ВМ#2 на ОС Windows 10 v1803 с установленной на ней Oracle Database XE Release 11.2.0.2 (использовался только интерпретатор SQL*Plus)
  • Злоумышленник: ВМ#3 на ОС Ubuntu 16.04.4 LTS с установленной на ней Python 2.7.12
  • Все 3 участвующие стороны находились в локальной сети 192.168.1.0/24 и имели соответственно 105 (Сервер), 101 (Клиент) и 102 (Злоумышленник) адреса хостов.

Перед началом атаки убедимся, что в TNS Listener на сервере не зарегистрировано внешних подключений.

 

Рисунок 2. TNS Listener Status до проведения атаки

 

Для проведения атаки нам понадобятся 2 скрипта любезно предоставленных автором упомянутого документа в открытом доступе:

  • tnspoisonv1.py – необходим для «отравления» TNS Listener-а на сервере
  • proxy.py – необходим для перенаправления трафика клиентов обратно на сервер

Допустим, что Злоумышленнику известны IP адрес сервера, порт соответствующий сервису TNS Listener сервера и SID СУБД сервера. Запустим оба скрипта на выполнение на машине Злоумышленника и проверим, что «отравление» произошло.

Таблица 1.

Параметры скриптов

Скрипт

Параметры

local-ip

local-port

remote-ip

remote-port

service-name

tnspoisonv1

192.168.1.102

1521

192.168.1.105

1521

ORA112

proxy

-

 

Рисунок 3.  TNS Listener Status после регистрации в сервисе Злоумышленника

 

Видим, что TNS Listener на сервере зарегистрировал новое подключение. Осталось только проверить, что подключения пользователей будут перенаправляться на машину Злоумышленника, чтобы атака считалась успешной.

 

Рисунок 4.  Соединение клиента с удаленной СУБД, отправка запроса и получение результата

 

Рисунок 5. Трафик цепи Клиент–…–Сервер на машине Злоумышленника

 

Как видно трафик недавно подключенного пользователя, действительно, проходит через машину Злоумышленника, при чем команды БД и соответствующие им ответы СУБД (исключая данные аутентификации) передаются по сети в открытом виде.

3. Методы устранения CVE-2012-1675

3.1. Краткий обзор доступных методов

Кроме «обходных» способов, предложенных Joxean Koret, в его публикации относительно "TNS Poison", существуют также решения, опубликованные самой Oracle в своей рекомендации по данной уязвимости. Oracle даже включила функционал Advanced Security SSL/TLS в пакет стандартного и корпоративного изданий, ранее доступный только в платных версиях.

Ни один из известных способов, однако, не включен по умолчанию в версиях СУБД, начиная с 8.1.7.x и заканчивая 11.2.0.4. В версиях 12.1.0.x VNCR выставлен по умолчанию на значение LOCAL, что также не делает эту версию абсолютно безопасной относительно уязвимости CVE-2012-1675.

Доступные методы устранения уязвимости CVE-2012-1675для версий СУБД выше 8.1.7.0 представлены в следующей таблице.

Таблица 2.

Доступные методы устранения уязвимости

Database Version

SSL Encrypt with Certificate

COST

class of secure transport

VNCR

valid node checking registration

Preferences

See ASO

1453883.1

1340831.1 (RAC)

1600630.1

8.1.7.x – 10.2.0.3

 

 

10.2.0.3 – 10.2.0.5

 

11.1.0.x

 

11.2.0.1 – 11.2.0.3

 

11.2.0.4

12.1.0.x*

(по умолчанию)

* в 12c удаленная регистрация по умолчанию запрещена

 

3.2. SSL Encrypt with Certificate

Данный способ заключается в настройке СУБД для работы с протоколами SSL/TLS. Детали работы этих протоколов в СУБД Oracle изложены в ASO и не являются предметом настоящей работы.

3.3. COST

COST (Class Of Secure Transport) – класс параметров, определяющих список протоколов транспортного уровня, считающихся безопасными для администрирования и регистрации для конкретного Listener-а. COST не затрагивает клиентские подключения.

  • SECURE_CONTROL_<listener_name> – определяет список протоколов, по которым могут передаваться команды управления
  • SECURE_REGISTER_<listener_name> – определяет список протоколов, по которым могут передаваться запросы на регистрацию
  • SECURE_PROTOCOL_<listener_name> – определяет список протоколов, по которым могут передаваться команды администрирования и запросы на регистрацию
  • DYNAMIC_REGISTRATION_<listener_name> – включает/отключает возможность динамической регистрации (не затрагивает статическую регистрацию)

Стоит учесть, что при выборе т.н. Secure протоколов, так или иначе потребуется настойка как серверной, так и клиентской части для работы с SSL/TLS.

3.4. VNCR

VNCR (Valid Node Checking Registration) – функционал, добавленный в СУБД Oracle с версией 11.2.0.4, как замена COST, и присутствующий во всех версиях СУБД, выходивших после.

VALID_NODE_CHECKING_REGISTRATION_<listener_name>=Setting

Таблица 3.

Описание опций

Setting

Description

OFF | 0

VNCR is off (11.2.0.4 default value)

ON | 1 | LOCAL

VNCR is on (12.1.0.x default value)

SUBNET | 2

VNCR is on (регистрация разрешена для всех машин в локальных подсетях)

 

В случае, если опция VNCR включена и, кроме того, указаны параметры REGISTRATION_INVITED_NODES_<listener_name> и/или REGISTRATION_EXCLUDED_NODES_<listener_name>, то учитываются также адреса, указанные в этих параметрах.

4. Устранение CVE-2012-1675 в уязвимой СУБД

Для устранения CVE-2012-1675 в Oracle Database XE Release 11.2.0.2 был использован метод COST. Для проверки результата сервер с СУБД был просканирован утилитой Nmap с применением скрипта, разработанного специально для тестирования удаленных хостов на данную уязвимость. Результаты сканирования до попытки устранения уязвимости и после нее представлены на рисунке ниже.

 

Рисунок 6. Сканирование сервера, содержащего уязвимую версию СУБД

 

Снова «зарегистрировать» машину злоумышленника в сервисе TNS Listener сервера после попытки устранения уязвимости также не удалось.

Вывод

Рассмотренный в данной статье метод проведения атаки "TNS Poison" содержит в себе некоторые неудобства. К примеру, злоумышленнику должны быть известны как минимум IP адрес, порт и SID сервера и находящейся на нем СУБД для проведения успешной атаки. К тому же, использованные для атаки скрипты далеко не универсальны и могут работать только на некотором множестве входных данных, таких как 4-хзначный номер порта или 6-изначный SID СУБД. Это, однако, не означает, что уязвимыми являются серверы с СУБД, подходящие под это множество, поскольку изменение исходного кода скриптов для работы в каждом конкретном случае не должно составлять труда при наличии базового понимания конструкций  языка Python, а также работы протокола Oracle Net и его сервисов.

Устранение уязвимости CVE-2012-1675, с другой стороны, оказалось довольно простым в исполнении. Алгоритм действий, необходимых для устранения уязвимости, метода COST для работы с Secure протоколами также может быть автоматизирован и не представляет большой трудности.

 

Список литературы:

  1. Joxean Koret personal site [Электронный ресурс]. URL: http://joxeankoret.com/
  2. CVE-2012-1675 Detail [Электронный ресурс]. URL:  https://nvd.nist.gov/vuln/detail/CVE-2012-1675
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.