Рубрика «режим ядра»

Как известно, 19 июля 2024 года произошёл серьёзный инцидент с апдейтом программного обеспечения CrowdStrike Falcon для защиты компьютеров (отчёт Microsoft, отчёт CrowdStrike). Обновление конфигурации вызвало ошибку безопасности чтения из границ памяти в ELAM-драйвере CSagent.sys. Поскольку тот работает на уровне ядра Windows, то миллионы ПК ушли в BSOD.

Количество пострадавших официально оценили в 8,5 млн:

Выводы из глобального сбоя CrowdStrike - 1

Microsoft поясняет, что здесь количество полученных отчётов. Реально пострадавших гораздо больше. Серьёзно пострадали банки и авиакомпании. В частности, Delta. Общий ущерб для мировой экономики от бага страховщики оценили в $5,4 млрд.

В чём же главная проблема и «защитного софта» с драйверами ядра Windows?
Читать полностью »

Взлом доступа к ядру Windows при помощи драйвера принтера - 1


В этой статье приводятся подробности CVE-2023-21822 — уязвимости Use-After-Free (UAF) в win32kfull, которая может привести к повышению привилегий. Отчёт о баге отправлен в рамках программы ZDI, а позже она была пропатчена компанией Microsoft.

В ядре Windows есть три API, предназначенные для общего использования драйверами устройств с целью создания растровых изображений (bitmap): EngCreateBitmap, EngCreateDeviceBitmap и EngCreateDeviceSurface. Каждый из этих API возвращает дескриптор растрового изображения. Если вызывающая сторона хочет выполнить какие-то операции рисования на растровом изображении, то она должна сначала заблокировать это изображение, передав его дескриптор функции EngLockSurface. EngLockSurface увеличивает значение эталонного счётчика растрового изображения и возвращает указатель на соответствующую запись SURFOBJ. SURFOBJ — это расположенная в памяти ядра структура, содержащая всю информацию, связанную с растровым изображением, например, его размер, формат пикселей, указатель на пиксельный буфер и так далее. Подробнее структуру SURFOBJ мы рассмотрим позже.

После вызова EngLockSurface полученный указатель на SURFOBJ может передаваться различным API рисования, например, EngLineTo и EngBitBlt. Полный список этих API рисования можно найти в winddi.h. После того, как вызывающая сторона завершит операции рисования, она должна вызывать EngUnlockSurface. На этом этапе эталонный счётчик растрового изображения снова сбрасывается до нуля, и вызывающей стороне больше не разрешается использовать указатель на SURFOBJ. В конце вызывающая сторона может удалить растровое изображение, вызвав для его дескриптора EngDeleteSurface. Типичное использование этих API показано ниже:
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js