
Эксплойт proof-of-concept для драйвера ядра Gigabyte GVCIDrv64.sys, обеспечивающий локальное повышение привилегий через произвольное чтение/запись физической памяти и портов ввода-вывода.
привет, хакеры.
GVCIDrv64.sys — это подписанный драйвер ядра, который поставляется с утилитой BIOS от Gigabyte. Он создаёт \\.\GVCIDrv64 без дескриптора безопасности, поэтому любой локальный пользователь может его открыть — без прав администратора, без UAC. Он предоставляет 3 IOCTL с полным отсутствием контроля доступа: отображение 32 МБ физической памяти (0x9C406580), снятие отображения (0x9C406584) и прямой доступ на чтение/запись к портам ввода-вывода размером 1/2/4 байта (0x9C406588).
Весь трюк в том, как 2 из них объединяются. IOCTL отображения читает BAR0 PCI-устройства и отображает его, но IOCTL портов позволяет сначала перезаписать этот BAR0. Направьте BAR на любой физический адрес, вызовите отображение — и 32 МБ выбранной вами оперативной памяти окажутся в вашем процессе. Это произвольное физическое чтение/запись, построенное из 2 функций, каждая из которых должна была быть безобидной.
И что мы получаем? Произвольное чтение/запись физической памяти и произвольный доступ к портам ввода-вывода из обычной учётной записи пользователя, без повреждения памяти и без каких-либо защит, с которыми нужно бороться. Эксплойт сканирует физическую память в поисках процесса System (pid 4), читает его токен, перезаписывает токен собственного процесса и запускает системную оболочку. Только данные, никакого шелл-кода в режиме ядра.
2 практических ограничения. BAR0 — 32-битный, поэтому окно остаётся ниже 4 ГБ — используйте виртуальную машину с ≤2 ГБ ОЗУ. И эксплойт на короткое время перезаписывает BAR0 сетевого адаптера, поэтому сначала отключите сетевой адаптер, иначе прерывание во время подмены приведёт к BSOD.
Протестировано на Windows 10 x64 22H2 в VMware Workstation (2 ГБ ОЗУ). Драйвер уже загружен на машинах с установленной утилитой Gigabyte; эксплойт также может загрузить его через SCM на тестовой машине.
gcc -O2 -o exploit.exe exploit.c -ladvapi32
exploit.exe
Сообщено в Gigabyte в июне 2026 года. Gigabyte полностью удалила драйвер и заменила его на GvVbiosDrv64.sys в GBT_VGA_26.08.24.01 — старый уязвимый драйвер больше не присутствует. Рекомендации: Security Advisory 2454.
arb_rw.c — это автономный инструмент для чтения/записи/дампа физической памяти.
SHA256 a2353030d4ea3ad9e874a0f7ff35bbfa10562c98c949d88cabab27102bbb8e48 GVCIDrv64.sys