Компания
252,20
рейтинг
18 апреля 2015 в 11:46

Разработка → Уязвимость CVE-2015-1635 (MS15-034) эксплуатируется in-the-wild

На этой неделе мы писали про критическое обновление MS15-034 для драйвера http.sys на Windows 7+ (включая Windows 10 TP). Злоумышленник с использованием специально сформированного заголовка запроса HTTP-протокола может удаленно исполнить код, организовать DoS-атаку или уронить систему в BSOD как на клиентских так и на серверных выпусках Windows. Сам драйвер http.sys загружается Windows на самых ранних этапах и отвечает за реализацию логики работы HTTP-протокола (реализует прикладной уровень модели OSI в Windows).



Напрямую эта уязвимость относится к серверным выпускам Windows, поскольку службы IIS, которые отвечают за механизмы реализации веб-сервера, используют этот драйвер для открытия и обслуживания HTTP-портов входящих подключений, которые и могут быть использованы для компрометации системы. Однако, на некоторых современных клиентских выпусках Windows (в зависимости от конфигурации системы и ее сервисов), работающие сервисы также могут открывать HTTP-порты для прослушивания входящих подключений.



Сама эксплуатация (integer-overflow) возможна через задание специального значения поля Range заголовка HTTP (значение регламентировано RFC 2616, 14.35.1). Ниже приведен пример такого запроса.

GET / HTTP/1.1
Host: MS15034
Range: bytes=0-18446744073709551615

Этот запрос также может быть использован для проверки системы на уязвимость.


Рис. Предложение на подпольном форуме о продаже эксплойта для MS15-034.

Update: We are seeing active exploits hitting our honeypots from 78.186.123.180. We will be going to Infocon Yellow as these scans use the DoS version, not the «detection» version of the exploit. The scans appear to be «Internet wide».

isc.sans.edu

Одна из обнаруженных версий эксплойта ITW имела вид:

GET /%7Bwelcome.png HTTP/1.1
User-Agent: Wget/1.13.4 (linux-gnu)
Accept: */*
Host: [server-ip]
Connection: Keep-Alive
Range: bytes=18-18446744073709551615
Автор: @esetnod32
ESET NOD32
рейтинг 252,20

Комментарии (17)

  • +25
    Всем солнечной субботы! Это даже не решето, это:
    image
    • +1
      Видать в компании Microsoft не знают что такое юнит-тесты.
      Примеры кода Microsoft которые мне попадались — ужасный шлак.
  • +9
    Range: bytes=18-18446744073709551615

    Я вот думаю: ошибка в драйвере http.sys, скорее всего, связана с переполнением целого. В RFC723x черным по белому написано, что протокол не имеет ограничений на длину целых чисел, и что реализации должны быть готовы к произвольной их длине, и не оставлять в этом случае дыр.

    Facepalm
  • +19
    Я не буду троллить на тему «винда дырявая» — CVE у всех бывают.

    Я задам другой вопрос: почему HTTP обрабатывается с правами ядра? Это вполне себе user-space задача и могла бы решаться как обычная библиотека, загружающаяся в адресное пространство процесса. В этом случае размер проблемы был бы ограничен конкретным тредом/приложением, а не BSOD'ом.
    • +1
      Я вообще увидев http.sys решил, что это апрельская шутка запоздала. Ан нет, kernel mode listener that handles all HTTP traffic for Windows. Может, так быстрее, по аналогии с kernel module для jpeg-декодирования в Linux/Android, или… (на этом мысль обрывается, в голову не приходят еще разумные аргументы).
    • 0
      Так немного быстрее [1, 2].
      • +3
        Да, я понимаю соблазн. Но в случае с bsd, насколько я понимаю, оно всего лишь буфферизирует заголовок http, не вдаваясь в детали (условно говоря — до двойного перевода строки). А tempesta — это «для тех, кто смел и понимает».

        В этом случае-то проблема не в том, что кто-то использует ядро для акселерации user-space задач, а в том, что этот код отдаётся всем кастомерам и включен по-умолчанию на всём, что хоть как-то относится к http с серверной стороны.
        • +5
          Лет 10-15 назад была битва Windows + IIS vs Linux + Apache на http бенчмарках. Microsoft приложила тогда много усилий (думаю, это случилось как раз в районе Windows 2000) к тому, что б http сервер у них умел больше rps. http.sys — результат этих усилий.

          Впрочем, на мой взгляд, это так и не помогло Microsoft занять лидирующие позиции на рынке интернет-серверов (в протовоположность интранет).
  • +2
    Самый интересный вопрос: а нахрена HTTP в ядре держать?!!!
    • +3
      Возможно что бы проверить акивацию винды или работа wsus-сервиса (сервиса обновления самой системы).
      Так же KMS-активация, она через http(s) работает.
      • +1
        Оно вроде ещё и в ХР было, а там не было никаких KMS активаций.
        WSUS работает через службу фоновой загрузки и WinHTTP апи, насколько я понимаю.
  • –16
    image
    • +3
      это уже не решето, читай первый коммент
  • +1
    Однако, на некоторых современных клиентских выпусках Windows (в зависимости от конфигурации системы и ее сервисов

    Где-нибудь имеется более подробная информация о соответствующих настройках системы?
    • 0
      толи автокад, то ли 3д-макс, то ли еще что-то дорогое и масштабное, ставят такие себе «хелп-серверы» отдающие справочную информацию по http на каком-нибудь нестандартном локальном порту. И кто знает — может иногда оно не только локально работает
  • –2
    Ну вот всегда говорил, что индусская прошивка для игровых приставок — не лучшее решение для установки на сервер. Вот вам и очередное подтверждение.
  • 0
    Печаль, но бывает.
    Между тем 13 апреля вышли патчи для серверных ОС Microsoft по поводу этого CVE, гуглить по «KB3042553».

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

Самое читаемое Разработка