Перейти к содержанию
vaber

Обновление ряда модулей в продуктах Dr.Web версии 5.0

Recommended Posts

vaber

Не так давно компания DrWeb выпустила фиксы, устраняющие уязвимости в компонентах их продукта.

http://news.drweb.com/show/?i=389&c=5

От себя хочу добавить информацию об исправленных уязвимостях.

Первая бага заключалась в неправильном использовании функции CreateProcess (а именно в передаваемых первых двух параметрах) в компоненте обновления антивирусного продукта.

Это ошибка, в теории, могла бы позволить запустить стороннее приложение модулем обновления антивируса с наследованием прав. При этом в MSDN в графе Security Remarks приведен пример такого опасного использования функции.

Следующая уязвимость оказалась в трех компонентах антивирусного комплекса. Она заключается в том, что компоненты антивируса пытаются загрузить в память функцией LoadLibrary несуществующую библиотеку drwipc.dll без указания полного пути к DLL. Это позволяло разместить в соответствии с search order вредоносный код, который будет загружен самим антивирусным продуктом в память и будет работать из контекста процессов антивируса. Это позволило бы вредоносному коду работать с файлами, ключами, процессами антивируса несмотря на самозащиту последнего.

При этом хочу отметить высокую скорость ответа на vulnerability notification (ответ был получен в день уведомления) и скорость исправления уязвимостей. Так первое уведомление было получено ими 17.06, второе - 30.06. 02.07 исправления стали доступны пользователям. За что им спасибо (правда мое сообщение на офф.форуме с благодарностью за адекватную и качественную реакцию на vulnerability notification было удалено с пометкой "флейм" одним ярым поклонником антивируса Касперского =))

P.S.

Порядок поиска DLL:

1. Директория, в которой расположено приложение

2. system-диретория (%systemroot%\system32)

3. 16-bit system-диреткория (%systemroot%\system)

4. windows-директория (%systemroot%)

5. Рабочая директория

6. переменная окружения %PATH%

P.S.S.

Уязвимость в модуле почтового антивируса была обнаружена нашим форумчанином K_Mikhail сразу же после vulnerability notification, где была указана уязвимость только в сканере (drweb32w.exe).

  • Upvote 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
priv8v
Первая бага заключалась в неправильном использовании функции CreateProcess (а именно в передаваемых первых двух параметрах) в компоненте обновления антивирусного продукта.

Можно подробнее?..

Т.е нечто подобное было?:

LPTSTR szCmdline = _tcsdup(TEXT("C:\\Program Files\\MyApp -L -S"));CreateProcess(NULL, szCmdline, /* ... */);

Гм.. Ну, дают...

Порядок поиска DLL:

Не ожидал от Др.Веба такого...

Ведь это "мега-боян". К ослу давно так частенько либы пристраивались...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vaber
Можно подробнее?..

В MSDN все есть ;). Даже с примером.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
priv8v
В MSDN все есть wink.gif. Даже с примером.

Я знаю. Просто я не поверил, что у них именно такая ошибка. (все-таки про кавычки говорится везде)

Кстати, и еще:

несуществующую библиотеку drwipc.dll без указания полного пути к DLL

Даже если бы был указан полный путь, то все равно эффект был бы тот же - ведь либа не существует и ничто бы не мешало ее положить по тому адресу.

PS: а кто нашел все эти уязвимости и как?..

После долгого просмотра под отладчиком ?))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vaber
Даже если бы был указан полный путь, то все равно эффект был бы тот же - ведь либа не существует и ничто бы не мешало ее положить по тому адресу.

Не совсем так. Если путь указывал бы на директорию защищаемою драйвером самозащиты, то туда поместить свою DLL не удалось бы.

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

PS: а кто нашел все эти уязвимости и как?

А ты смекни :)))

  • Upvote 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
sww
А ты смекни :)))

Ах вы красные поросята :lol:

P.S. А баги реально ламерские и вполне юзабельны.

За что им спасибо (правда мое сообщение на офф.форуме с благодарностью за адекватную и качественную реакцию на vulnerability notification было удалено с пометкой "флейм" одним ярым поклонником антивируса Касперского =))

Так то правильный форум для правильных "пасанов с меготехнологиями".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Сообщения

    • demkd
      Иногда спрашивают, как загрузиться в командную строку без диска, я постоянно забывают дополнить Общий FAQ.
      И вот наконец-то я про это вспомнил:
      Q: Как запустить uVS с командной строки Windows без использования загрузочного диска/флешки для работы с НЕактивной системой.
         (!) Для текущей версии uVS работа с командной строки доступна только для 32-х битных систем. (что бы работало в x64 системах, нужно делать uVS x64 и это запланировано).
         1. Если у вас Windows 8 и старше, то запустите start.exe и нажмите кнопку "Перезагрузить систему в меню дополнительных параметров загрузки".
         2. Далее в меню "Поиск и устранение неисправностей->Дополнительные параметры->Командная строка"
         3. Выберите админскую учетную запись и введите для нее пароль.
         4. Запустите start.exe из каталога uVS с командной строки.
            (!) Обычно система расположена на диске D.
                Например: uVS лежит в каталоге С:\uvs (в командной строке это будет D:\uvs)
                Для запуска uVS необходимо последовательно набрать 3 команды, завершая каждую нажатием клавиши Enter.
                1. d:
                2. cd d:\uvs
                3. start.exe
         5. Выбрать каталог Windows (обычно D:\Windows).
         Если у вас Windows 7 и младше, то в меню вы можете попасть только нажав F8 при перезагрузке системы
         (!) Использовать msconfig для этого не рекомендуется, система может не загрузиться после его использования.
         Для младших систем доступен только безопасный режим с поддержкой командной строки, т.е. система будет активна.
       
    • demkd
      ---------------------------------------------------------
       4.15.5
      ---------------------------------------------------------
       o Обновлена функция трансляции переменных окружения USERPROFILE, HOMEPATH, LOCALAPPDATA, APPDATA.
         Значения этих переменных теперь зависят от того где физически находится lnk файл.
         Теперь с разбором lnk файлов будет меньше проблем, но я все же рекомендую удалять ссылки
         на отсутствующие объекты только под текущем пользователем.

       o Исправлена функция разбора путей не содержащих букву диска.

       o Исправлена функция разбора аргументов rundll32.

       o Обновлен start.exe.
         o Обновлен интерфейс.
         o Изменена кнопка по умолчанию, теперь это "запуск под текущим пользователем".
         o Исправлена ошибка: при определенных параметрах повторный запуск uVS в режиме "до запуска эксплорера" был невозможен.
         
    • Ego Dekker
      Домашние антивирусы для Windows были обновлены до версии 17.1.13.
    • demkd
      ---------------------------------------------------------
       4.15.4
      ---------------------------------------------------------
       o Обновлен интерфейс.

       o Из Ф портировано окно "История запуска процессов" для комфортного распутывания цепочек запуска и взаимодействия
         процессов с задачами.
         Доступ к окну можно получить через меню "Дополнительно->История процессов и задач".
         В первом списке отображается история запуска процессов с момента старта системы (по данным журнала Windows).
         В списке доступен фильтрующий поиск по имени, PID и фильтрация по родительскому процессу (см. контекстное меню).
         В нижнем списке отображается история воздействия процессов на задачи с момента запуска системы, а если установлен
         фильтр родительского процесса то отображаются лишь те задачи с которым взаимодействовал родительский процесс.
         (!) История доступна лишь при активном отслеживании процессов и задач (Твик #39).
         (!) История не доступна для неактивных систем.

       o Обновлен формат образа автозапуска, образы созданные v4.15.4 не будут читаться старыми версиями uVS.
         Добавлено:
          o Мгновенный срез активности процессов на момент завершения создания образа (Запустить->Просмотр активности процессов [Alt+D])
          o История процессов и задач (Дополнительно->История процессов и задач)
            (!) История доступна лишь при активном отслеживании процессов и задач (Твик #39).
          o Защита образа от повреждений.

       o Утилита cmpimg обновлена до версии 1.04 для поддержки нового формата образов автозапуска.

       o Утилита uvs_snd обновлена до версии 1.05 для поддержки нового формата образов автозапуска.

       o Теперь при подключении к удаленной системе всегда запускается "v" версия uVS, если клиентская система не младше Vista.
         На удаленной системе всегда запускается обычная версия uVS для совместимости с системами младше Vista.

       o Исправлена ошибка отображения имени процесса при работе под Win2k в окне "Активность процессов".
         (!) Английская версия uVS НЕ_совместима с Win2k, с Win2k работает только русская версия.

       o Исправлена ошибка разбора состояния TCPIPv6 соединений.
       
    • demkd
      Если пишет что файлов нет то так оно и есть, по пути в принципе видно, что их там точно быть не может.
      Проблема же в том что при запуске под SYSTEM, API windows не способен правильно разбирать некоторые ярлыки, где не указан абсолютный путь, такие ярлыки меняют цель в зависимости от того под каким пользователем работает конкретный процесс, зачем это сделал microsoft для меня загадка.
      Единственное решение - это написать api для разбора любых ярлыков с нуля и добавить еще нехилую надстройку для анализа относительных путей в них, но это довольно сложная задача и на данный момент реализована лишь в малой части и скорее всего никогда не будет реализована на 100%.
      Потому если хочется удалить ссылки на отсутствующие объекты имеющие ярлыки то нужно запускаться под текущим пользователем, проблем будет меньше... если пользователь один Все системные файлы имеют внешнюю эцп и вполне определенные имена.
×