Security Lab

Удаленное переполнение буфера через MDAC в MS SQL сервере (подробности эксплуатации)

Дата публикации:22.08.2003
Всего просмотров:1709
Опасность:
Средняя
Наличие исправления: Да
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации: Локальная сеть
Воздействие: Компрометация системы
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты: Microsoft Windows 2000 Professional
Microsoft SQL Server 2000
Microsoft Windows Millenium
Microsoft Windows XP Home Edition
Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server
Microsoft Windows XP Professional
Microsoft Windows 2000 Datacenter Server
Microsoft Data Access Components (MDAC) 2.x
Описание: Unicode переполнение буфера обнаружено в MDAC, которая используется Server QL-DMO библиотекой. Удаленный атакующий может выполнить произвольный код на целевой системе. Уязвимость можно эксплуатировать через широковещательные запросы.

Одна из особенностей сетевой библиотеки SQL сервера – возможность запрашивать список SQL серверов в локальной сети. Для этого посылается широковещательное UDP сообщение к 1434 порту, которое достигнет всех приложений в локальной сети. Эта функция - компонент SQL-DMO, который используется SQL Server Service Manager (всякий раз при запуске), Enterprise Manager (при регистрации сервера), Query Analyzer и SQL (при клике на "..." клавишу), DTS (при выборе SQL сервера) и т.п.

Все SQL серверы, получающие широковещательный запрос, отвечают стандартным UDP пакетом. Если злонамеренная машина отвечает на этот широковещательный запрос слишком длинным пакетом, произойдет переполнение буфера. Переполнение происходит в UNICODE строке, так что для эксплуатации этого переполнения буфера должен использоваться Venetian метод.

Любые утилиты SQL сервера, которые используют SQL-DMO функцию для поиска SQL серверов, уязвимы к этому нападению. Нападающий может использовать несколько методов для эксплуатации этой уязвимости:

  1. Установить службу, слушающую на 1434 UDP порту, которая будет посылать эксплоит при получении данных. В этом случае злонамеренный сервис должен находится в той же самой подсети.
  2. Засыпать удаленную подсеть UDP пакетами, надеясь, что кто-то сделает уязвимый запрос. Например, посылайте злонамеренные пакеты каждые 2 сек к 192.168.3.255, которые достигнут всех машин на 192.168.3.x подсети. Когда кто-то наконец пошлет широковещательный UDP пакет, то они примут злонамеренный пакет и подвергнуться действию эксплоита.
  3. Также возможно через низко привилегированную учетную запись в MS SQL сервере послать запрос напрямую к IP адресу на сети. Следующая SQL инструкция заставит SQL сервер запросить хост с именем SERVER с UDP пакетом:
    SELECT * FROM openrowset( 'SQLOLEDB', 'server=SERVER\instance
    name;uid=sa;pwd=', '')
    
Могут быть и другие методы заставить SQL сервер посылать UDP запрос и вызвать переполнение.

Уязвимость обнаружена в Microsoft Data Access Components 2.5sp1 - 2.7 SP1

Ссылки: AppSecInc Security Alert: Buffer Overflow in UDP broadcasts for Microsoft SQL Server client utilities