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