تؤثر ثغرة أمنية خطيرة في برنامج فك تشفير Brotli على Node.JS وBun والمتصفحات وعملاء HTTP ومشاريع أخرى.

تم اكتشاف ثغرة أمنية (CVE-2026-111497، تُعرف بالرمزين Broccoli2Shell وHTTP2Shell) في المكتبة التي تحتوي على التطبيق المرجعي لبرنامج فك تشفير ضغط البيانات Brotli. تؤدي هذه الثغرة إلى تجاوز سعة المخزن المؤقت عند معالجة بيانات مضغوطة مُصممة خصيصًا. ووفقًا لشركة جوجل، يمكن استغلال هذه الثغرة لتنفيذ تعليمات برمجية عن بُعد عند مهاجمة المشاريع التي تستخدم تطبيق Brotli الرسمي لفك التشفير. تشمل المشاريع المتأثرة Node.js وBun وEnvoy وIstio ومتصفحات الويب وخوادم البروكسي وعملاء HTTP وخوادم HTTP وبرامج الأرشفة وخوادم البروكسي وبرامج UEFI الثابتة وعارضات JPEG XL ومكتبات فك تشفير المحتوى للغات Python وRuby وJava وPHP و.NET، بالإضافة إلى تبعياتها.

اكتشفت OpenAI هذه المشكلة في فبراير من هذا العام، وتمّ سدّها في قاعدة بيانات Brotli البرمجية عن طريق تجاهل التدفقات غير الصالحة أثناء فك التشفير. في 22 أكتوبر، نُشرت تحديثات لـ Brotli 1.0.10 و1.1.1 و1.2.1، معلنةً صراحةً عن الإصلاح ومعالجة المشكلة الأساسية. في اليوم نفسه، تمّ إنشاء نموذج أولي لاستغلال الثغرة يسمح بتنفيذ التعليمات البرمجية عن بُعد في ظروف معملية باستخدام إصدارات غير قياسية (حيث كانت الإصدارات القياسية تتعطل). لاحقًا، رصدت Imperva هجومًا على إصدارات Node.js 24.22.0 القياسية. Linux- بيئة على نظام ARM64.

تؤدي هذه الثغرة الأمنية إلى كتابة بيانات خارج نطاق المخزن المؤقت نتيجةً لمعالجة غير سليمة للأخطاء أثناء تحليل الكتل في دفق مضغوط. كانت الدالة DecodeBlockTypeAndLength() تُرجع قيمتي "صحيح" و"خطأ" فقط بدلاً من رمز خطأ، مما منع المُستدعي من التمييز بين تلف الدفق وحالة تتطلب تمرير بيانات إضافية إلى الدالة. إذا تم تحديد نوع كتلة بيانات مضغوطة غير صحيح في الدفق، فإن المُفكِّك لم يُفسِّر ذلك على أنه خطأ، بل على أنه حالة نفاد بيانات تتطلب قراءة إضافية من الدفق. ومع ذلك، ولأن المخزن المؤقت المُخصَّص لم يكن مُصمَّمًا لاستيعاب قراءة بيانات إضافية، فقد كُتبت البيانات في منطقة خارج المخزن المؤقت الذي يُخزِّن الحالة الداخلية للمُفكِّك.

المشاريع المتأثرة:

  • تؤثر مكتبة Brotli المرجعية، وهي مشكلة موجودة منذ الإصدار 1.0.3 وتم إصلاحها في التحديثات 1.0.10 و 1.1.1 و 1.2.1، على التطبيقات والمكتبات التي تستخدم مكتبة libbrotlidec.
  • تم إصلاح ثغرة أمنية في منصة Node.js JavaScript في التحديثات 26.12.1 و24.22.1 و22.23.4. قد تكون التطبيقات التي تستخدم دالة fetch() لطلب محتوى من جهات خارجية، والتي تقوم تلقائيًا بفك تشفير استجابات HTTP التي تحتوي على ترويسة "Content-Encoding: br"، عرضة لهذه الثغرة. تظهر الثغرة أيضًا عند استدعاء دوال zlib.brotliDecompress*() وcreateBrotliDecompress() وbrotli.decompress() مباشرةً لفك ضغط محتوى من جهات خارجية، أو عند استقبال طلبات HTTP التي تم تحليلها باستخدام مكتبتي Express 5 وbody-parser 2.x.
  • حزم بايثون brotli و brotlicffi (تم اقتراح الإصلاح في الإصدار 1.2.1) والمشاريع التي تستخدمها، بما في ذلك المكتبات الشائعة urllib3 و aiohttp و httpx و Scrapy، والتي تقوم بفك تشفير الاستجابات باستخدام رأس "Content-Encoding: br" عند الوصول إلى موارد الويب الخارجية.
  • خوادم HTTP، ووكلاء HTTP، وعملاء HTTP، ومتصفحات الويب التي تدعم ضغط Brotli ("Accept-Encoding: br"). يأتي Apache httpd مزودًا بوحدة mod_brotli (معطلة افتراضيًا). تتوفر وحدة ngx_brotli، وهي وحدة خارجية، لـ nginx (تم تحديث إصدار brotli في التبعيات إلى أحدث إصدار). في Chrome/Chromium وFirefox، تم إصلاح المشكلة بالفعل في تحديث سابق. في الوكيل-الخادم تم إصلاح ثغرة Envoy في الإصدارات 1.40.0 و 1.39.3 و 1.38.6 و 1.37.8 و 1.36.12.
  • يحدث هذا الخلل في بيئة تشغيل .NET عند استخدام طرق BrotliDecoder و BrotliStream و HttpClient في التطبيق. ولم يتم إصلاح هذا الخلل حتى الآن.
  • إضافة بروتلي في PHP عند استخدام دالة brotli_uncompress(). جارٍ العمل على إصلاح المشكلة.
  • كانت حزمة روبي Brotli عرضة للاستغلال باستخدام دالة Brotli.inflate. ولم يتم إصلاح هذه الثغرة الأمنية حتى الآن.
  • مشكلة في استيراد ملفات Parquet المضغوطة عبر DuckDB. جارٍ العمل على إصلاحها.
  • نظام إدارة قواعد البيانات ClickHouse. جارٍ العمل على إصلاح المشكلة.
  • نظام إدارة قواعد البيانات YDB. لم يتم إصلاح الثغرة الأمنية بعد.
  • مشكلة في برنامج Apache Arrow عند استيراد ملفات Parquet المضغوطة. جارٍ العمل على إصلاحها.
  • libjxl (تستخدم Brotli لضغط بيانات JPEG XL الوصفية).
    التصحيح قيد الإعداد.
  • تُعاني برامج ضغط الملفات NanaZip و7-Zip-zstd وp7zip من ثغرة أمنية عند فك ضغط ملفات .br. ولا تزال هذه الثغرة قائمة.
  • MuPDF. لم يتم إصلاح الثغرة الأمنية.
  • برنامج UEFI الثابت مبني على EDK II وUEFITool، ومضغوط باستخدام Brotli. يجري العمل على إصلاح المشكلة في EDK II وUEFITool.
  • إطار عمل جافا سكريبت Bun. تم إصلاح الثغرة الأمنية في الإصدار 1.4.4.
  • Istio، وهي منصة لإدارة الخدمات المصغرة. تم إصلاح الثغرة الأمنية في الإصدارات 1.29.9 و1.30.6 و1.31.2.
  • في curl و libcurl، تظهر الثغرة الأمنية عندما يكون هناك إصدار ضعيف من libbrotlidec موجودًا في التبعيات.
  • محللات تنسيق خط الويب المفتوح (WOFF)، الذي يستخدم
    بروتلي.
  • Brotli4j وSumatraPDF وGhostscript وCatBoost وYTsaurus. تم إصلاح الثغرة الأمنية في تحديث لاحق.

المصدر: opennet.ru

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster