
استغلال إثبات مفهوم لبرنامج تشغيل النواة GVCIDrv64.sys الخاص بـ Gigabyte، يحقق تصعيد الصلاحيات المحلية عبر القراءة/الكتابة العشوائية للذاكرة الفيزيائية ومنافذ الإدخال/الإخراج.
مرحبًا أيها الهاكرز.
GVCIDrv64.sys هو برنامج تشغيل kernel موقّع يأتي مع أداة BIOS من Gigabyte. ينشئ \\.\GVCIDrv64 بدون واصف أمان، لذا يمكن لأي مستخدم محلي فتحه دون صلاحيات admin ودون UAC. يكشف عن 3 IOCTLs بدون أي تحكم في الوصول: تعيين 32 ميغابايت من الذاكرة الفيزيائية (0x9C406580)، وإلغاء التعيين (0x9C406584)، وقراءة/كتابة مباشرة لمنفذ I/O بحجم 1/2/4 بايت (0x9C406588).
الحيلة تكمن في كيفية دمج اثنين منهما. يقرأ IOCTL الخاص بالتعيين BAR0 لجهاز PCI ويعيّنه، لكن IOCTL الخاص بالمنفذ يتيح لك إعادة كتابة ذلك BAR0 أولاً. وجّه BAR إلى أي عنوان فيزيائي، ثم استدعِ التعيين وستحط 32 ميغابايت من الذاكرة التي اخترتها في عمليتك. هذا قراءة/كتابة فيزيائية عشوائية مبنية من ميزتين كان يُفترض أن تكون كل منهما غير ضارة.
إذن ماذا نحصل؟ قراءة/كتابة عشوائية للذاكرة الفيزيائية ووصول عشوائي لمنافذ I/O من حساب مستخدم عادي، دون تلف في الذاكرة ودون أي تخفيفات يجب مواجهتها. يفحص الاستغلال الذاكرة الفيزيائية بحثًا عن عملية System (pid 4)، ويقرأ رمزها المميز (token)، ويستبدل رمز عمليته الخاصة، ويشغّل shell بصلاحيات system. بيانات فقط، دون shellcode في وضع kernel.
حدّان عمليان. BAR0 بعرض 32 بت، لذا تبقى النافذة أقل من 4 غيغابايت — استخدم جهازًا افتراضيًا بذاكرة RAM ≤2 غيغابايت. كما أن الاستغلال يعيد كتابة BAR0 لبطاقة شبكة لفترة وجيزة، لذا عطّل محوّل الشبكة أولاً وإلا فإن مقاطعة أثناء التبديل ستسبب شاشة الموت الزرقاء (BSOD).
تم اختباره على Windows 10 x64 22H2 في VMware Workstation (ذاكرة RAM بسعة 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