Локальные уязвимости в Windows

11/01/2005 12:44

Cesar Cerrudo из Application Security, Inc. обнаружил уязвимости в семействе ОС Windows, которая позволяет локально повысить привилегии в системе. Первая уязвимость присутствует в сервисе LPC (Local Procedure Call) - механизме, предназначенном для локального взаимодествия процессов (в отличие от RPC - Remote Procedure Call). API, который используется клиентом для соединения с локальным портом серверного процесса (создаётся API NtCreatePort) NtConnectPort позволяет создавать буфер, преышающий 260 байт. При использовании этой функции буфер памяти, копируемой от клиента к серверу ядром, игнорирует ограничения размера буфера, устанавливаемые API NtCreatePort при создании серверного сокета. Это может вызвать повреждение кучи в серверном процессе, что, в свою очередь может привести к перезаписи произвольной области памяти с дальнейшим выполнением произвольного кода в пространстве памяти ядра. Уязвимости подвержены все версии Windows: NT/XP/2K/2003. Уязвимости не подвержены версии 98/98SE/ME. Необходимо отметить, что патч MS04-044, латающий дыру, был выпущен M$ ещё 14 декабря прошлого года. Вторая уязвимость связана с механизмом назначения и обработки та называемых "токенов" в ОС Windows и механизме работы, который получил название "Impersonate a client after authentication" (появился в Win2K после 4-го сервис-пака, в XP после SP2, присутствует в Win2003). Использование уязвимости позволяет получить доступ (локально) к сетевым ресурсам, досутп к которым имеет только администратор (\computernamec$), а также ко всем файлам и билиотекам, доступ к которым в обычных условиях строго ограничен. Опять же для организации вектора атаки используется печально знаменитая служба LSASS (Local Security Authority Subsystem Service), а точнее - применяемый ей механизм кеширования. Особой опасности подвержены серверы на которых примеяется сервис терминальных служб (или Citrix). Для устранения уязвимости опять же применяется патч, описанный в бюллетене MS04-044.
Описание первой уязвимости
Описание второй уязвимости