Бюллетень по безопасности

Бюллетень по безопасности Майкрософт MS02-039 — критически важный

Переполнение буферов в службе разрешения SQL Server 2000 может включить выполнение кода (Q323875)

Опубликовано: 24 июля 2002 г. | Обновлено: 31 января 2003 г.

Версия: 1.2

Первоначально опубликовано: 24 июля 2002 г.

Обновлено: 31 января 2003 г.

Итоги

Кто следует прочитать этот бюллетень: Системные администраторы с помощью Microsoft® SQL Server™ 2000 и Microsoft Desktop Engine 2000.

Влияние уязвимости: три уязвимости, наиболее серьезные из которых могут позволить злоумышленнику получить контроль над затронутым сервером.

Максимальная оценка серьезности: критическое

Рекомендация. Системные администраторы должны немедленно установить исправление.

Примечание. Исправление, выпущенное с помощью этого бюллетеня, эффективно защищает SQL Server 2000 и MSDE 2000 от вируса червя SQL Slammer. Однако это исправление заменено исправлением, выпущенным с помощью MS02-061 , которое содержит исправления для дополнительных уязвимостей безопасности в этих продуктах. Корпорация Майкрософт рекомендует клиентам SQL 2000 и MSDE 2000 применять исправление из MS02-061.

Затронутого программного обеспечения:

  • Microsoft SQL Server 2000
  • Microsoft Desktop Engine (MSDE) 2000

Общие сведения

Технические сведения

Техническое описание:

Это исправление безопасности не содержит исправления из статьи базы знаний Майкрософт 317748 , необходимой для обеспечения нормальной работы SQL Server 2000 и MSDE 2000. Если вы применили это исправление безопасности к установке SQL Server 2000 или MSDE 2000 перед применением исправления из статьи microsoft Knowledge Patch 317748, необходимо ответить "нет", если и когда появится запрос на перезапись файлов, чтобы убедиться, что файлы не перезаписываются из исправления безопасности.

SQL Server 2000 и MSDE 2000 позволяют размещать несколько экземпляров SQL Server на одном физическом компьютере. Каждый экземпляр работает для всех намерений и целей, как будто это был отдельный сервер. Однако несколько экземпляров не могут использовать стандартный порт сеанса SQL Server (TCP 1433). Хотя экземпляр по умолчанию прослушивает TCP-порт 1433, именованные экземпляры прослушивают любой порт, назначенный им. Служба разрешения SQL Server, которая работает с портом UDP 1434, позволяет клиентам запрашивать соответствующие сетевые конечные точки для конкретного экземпляра SQL Server.

Здесь есть три уязвимости безопасности. Первые два являются переполнением буфера. Отправив тщательно созданный пакет в службу разрешения, злоумышленник может привести к перезаписи части системной памяти (куча в одном случае, стек в другом). Перезапись данных случайными данными, скорее всего, приведет к сбою службы SQL Server; Перезапись ее с тщательно выбранными данными может позволить злоумышленнику запускать код в контексте безопасности службы SQL Server.

Третья уязвимость — это уязвимость типа "отказ в обслуживании". SQL использует механизм поддержания активности для различения активных и пассивных экземпляров. Можно создать пакет, который при отправке в службу разрешения приведет к тому, что SQL Server 2000 будет отвечать с той же информацией. Злоумышленник, создавший такой пакет, подделал исходный адрес, чтобы он, как представляется, пришел из одной системы SQL Server 2000 и отправил его в соседнюю систему SQL Server 2000, может привести к тому, что две системы введут некончающийся цикл обмена пакетами. Это потребляло бы ресурсы в обеих системах, значительно замедляя производительность.

Смягчающие факторы:

Переполнение буфера в службе разрешения SQL Server:

  • SQL Server 2000 выполняется в контексте безопасности, выбранном администратором во время установки. По умолчанию он выполняется как пользователь домена. Таким образом, хотя код злоумышленника может предпринять любые необходимые действия в базе данных, он не обязательно будет иметь значительные привилегии на уровне операционной системы, если были выполнены рекомендации.
  • Риск, вызванный уязвимостью, может быть устранен, если это возможно, блокировка порта 1434 на брандмауэре.

Отказ в обслуживании с помощью службы разрешения SQL Server:

  • Атака может быть нарушена путем перезапуска службы SQL Server 2000 в любой из затронутых систем. Обычная обработка обеих систем возобновляется после прекращения атаки.
  • Уязвимость не обеспечивает никаких привилегий в системе. Это только уязвимость типа "отказ в обслуживании".

Оценка серьезности:

Переполнение буфера в службе разрешения SQL Server: Интернет-серверы Серверы интрасети Клиентские системы
SQL Server 2000 Критически важно Критически важно нет
Отказ в обслуживании с помощью службы разрешения SQL Server: Интернет-серверы Серверы интрасети Клиентские системы
SQL Server 2000 Критически важно Критически важно нет

Приведенная выше оценка основана на типах систем, пострадавших от уязвимости, их типичных шаблонах развертывания, а также на последствиях использования уязвимости.

Идентификатор уязвимости:

  • Переполнение буферов в службе разрешения SQL Server: CVE-CAN-2002-0649
  • Отказ в обслуживании с помощью службы разрешения SQL Server: CVE-CAN-2002-0650

Проверенные версии:

Корпорация Майкрософт проверила SQL Server 2000 и 7.0 (и связанные с ними версии MSDE), чтобы оценить, влияют ли они на эти уязвимости. Предыдущие версии больше не поддерживаются и могут быть затронуты этими уязвимостями.

Часто задаваемые вопросы

Что такое правильный порядок установки этого исправления в сочетании с исправлением, рассмотренным в317748?
Это исправление безопасности не содержит исправления из статьи базы знаний 317748 , необходимых для обеспечения нормальной работы SQL Server 2000 и MSDE 2000. Правильный порядок установки — установить 317748 исправление, а затем это исправление безопасности. Если вы применили это исправление безопасности к установке SQL Server 2000 или MSDE 2000 перед применением исправления из статьи "Исправление знаний" 317748, необходимо ответить "нет", если и когда появится запрос на перезапись файлов, чтобы убедиться, что файлы не перезаписываются из исправления безопасности.

Разделы справки проверка установлен этот исправление безопасности?
Убедитесь, что версия ssnetlib.dll в папке \MSSQL\BINN для экземпляра, для который был применен исправление: 2000.80.636.0, если версия ssnetlib.dll в папке \MSSSQL\BINN меньше 2000.80.636.0, необходимо повторно применить исправление безопасности. Однако корпорация Майкрософт рекомендует применить последнее исправление безопасности, как описано в MS02-061 , так как это содержит исправления для дополнительных уязвимостей безопасности в этих продуктах.

Какие уязвимости устраняет это исправление?
Это исправление устраняет три уязвимости, которые связаны со службой разрешения SQL Server 2000:

  • Первые две уязвимости могут позволить злоумышленнику получить значительный и, возможно, завершить контроль над затронутым SQL Server.
  • Третья уязвимость может позволить злоумышленнику вызвать два затронутых СЕРВЕРА SQL Server для взаимодействия с некончаемой информацией для замедления производительности серверов.

Что такое служба разрешения SQL Server 2000?
SQL Server 2000 представляет возможность установки нескольких копий SQL Server на одном компьютере и, как представляется, копии являются полностью отдельными серверами баз данных. Эти копии, известные как экземпляры, выполняются независимо друг от друга. Экземпляр по умолчанию прослушивает TCP-порт 1433. Другие экземпляры не могут совместно использовать этот же порт и требовать собственный порт. Проблема заключается в том, как разрешить клиентам SQL Server найти порт, на который работает конкретный экземпляр; решением является служба разрешения SQL Server. Первый экземпляр SQL Server всегда работает через порт 1433. Дополнительные экземпляры динамически выделяются собственными номерами портов. Когда клиент SQL должен подключиться к дополнительному экземпляру в SQL Server, он запрашивает службу разрешения SQL Server (которая работает с портом UDP 1434), который сообщает ему, какой порт использует запрошенный экземпляр.

Обычно ли порт UDP 1434 заблокирован в брандмауэре?
Это зависит от конкретного сценария развертывания.

  • Если сеть не размещает серверы SQL Server, подключенные к Интернету, необходимо заблокировать порт, связанный со службой разрешения SQL Server (и все остальные порты, связанные с SQL Server).
  • Если сеть предлагает службы SQL Server в Интернет, но на сервере есть только один экземпляр, служба разрешения SQL может быть заблокирована.
  • Если сеть предлагает службы SQL Server в Интернет и имеет несколько экземпляров, служба разрешения SQL должна быть доступна через брандмауэр.

Существует ли служба разрешения SQL Server в предыдущих версиях SQL Server?
№ Предыдущие версии SQL Server не поддерживали несколько экземпляров, и служба разрешения SQL Server не существовала. В результате другие версии SQL Server не влияют на уязвимости.

В разделе "Затронутые версии" говорится, что ядро microsoft Desktop Engine (MSDE) также влияет на эти уязвимости. Что такое MSDE?
MSDE — это ядро СУБД, созданное и основанное на технологии SQL Server 2000, и которое поставляется в составе нескольких продуктов Майкрософт, включая Microsoft Visual Studio и Microsoft Office Developer Edition. Существует прямое подключение между версиями MSDE и версиями SQL Server. MSDE 2000 основана на SQL Server 2000.

Переполнение буферов в службе разрешения SQL Server (CVE-CAN-2002-0649):

Что такое область этой уязвимости?
Здесь есть две уязвимости, оба из которых являются уязвимостями переполнения буфера. Злоумышленник, который успешно воспользовался любой уязвимостью, может вызвать сбой сервера или запустить код с помощью привилегий SQL Server. Хотя использование уязвимостей обеспечит злоумышленнику полный контроль над базой данных, он не обязательно будет передавать полный контроль над самой системой. SQL Server 2000 можно настроить для запуска с различными уровнями привилегий; По умолчанию он выполняется с правами пользователя домена, а не администратора.

Что вызывает уязвимости?
Уязвимости приводят к тому, что пара функций, предлагаемых службой разрешения SQL Server, содержит не проверка ированные буферы. Отправив специально отформатированный запрос на порт UDP 1434, можно перезапустить буферы, связанные с любой из функций.

Что такое уязвимость позволяет злоумышленнику делать?
Уязвимость может позволить злоумышленнику выполнить одно из двух действий:

  • Причина сбоя SQL Server. Это был бы самый простой тип атаки для подключения, и потребуется только то, что злоумышленник перезапустит буфер случайными данными.
  • Измените функционирование SQL Server, чтобы выполнять функции выбора злоумышленника. Для этого злоумышленник перезапустит буфер точно выбранными данными.

Кто может использовать уязвимость?
Любой пользователь, который может доставлять запрос в SQL Server (через порт UDP 1434) на затронутом сервере, может использовать уязвимость.

Если злоумышленник воспользовался уязвимостью, чтобы привести к сбою SQL Server, то что потребуется администратору для восстановления нормальной работы?
Администратор может возобновить нормальную работу, перезагрузив службу SQL Server.

Если злоумышленник воспользовался уязвимостью, чтобы sql Server выполнял свои функции по своему выбору, какие привилегии выполнялись бы в коде злоумышленника?
Очевидно, что код злоумышленника будет иметь полный контроль над функциями базы данных, так как он будет выполняться в контексте безопасности самого SQL Server. Но у него может быть несколько привилегий за пределами SQL Server. Во время установки SQL Server 2000 администратор должен выбрать, в какой учетной записи WINDOWS должен выполняться SQL Server. По умолчанию служба SQL Server выполняется как пользователь домена. Если были выполнены рекомендации и был выбран обычный контекст пользователя, злоумышленник не получит административного контроля над операционной системой, а также права администратора над доменом.

Как исправление устраняет уязвимости?
Исправление гарантирует, что служба разрешения SQL Server правильно ограничивает размер входных данных и не позволяет перезапустить любой из буферов.

Отказ в обслуживании с помощью службы разрешения SQL Server (CVE-CAN-2002-0650):

Что такое область этой уязвимости?
Это уязвимость типа "отказ в обслуживании ". Злоумышленник может использовать уязвимость для замедления производительности затронутого SQL Server. Точное количество замедления производительности системы зависит от ряда факторов, таких как скорость процессора и память в SQL Server, количество систем, атакующих сервер, и т. д. Уязвимость не может быть использована для того, чтобы сервер не смог полностью завершиться ошибкой, и не предоставит злоумышленнику какие-либо привилегии в системе. Сервер возобновляет нормальную работу, как только атака была отключена.

Что вызывает уязвимость?
Результаты уязвимости из-за недостатка в механизме поддержания работоспособности SQL Server 2000, который работает через службу разрешения. Если определенный пакет данных отправляется в функцию SQL Server 2000 keep-alive, он ответит отправителю с идентичным пакетом. Спуфингом исходного адреса такого пакета можно было бы привести к тому, что две системы SQL Server 2000 начинают бесконечный цикл обмена пакетами.

Что такое функция поддержания активности в SQL Server 2000?
SQL Server 2000 включает механизм, с помощью которого он может определить, является ли сервер активным или нет. Это делается путем отправки так называемого пакета в службу разрешения SQL Server в порте UDP 1434 и прослушивании ответа.

Что не так с реализацией функции поддержания активности в SQL Server 2000?
Можно создать пакет с отслеживанием активности, ответ которого будет идентичен запросу. Если бы один SQL Server отправлял такой пакет другому СЕРВЕРУ SQL Server, он ввел бы цикл автоматической отправки одного и того же пакета обратно и вперед друг другу. Это действие может использовать большую или всю доступную пропускную способность на двух компьютерах.

Может ли эта ситуация произойти естественно?
№ Ситуация, связанная с уязвимостью, не могла произойти в обычных условиях. SQL Server обычно не создает пакет с необходимыми характеристиками. Однако злоумышленник может ввести такой пакет, чтобы инициировать обмен, который впоследствии будет самоподдерживающимся.

Как это может сделать злоумышленник?
Предположим, что были два SQL Server с уязвимостью, Server 1 и Server 2. Теперь предположим, что злоумышленник создал необходимый пакет для поддержания активности и изменил исходный адрес, чтобы он содержал адрес сервера 1, а затем отправил пакет серверу 2. Это инициирует обмен, так как Сервер 2 будет отвечать на Сервер 1, который будет отвечать на Сервер 2, ad infinitum.

Что может сделать эта уязвимость, чтобы злоумышленник мог сделать?
Злоумышленник может использовать эту уязвимость для использования ресурсов в двух системах SQL Server 2000 одновременно.

Кто может использовать уязвимость?
Любой пользователь, который может отправлять данные на затронутый порт службы разрешения SQL Server, может воспользоваться уязвимостью.

Сколько времени будет длиться атака?
После запуска атака будет продолжаться до тех пор, пока один из компьютеров не перестал отправлять пакеты. Это может произойти, так как система была перезагружена, служба SQL Server была перезапущена, или подключение между двумя серверами было потеряно.

После завершения атаки сервер возобновляет нормальную операцию?
Да.

Сколько ресурсов системы может быть монополизировано с помощью такой атаки?
Это зависит от особенностей атаки. Например, можно было бы привлечь несколько серверов к атаке на одну. Аналогичным образом, она будет зависеть от пропускной способности сети между системами, скорости процессора на соответствующих компьютерах и т. д.

Как исправление устраняет уязвимость?
Исправление устраняет текущий механизм поддержания активности и определяет, какие серверы активны и которые являются пассивными с помощью другого механизма. После применения исправления система SQL Server 2000 больше не будет реагировать на пакеты, поддерживающие работоспособность.

Доступность исправлений

Скачивание расположений для этого исправления

Дополнительные сведения об этом исправлении

Платформы установки:

Это исправление можно установить в системах с пакетом обновления 2 (SP2) SQL Server 2000.

Включение в будущие пакеты обновления:

Исправление этой проблемы будет включено в SQL Server 2000 с пакетом обновления 3.

Требуется перезагрузка: нет. После применения исправления необходимо перезапустить только службу SQL Server.

Исправление можно удалить: Да.

Замененные исправления: Нет.

Проверка установки исправлений:

  • Чтобы убедиться, что исправление установлено правильно, проверьте отдельные файлы, проверив метку даты и времени файлов, перечисленных в манифесте файла в статье базы знаний Майкрософт Q323875.

Предостережения:

нет

Локализация:

Локализованные версии этого исправления доступны в расположениях, рассмотренных в разделе "Доступность исправлений".

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

Исправления для других проблем безопасности доступны из следующих расположений:

  • Исправления безопасности доступны в Центре загрузки Майкрософт, и их можно найти, выполнив ключевое слово поиск по запросу "security_patch".
  • Исправления для потребительских платформ доступны на веб-сайте WindowsUpdate

Другие сведения:

Подтверждения

Корпорация Майкрософт благодарит Дэвида Личфилда из Next Generation Security Software Ltd. за предоставление нам отчетов об этих проблемах и работе с нами для защиты клиентов.

Поддержка.

  • Статья базы знаний Майкрософт Q323875 обсуждает эту проблему и будет доступна примерно через 24 часа после выпуска этого бюллетеня. Статьи базы знаний можно найти на веб-сайте поддержки Microsoft Online .
  • Техническая поддержка доступна в службах поддержки продуктов Майкрософт. Плата за вызовы поддержки, связанные с исправлениями безопасности, не взимается.

Ресурсы безопасности:веб-сайт Microsoft TechNet Security предоставляет дополнительные сведения о безопасности в продуктах Майкрософт.

Отказ от ответственности

Сведения, предоставленные в Базе знаний Майкрософт, предоставляются "как есть" без каких-либо гарантий. Корпорация Майкрософт отказывается от всех гарантий, явных или подразумеваемых, включая гарантии торговых возможностей и соответствия определенной цели. В любом случае корпорация Майкрософт или ее поставщики не несут ответственности за любые убытки, включая прямые, косвенные, случайные, косвенные, косвенные, следовательно, потерю прибыли или специальные убытки, даже если корпорация Майкрософт или ее поставщики были уведомлены о возможности таких повреждений. Некоторые государства не разрешают исключение или ограничение ответственности за последующие или случайные убытки, поэтому не может применяться ограничение.

Изменения:

  • Версия 1.0 (24 июля 2002 г.): бюллетень создан.
  • Версия 1.1 (25 июля 2002 г.): обновлено, чтобы отметить, что MSDE 2000 влияет на уязвимости.
  • Версия 1.2 (31 января 2003 г.): обновлено, чтобы сообщить о замене MS02-061 и уточнить порядок установки при применении исправлений 317748 в сочетании с этим исправлением безопасности.

Построено в 2014-04-18T13:49:36Z-07:00