(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Digital Security: обзор последних уязвимостей СУБД Oracle

Источник: securitylab

В июле 2009 года компания Oracle выпустила очередной пакет ежеквартальных обновлений, содержащий заплатки для 30 уязвимостей в различных продуктах, 10 из которых затрагивают СУБД. На сайте производителя приведено описание пакета с указанием продуктов и их версий, на которые распространяется обновление: [1]

http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpujul2009.html

Несколько слов о текущем обновлении

Данный релиз отличается от большинства предыдущих, в которых основная масса закрытых уязвимостей была обнаружена в PL/SQL процедурах, и для их эксплуатации требовались аутентификационные данные. Уязвимости PL/SQL инъекции во встроенных процедурах СУБД Oracle позволяли повысить привилегии обычного пользователя до роли  DBA [2] или позволяли читать критичные данные в системе [3]. 

В данном обновлении также присутствует одна закрытая уязвимость типа PL/SQL Injection. Что самое интересное, данная уязвимость [4] была закрыта ещё в апреле 2006 года, но, как оказалось, закрыта она была недостаточно, и с некоторыми модификациями опубликованный в 2006 году эксплоит можно было использовать вплоть до последнего обновления. Старый и новый эксплоиты к данной уязвимости доступны в свободном доступе на сайте компании Red-database-security и позволяют повысить привилегии любого пользователя до роли DBA [5].

Учитывая то, что в  большинстве систем присутствуют стандартные пользователи, такие как DBSNMP, SCOTT и  прочие, со стандартными паролями (по нашей статистике тестирований на проникновение примерно в 90% СУБД присутствуют стандартные учётные записи со стандартными паролями [6]), и получить доступ с непривилегированной учетной не составляет труда, то данная  уязвимость представляет собой реальную опасность;  к тому же код эксплоита доступен для всеобщего скачивания.  

Удалённые уязвимости высокой степени критичности в сетевых протоколах СУБД Oracle

Теперь сосредоточимся на более  критичных уязвимостях. В июльском пакете обновлений присутствует ряд уязвимостей в сетевом протоколе Oracle NET, позволяющих провести удалённую атаку, в половине случаев случаях даже не имея авторизационных данных. Именно на них мы и заострим внимание.

Таблица 1. Уязвимости СУБД Oracle, закрытые в обновлении за июль 2009 года.

Vuln#

Component

Protocol

Package and/or Privilege Required

Remote Exploit without Auth.?

CVSS VERSION 2.0 RISK (see Risk Matrix Definitions)

Last Affected Patch set (per Supported Release)

Base Score

Access Vector

Access Complexity

Authentication

Confidentiality

Integrity

Availability

CVE-2009-1020

Network Foundation

Oracle Net

None

No

9.0

Network

Low

Single

Complete

Complete

Complete

9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.4, 11.1.0.7

CVE-2009-1019

Network Authentication

Oracle Net

None

Yes

7.5

Network

Low

None

Partial+

Partial+

Partial+

9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.4, 11.1.0.7

CVE-2009-1963

Network Foundation

Oracle Net

None

No

7.5

Network

Low

Single

None

Partial+

Complete

11.1.0.6

CVE-2009-1021

Advanced Replication

Oracle Net

Create Session

No

5.5

Network

Low

Single

Partial+

Partial+

None

9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.3

CVE-2009-1966 (Oracle Enterprise Manager)

Config Management

HTTP

Valid Session

No

5.5

Network

Low

Single

Partial

Partial

None

11.1.0.7

CVE-2009-1967 (Oracle Enterprise Manager)

Config Management

HTTP

Valid Session

No

5.5

Network

Low

Single

Partial

Partial

None

11.1.0.7

CVE-2009-0987

Upgrade

Oracle Net

Create Session

No

5.5

Network

Low

Single

Partial

Partial

None

9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.3

CVE-2009-1973

Virtual Private Database

Oracle Net

Access to tables with VPD policies

No

5.5

Network

Low

Single

Partial+

Partial+

None

10.1.0.5, 10.2.0.4, 11.1.0.7

CVE-2009-1970

Listener

Oracle Net

None

Yes

5.0

Network

Low

None

None

None

Partial+

9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.4, 11.1.0.7

CVE-2009-1968

Secure Enterprise Search

HTTP

None

Yes

4.3

Network

Medium

None

None

Partial

None

10.1.8.3

CVE-2009-1015

Core RDBMS

Oracle Net

Create Session

No

4.0

Network

Low

Single

None

Partial+

None

9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.4

CVE-2009-1969

Auditing

Oracle Net

Create Session

No

2.1

Network

High

Single

Partial

None

None

9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.4, 11.1.0.7

Из приведённых в официальном Advisory уязвимостей наибольший интерес представляют уязвимости, обнаруженные исследователем Денисом Юричевым:

  • CVE-2009-1020   9 баллов ( 6.5 баллов в UNIX ) по   метрике CVSS v2
  • CVE-2009-1019   7.5 баллов по   метрике CVSS v2
  • CVE-2009-1963  7.5 баллов по   метрике CVSS v2 
  • CVE-2009-1970   5 баллов по   метрике CVSS v2

Рассмотрим перечисленные уязвимости более подробно:

CVE-2009-1020  

Уязвимости [7] присвоено 9 баллов из 10. При успешном выполнении данная уязвимость позволяет получить полный контроль над операционной системой, где установлена СУБД, с правами администратора в OS Windows (по умолчанию) или с правами пользователя Oracle в UNIX. Данной уязвимости подвержены все версии СУБД, начиная с 9g R2 и заканчивая 11i. Доступный в сети эксплоит позволяет выполнить только атаку на отказ в обслуживании.

Для реализации уязвимости требуется иметь доступ к СУБД с правами любой учётной записи, к примеру, SCOTT. Уязвимость заключается в возможности записать 4-х байтное нулевое значение в произвольное место памяти СУБД при помощи модификации сетевого пакета, который посылается клиентской программой на сервер при выполнении  любого запроса, к примеру "select * from v$version".

На самом деле критичность данной уязвимости преувеличена по двум причинам. Во-первых, злоумышленнику необходимо иметь учётную запись в СУБД, что теоретически может привести к получению административного доступа, например, способом, описанным автором в исследовании "Проникновение в ОС через приложения. Получение доступа к ОС, используя непривилегированную учётную запись в СУБД Oracle", в которой представлен модуль для Metasploit, позволяющий получить административный доступ к ОС с правами любого пользователя СУБД [8]. Во вторых, записав значение 0 в любую ячейку памяти, мы сможем в большинстве случаем вызвать отказ в обслуживании, но чтобы выполнить произвольный код, необходимо немало постараться, и код эксплоита будет очень сильно зависеть от версии программного обеспечения Oracle и операционной системы, на которой установлена СУБД.

CVE-2009-1019  

Уязвимости [9] присвоено 7.5 баллов из 10. При успешном выполнении данная уязвимость позволяет теоретически получить полный контроль над СУБД. Данной уязвимости подвержены все версии СУБД, начиная с 9g R2 и заканчивая 11i. Доступный в сети эксплоит позволяет выполнить только атаку на отказ в обслуживании.

Для реализации уязвимости не требуется никаких прав СУБД, и любой удалённый нарушитель может произвести атаку путём посылки некорректных NSPTCN пакетов на порт Листенера, что в некоторых случаях приводит к повреждению кучи и отказу в обслуживании.

Из приведённого описания понятно, что выполнение произвольного кода возможно больше в теории, но, тем не менее, удалённый отказ в обслуживании через порт Листенера при отсутствии аутентификационных данных - уязвимость достаточно критичная, особенно в периоды бухгалтерской отчётности.

CVE-2009-1063 

Уязвимости [10] присвоено 7.5 баллов из 10. Успешная реализация атаки позволяет загрузить процессор на 100% и выполнить атаку на отказ в обслуживании; эксплоит для реализации данной атаки доступен в сети. Уязвимости подвержена только версия  СУБД  11.1.0.6.

Данная уязвимость похожа на приведённую выше (CVE-2009-1020). Для реализации уязвимости требуется иметь доступ к СУБД с правами любой учётной записи, к примеру, SCOTT. Уязвимость возникает при перезаписи типа (изменяется тип из TTIPFN на DD) TNS протокола при посылке клиентом  любого стандартного запроса типа "select * from v$version". В результате этого, система загружается на 100%, и происходят ошибки повреждения памяти.

Критичность данной уязвимости, как и уязвимости CVE-2009-1020, на наш взгляд, не высока, так как позволяет выполнить отказ в обслуживании только при условии наличия учётной записи в системе, тем более, уязвимости подвержена только 11 версия СУБД, которая на данный момент в коммерческой эксплуатации практически не встречается.

CVE-2009-1070  

Уязвимости [11] присвоено 5 баллов из 10. При успешном выполнении данная уязвимость позволяет выполнить отказ в обслуживании службы Листенера, в результате чего пользователи не смогут подключаться к СУБД. Данной уязвимости подвержены все версии СУБД, начиная с 10g R1 и заканчивая 11i. Доступный в сети эксплоит позволяет выполнить атаку на отказ в обслуживании.

Для реализации уязвимости требуется отсылать две TNS команды на порт Листенера с определёнными значениями в бесконечном цикле. Подробности описаны в официальном Advisory.

В итоге мы получаем удалённый отказ в обслуживании, для выполнения которого достаточно запустить публично доступный эксплоит.

Уязвимости средней и низкой степени критичности.

Из менее критичных уязвимостей, закрытых в данном обновлении, следует отметить:

  • CVE-2009-1068   4.3 балла  по   метрике CVSS v2
  • CVE-2009-1069   2.1 балла  по   метрике CVSS v2

CVE-2009-1068 

Данная уязвимость [12] обнаружена специалистами DSecRG в приложении Oracle Secure Enterprise Search, которое предоставляет безопасный удалённый доступ ко всем источникам данных в организации - веб-сайтам, файловым серверам, системам управления контентом, системам планирования ресурсов и системам управления взаимодействия с заказчиком. С помощью обнаруженной уязвимости внешний нарушитель может получить доступ к сессии аутентифицированного пользователя системы.

В одной из общедоступных страниц поиска (скрипт "search") обнаружена уязвимость межсайтового скриптинга (XSS). Уязвимым параметром является search_p_groups. Злоумышленник может внедрить XSS, добавив javascript код в параметр search_p_groups, после чего отправить зарегистрированному пользователю системы письмо со ссылкой на страницу с XSS, которая является для него доверенным ресурсом и, в случае захода пользователя по ссылке, получить доступ к его сессии.   

Критичность данной уязвимости по факту зависит от уровня осведомлённости пользователей и наличия специализированных средств защиты клиентских рабочих станций. Учитывая средние данные перехода по ссылке при использовании  сценариев социальной инженерии (от 10% до 50%) и то, что наличие на рабочих станциях пользователей HIPS пока ещё встречается не везде, можно говорить, что данная уязвимость вполне реализуема.

 

CVE-2009-1021  

Уязвимости [13] присвоено 2.1 балла из 10. Уязвимость обнаружена Алекандром Корнбрустом  из Red-database-security и позволяет получить доступ к хэшам паролей пользователей, которые записываются в журналы аудита при смене пароля пользователя.

Хэш пароля пользователя длинной менее 9 символов в большинстве случаев можно расшифровать ("большинство случаев" - это когда используется стандартный набор символов СУБД Oracle, такой как буквы, цифры и спецсимволы @,#,$), используя rainbow tables или стандартные методы перебора, за разумное время. Об этом можно подробнее почитать в статье "Запароленная власть" [14].

Таким образом, уязвимость представляет собой опасность в случае использования слабых паролей. Для того, чтобы настроить безопасно парольную политику в СУБД Oracle, рекомендуем воспользоваться  статьёй  "Настройка парольной политики в СУБД Oracle", доступной на ресурсе PCIDSS.RU [15]

Альтернативный вариант защиты

В качестве альтернативного решения для защиты от атак на Листенер, а также в целом для повышения уровня защищённости, рекомендуется разграничить доступ к Листенеру. Разграничение осуществляется при помощи технологии  "valid node checking", что на  практике реализуется путём добавления нескольких строк в конфигурационный файл sqlnet.ora, находящийся в директории $ORACLE_HOME/network/admin/. Пример:

tcp.validnode_checking = yes
tcp.invited_nodes = (192.168.0.1, 192.168.0.2, Adminstation, …)

Директива tcp.validnode_checking включает ограничение по IP адресам. Директива tcp.invited_nodes позволяет задавать список разрешённых адресов. Разрешено вводить только отдельные IP адреса и имена хостов. Список подсетей вводить запрещено. Также существует директива tcp.excluded_nodes, которая  позволяет задавать список запрещённых адресов, но рекомендуется использовать "белый список". Более подробно о защите Листенера и безопасности СУБД Oracle в целом, можно прочитать в недавно вышедшей книге "Безопасность Oracle глазами аудитора: нападение и защита". [16]

 

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 21.10.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Standard Edition 2 Processor License
Oracle Database Personal Edition Named User Plus License
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Standard Edition 2 Named User Plus License
IBM Domino Messaging Client Access License Authorized User License + SW Subscription & Support 12 Months
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Компьютерные книги. Рецензии и отзывы
Компьютерная библиотека: книги, статьи, полезные ссылки
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100