ثغرة حرجة في مفكك ترميز Brotli بتصنيف 9.2 تهدد Node.js وPython وcurl

Aikido Security
مشاركة:
ثغرة حرجة في مفكك ترميز Brotli بتصنيف 9.2 تهدد Node.js وPython وcurl

يمكن لثغرة حرجة في مكتبة الضغط Brotli التابعة لجوجل، والمعروفة باسم CVE-2026-111497، أن تسمح لمهاجم بتعطيل أو ربما تنفيذ تعليمات برمجية على الخوادم والعملاء التي تتعامل مع حركة بيانات HTTP المضغوطة بتقنية Brotli. كشف فريق Node.js عن هذه الثغرة لأول مرة في 21 أكتوبر، وتأكد اتساع نطاقها بحلول 23 أكتوبر، وحصلت على تصنيف CVSS v4.0 بقيمة 9.2، أي حرجة.

تُعد Brotli صيغة الضغط وراء ترميز المحتوى br المستخدم في أنحاء الويب الحديث لتقليل حجم استجابات وطلبات HTTP. ولأنها مدمجة أو مرتبطة بشكل ثابت ضمن مجموعة هائلة من البرمجيات، فإن أي خلل في مفكك الترميز لا يبقى محصورًا في مشروع واحد. وجدت شركة الأمن Aikido، التي تتبعت انتشار المشكلة عبر بيئات لغات برمجية مختلفة، أنها تؤثر على مكتبة Brotli الأساسية بلغة C (الإصدارات من 1.0.3 إلى 1.2.0)، وحزمتي brotli وbrotlicffi على PyPI، والنسخة المدمجة في Node.js، بالإضافة إلى مستهلكين تابعين منها عملاء HTTP في Python مثل urllib3 وrequests وhttpx وaiohttp وScrapy، وكذلك Bun وEnvoy وIstio وإصدارات من curl وlibcurl التي ترتبط بـBrotli بشكل ثابت. وبحسب تحليل Aikido، لا تتأثر Apache وNginx افتراضيًا.

الخلل هو خطأ كتابة خارج الحدود في الذاكرة (CWE-787) داخل مفكك الترميز، يُفعّل عبر دفق بيانات مشوّه بتنسيق Brotli. ولأن فك الضغط يحدث تلقائيًا كلما أعلن عميل أو خادم عن دعمه لترميز br، فإن الهجوم يعمل في الاتجاهين: يمكن لعميل خبيث استهداف خادم يفك تشفير أجسام الطلبات، كما يمكن لخادم خبيث استهداف عميل يقبل استجابات مضغوطة، دون الحاجة لأي مصادقة. وتقول Aikido إن الآثار المؤكدة تتراوح بين تسرب الذاكرة والانهيار وصولًا إلى تنفيذ تعليمات برمجية عشوائية، رغم عدم رصد أي استغلال فعلي لنسخة Node.js حتى 22 أكتوبر.

واللافت أن الخلل البرمجي الأساسي المتعلق بأمان الذاكرة عُثر عليه وأُصلح بهدوء في الشفرة المصدرية لـBrotli في فبراير الماضي، بحسب تقارير، من قبل مهندسين في OpenAI، دون أن يصنّفه أحد كمشكلة أمنية حينها، ما يعني أن النافذة الزمنية للثغرة ظلت مفتوحة نحو ثمانية أشهر قبل أن يربط هذا الإفصاح كل الخيوط ببعضها.

تتوفر تصحيحات لبعض المشاريع المتأثرة، وليس كلها: Node.js الإصدارات 22.23.4 و24.22.1 و26.12.1؛ Brotli الإصدار 1.2.1 (مع نسخ مرتدة إلى 1.0.10 و1.1.1 في الفروع الأقدم)؛ brotlicffi الإصدار 1.2.1.0؛ Bun الإصدار 1.4.4؛ Envoy الإصدارات 1.40.0 و1.39.3 و1.38.6 و1.37.8؛ وIstio الإصدارات 1.29.9 و1.30.6 و1.31.2. وتحذر Aikido من أنه حتى 23 أكتوبر، لم تكن أدوات فحص الثغرات القياسية مثل pip-audit وDependabot وSafety تكتشف بعد إصدارات حزم PyPI المتأثرة، ما يعني أن الفرق التي تعتمد فقط على الفحص الآلي للتبعيات قد لا تحصل على أي تنبيه. ونظرًا لأن حزمة Brotli على PyPI وحدها تُحمَّل نحو 82.8 مليون مرة شهريًا، فمن المرجح أن يكون النطاق العملي للتثبيتات غير المصححة كبيرًا.

توصي Aikido الفرق التي لا تستطيع تطبيق التصحيحات فورًا بإزالة Brotli أو brotlicffi حيثما كانت تبعيات اختيارية، وتهيئة الخوادم لرفض الطلبات التي تحمل Content-Encoding: br. وتحذر الشركة من أن مجرد إزالة br من ترويسة Accept-Encoding الصادرة لا يكفي وحده، لأن مفكك ترميز لا يزال عرضة للخطر يمكن تفعيله من قِبل أي طرف يختار إرسال حمولة مضغوطة بـBrotli بغض النظر عما طُلب.

وردت في الأصل عن Aikido Security. اقرأ المقال الأصلي لمزيد من التفاصيل.

عرض المصدر الأصلي
مشاركة:
ثغرة حرجة في مفكك ترميز Brotli بتصنيف 9.2 تهدد Node.js وPython وcurl | AIO APEX