Статья опубликована в рамках: XLVI Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 07 июня 2018 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
УЯЗВИМОСТЬ 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 протоколами также может быть автоматизирован и не представляет большой трудности.
Список литературы:
- Joxean Koret personal site [Электронный ресурс]. URL: http://joxeankoret.com/
- CVE-2012-1675 Detail [Электронный ресурс]. URL: https://nvd.nist.gov/vuln/detail/CVE-2012-1675
дипломов
Оставить комментарий