Pull to refresh

LNKpokalipsis или новая багофича от MS (CVE-2010-2568)

Reading time2 min
Views5.1K
На хабре уже писали о Win32/Stuxnet и раскрывшейся вместе с ним уязвимостью. Но самой уязвимости уделяется почему то мало внимания, в основном весь шум вокруг Win32/Stuxnet и использованных валидных сертификатов для подписи компонентов этого зловреда. А тем временем эта уязвимость уже появилась в публичном доступе. Сначала в виде PoC, а потом и в виде модуля для Metasploit. MS, как в прочем и обычно, пофиг на критичность этой уязвимости и она вероятнее всего выпустит патч не раньше 10 августа. А для WinXP SP2 патча вообще не будет, хотя как не странно на ней еще есть пользователи и их не так мало, как хотелось бы. Подтверждение тому распределение угрозы по оконным версиям от Symantec, где именно WinXP SP2 имеет большую долю зафиксированных инцидентов.

image

В качеcтве векторов использования этой уязвимости могут быть не только USB-накопитили, но и сетевые ресурсы. Например, в Metasploit эксплуатация происходит через WebDAV.

Работает уязвимость примерно так:



Речь идет не о банальном переполеннии или неразименованном указателе, все гораздо хуже, т.к. уязвимость by design так сказать (уязвимы все версии винды). Т.е. разработчики прохлопали ушами, что такой путь могут использовать злоумышленники для установки всякого вредоносного. Хотя может все гораздо хуже и это просто очередной бэкдор оставленный в системе по просьбе NSA? Боюсь правды мы не узнаем никогда. Давайте теперь поговорим непосредственно о технических деталях работы этой уязвимости.
CVE-2010-2568 – уязвимость находится в обработчике LNK-файлов, о точнее связана с процессом отображения Control Panel shortcuts, когда происходит их загрузка в память процессом Explorer.exe. Уязвимой являтся библиотека shell32.dll в которой происходит некорректная обработка. Ниже приведенная схема иллюстрирует потоки данных между вызываемыми функциями в процессе работы эксплойта (подсмотренно здесь). Успешным выполнением эксплойта является загрузка сторонней динамической библиотеки при помощи WinAPI функции LoadLibraryW.

image

Последовательность вызовов выглядит так:
SHELL32!CRunnableTask::Run
SHELL32!CGetIconTask::RunInitRT
SHELL32!SHGetIconFromPIDL
SHELL32!CFSFolder::GetIconOf
SHELL32!SHGetIconFromPIDL
SHELL32!_GetILIndexGivenPXIcon
SHELL32!CShellLink::GetIconLocation
SHELL32!CExtractIconBase::GetIconLocation
SHELL32!CCtrlExtIconBase::_GetIconLocationW
SHELL32!CPL_FindCPLInfo
SHELL32!CPL_LoadAndFindApplet
SHELL32!_LoadCPLModule
SHELL32!_imp__LoadLibraryW

Собственно именно ниже приведенный код и заставляет выполниться вредоносную DLL, этот код находиться в функции _LoadCPLModule, которыя вызывается из CPL_LoadCPLModule.

image

В эксплойте в составе Metasploit для эксплуатации уязвимости генерируется URL следующего вида "{webdav}{exploit_base}\\{exploit_dll}", такой подход к эксплуатации этой уязвимости сильно расширяет границы ее использования за пределы USB-накопителей. Что делать и как обезопасить себя от этой уязвимости можно почитать тут. Еще по теме противодействия этой уязвимости можно почитать в блоге независимого исследователя Didier Stevens. Там описывается два способа:
1) Запрет автозапуска и выполнения исполняемых модулей с внешних носителей. Но это вас не спасет от возможности заражения с сетевых шар и WebDAV ссылки.
2) Установка Software Restriction Policies (SRP)
Tags:
Hubs:
Total votes 48: ↑39 and ↓9+30
Comments30

Articles