В Windows Vista обнаружена уязвимость уровня ядра
🕛 21.10.2008, 23:24
Компания SkyRecon Systems, занимающаяся исследованиями в сфере безопасности, обнаружила две уязвимости уровня ядра, присутствующие в разных версиях ОС Windows, включая Windows Vista и серверные редакции Windows.Причиной уязвимости являются не сбои в работе функций аппаратного обеспечения, а ошибки, допущенные при разработке Windows. Компании SkyRecon и Microsoft сотрудничают с целью выпустить патчи для уязвимостей, зарегистрированных под номерами CVE-2008-2252 и CVE-2008-3464, уже в следующем месяце. Уязвимостям подвержены Windows XP Professional, Windows 2000 Server, Windows 2003 Server и Windows Vista, а также серверные ОС с архитектурой IA64.
Эти уязвимости делают систему открытой для атак, которые предполагают вторжение или инъекцию (от англ. injection) в код (вирус или червь) для получения доступа на уровне ядра. По сути это обыкновенный руткит, который позволяет получить доступ на уровне ядра обычным пользовательским приложениям, не требующих для своей работы прав администратора. При успешной реализации этих уязвимостей ядро ОС теряет свою защиту, поэтому любой компонент системы подвержен несанкционированому доступу.
Чтобы разобраться с этим подробнее, рассмотрим архитектуру x86:
RING0 - RING3
В операционной системе Windows есть несколько уровней выполнения кода. На процессорах с архитектурой x86 такие логические барьеры существуют в аппаратном обеспечении под названием RING0, RING1, RING2 и RING3. Дополнительный уровень под названием RING1 (отрицательная единица или минус один) был создан для уровня гипервизора.
Они называются кольцами из-за метода, которым дизайнеры аппаратных средств визуализировали безопасность. Самые защищенные части находятся снаружи. Из этого следует, что чем более защищен объект, тем меньше он участвует в работе. Чем дальше от ядра находится приложение, тем меньше оно может сделать.
Концентрические кольца заканчиваются на уровне RING0. В действительности RING0 изнутри ничего не охраняет. Единственным способом защиты, поддерживаемым кодом RING0, является строгое соответствие программным протоколам. Это означает, что программа не делает то, на что не расчитана. По сути это единственная защита кода RING0.
Например, программа уровня RING0 может обращаться ко всей памяти, даже той, что используется другими приложениями. Конечно, RING0 может обратиться также и ко всем аппаратным средствам машины. Именно по этим причинам в работе этого кольца учавствуют только основные алгоритмы, пользующиеся наибольшим доверием. Все остальное находится в уровнях RING1 или выше, которое ограждены от опасности возрастающими уровнями изоляции. Обыкновенные пользовательские приложения работают в RING3.
RING3 становится RING0
Недавно обнаруженные уязвимости позволяют приложениям уровня RING3 переходить на выполнение RING0. Изначально начинающее работу в Windows приложение может обрести полный контроль над машиной. В результате эксплойт может привести к нарушению работы компьютера или краже информации из него.
Microsoft выпустила предварительные уведомления по этим уязвимостям под номерами MS08-061 и MS08-066, присвоив им статус важных. Как вы знаете, Microsoft для определения опасности той или иной уязвимости использует четыре статуса:
* Критический Уязвимость, которая может привести к распространению Интернет-червя без участия пользователя * Важный Уязвимость, которая может привести к раскрытию конфиденциальной информации, нарушению целостности или доступности пользовательских данных, а также целостности или пригодности ресурсов * Умеренный Реализация уязвимости смягчена до существенной степени такими факторами как, например, конфигурацией по умолчанию, проверкой или трудностью реализации. * Низкий Уязвимость, реализация которой чрезвычайно затруднительна или чье воздействие минимально.