{"schema_version":"1.0","service":"Publicasta","type":"article","id":1137,"slug":"brotli_decoder_dependency_inventory_cve_2026_111497","title":"CVE-2026-111497 في Brotli: لماذا يجب على الفرق حصر أجهزة فك الترميز، لا Node.js فقط","excerpt":"يكشف تحديث من Cisco في 5 نوفمبر كيف يمكن لخلل واحد في جهاز فك ترميز Brotli أن يتجاوز حدود المنتجات. وتتمثل الاستجابة العملية في حصر المكتبات المضمّنة، وتحديد مسارات فك الترميز المكشوفة، والتحقق من الإصلاحات عبر أوقات التشغيل والأجهزة.","language":"ar","default_language":"en","canonical_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=ar","image":{"url":"https://publicasta.com/storage/projects/9/pages/1137/2026/11/92ed2433-dc20-4814-acaf-bf2309f645f4.webp","alt":"خبير أمن سيبراني يراجع مسار تبعيات محميًا لمفكك ترميز Brotli عبر الخوادم والحاويات وطبقات البرمجيات."},"publisher":{"id":9,"slug":"cybersecurity","name":"Cybersecurity Without Panic","url":"https://publicasta.com/cybersecurity"},"author":{"name":"Anton R"},"published_at":"2026-11-05T13:52:59+00:00","updated_at":"2026-11-05T13:52:59+00:00","content_markdown":"## ما الذي يؤثر فيه CVE-2026-111497 فعليًا\n\n ![خبير أمن سيبراني يراجع مسار تبعيات محميًا لمفكك ترميز Brotli عبر الخوادم والحاويات وطبقات البرمجيات.](https://publicasta.com/storage/projects/9/pages/1137/2026/11/92ed2433-dc20-4814-acaf-bf2309f645f4.webp)\n\n CVE-2026-111497 هو عيب كتابة خارج حدود الذاكرة في جهاز فك ترميز Google Brotli. يظهر العيب عندما يفك تطبيق معرض للخطر ضغط تدفق Brotli مشوّهًا: إذ يتعامل جهاز فك الترميز مع تبديل كتلة غير صالح كما لو أنه يحتاج إلى مزيد من الإدخال فقط، ثم يواصل إلحاق البايتات بمخزن داخلي سعته ثمانية بايتات. وبذلك يتجاوز الإدخال حدود الذاكرة المقصودة. في Node.js، تكون الشفرة المتأثرة مضمّنة في وحدة `zlib` الخاصة ببيئة التشغيل، لذلك يمكن لتطبيق يستخدم فك ضغط Brotli أن يعرّض العيب دون تثبيت حزمة منفصلة باسم `brotli`.\n\n يصف [إصدار Node.js الأمني](https://nodejs.org/en/blog/vulnerability/october-2026-security-releases) النتيجة مباشرة. يستطيع المهاجم الذي يتمكن من تمرير بيانات Brotli يفككها التطبيق باستخدام `node:zlib` أن يفسد ذاكرة العملية، ما قد يؤدي إلى تعطلها أو كشف محتويات ذاكرتها أو تنفيذ تعليمات برمجية عن بُعد. ويصنّف الإصدار المشكلة على أنها عالية الخطورة، ويحدد سلاسل إصدارات Node.js 26.x و24.x و22.x باعتبارها متأثرة. لذلك لا يقتصر السؤال المهم بالنسبة إلى مالك النظام على «ما إصدار Node.js المثبّت؟»، بل يشمل أيضًا: «هل يمكن إجبار هذه العملية الجارية على فك بيانات Brotli مصدرها مهاجم أو نظام آخر غير موثوق؟»\n\n هذا الشرط مهم لأن الثغرة لا تعادل اختراق كل جهاز يحتوي على مكتبة قادرة على التعامل مع Brotli. يصف [تنبيه Red Hat](https://access.redhat.com/security/vulnerabilities/RHSB-2026-015) المشكلة نفسها بأنها تدفق مُعدّ خصيصًا يمكنه إفساد الذاكرة في تطبيق يعالج إدخال Brotli غير موثوق. ويذكر نتائج محتملة تشمل كشف المعلومات، وحجب الخدمة، وتنفيذ تعليمات برمجية عشوائية، مع الإشارة أيضًا إلى أن البيئات التي لا يفك فيها أي تطبيق بيانات Brotli من مصادر غير موثوقة لا تتأثر عمليًا. ويتطلب الاستغلال تدفقًا مشوّهًا على نحو محدد؛ أما المخرجات العادية السليمة الناتجة عن مُرمّز عادي فلا تُفعّل المشكلة.\n\n موقع جهاز فك الترميز هو ما يجعل مشكلة الحصر أقل وضوحًا مما ينبغي. يُستخدم Brotli مع HTTP عبر `Content-Encoding: br`، لكنه قد يظهر أيضًا كمكتبة مستقلة، أو ضمن روابط Python، أو داخل المتصفحات وعملاء آخرين، أو كجزء من منتج أكبر. وتحدد Red Hat المكتبة باعتبارها متاحة عبر حزم مثل `brotli` وروابط Brotli الخاصة بـ Python، مع الإشارة إلى أن Node.js يضمّنها ضمن `zlib`. كما يشير التنبيه نفسه إلى نسخ مضمّنة في Firefox وThunderbird ومنتجات متعددة الطبقات. لذلك قد يعرض جرد برمجي يسجل التطبيقات العليا فقط خدمة تبدو عادية، بينما يخفي جهاز فك الترميز الأصلي الذي يحلل فعليًا بايتات مضغوطة واردة من الخارج.\n\n ولهذا السبب أيضًا ينبغي تتبع معرّف CVE على مستويين. يسمي [سجل CVE](https://www.cve.org/CVERecord?id=CVE-2026-111497) الثغرة الأساسية، بينما يحدد تنبيه خاص ببيئة تشغيل أو منتج كيفية حزم ذلك المكوّن أو إصلاحه أو ترحيل إصلاحه إلى إصدار توزيع بعينه. قد يعالج تحديث Node.js النسخة المضمّنة في Node.js، لكنه لا يقول شيئًا بمفرده عن مكتبة Brotli منفصلة، أو رابط Python، أو إصدار متصفح، أو صورة جهاز، أو منتج آخر يضمّن نسخته الخاصة. وبالعكس، فإن العثور على CVE في أداة فحص لا يثبت أن مسار فك الترميز المتأثر يمكن الوصول إليه من مصدر غير موثوق.\n\n وعليه، فإن أول تصنيف مفيد يجمع بين المكوّن ومسار الإدخال. سجّل كيف يدخل Brotli إلى النظام، وأي منتج أو بيئة تشغيل تملك النسخة الجارية، وما إذا كانت تلك النسخة تتعامل مع استجابات الشبكة أو طلبات HTTP أو البيانات المحمّلة أو المكوّنات البعيدة أو أي محتوى تتحكم فيه جهة خارج حدود الثقة. وفي Node.js، ينبغي أن تشمل المراجعة استخدام واجهات برمجة تطبيقات فك ضغط Brotli وأي سلوك يفك تلقائيًا استجابات `br`. أما في المنتجات الأخرى، فاستخدم تنبيه المكوّن وملاحظات الإصدار الصادرة عن المورّد، بدل افتراض أن اسم الحزمة أو إصدار التطبيق يطابق بسهولة الملف الثنائي المتأثر.\n\n يفصل هذا النهج بين السلوك المؤكد والتكهنات بشأن الاستغلال. تثبت التحذيرات المتاحة وجود خلل في سلامة الذاكرة قد تكون له عواقب خطيرة عندما تعالج عمليات فك الترميز المتأثرة مدخلات يتحكم بها المهاجم. لكنها لا تثبت أن كل عملية تثبيت معرضة بالطريقة نفسها، ولا أن حملة استغلال واسعة ومؤكدة جارية. الأولوية التي يمكن الدفاع عنها هي تحديد برامج فك الترميز التي تجمع بين قابلية التأثر وإمكانية الوصول إليها، ثم التحقق من الإصدار المُصلح للمنتج الذي يضمها فعليًا. وهذا هو الأساس لجرد التبعيات المطلوب في المرحلة التالية.\n\n ## لماذا لا يغلق إصلاح Node.js نطاق التعرض بالكامل\n\n يُعد تحديث Node.js ضروريًا عندما يستخدم التطبيق خط إصدار متأثرًا، لكنه لا يمثل إجابة كاملة عن CVE-2026-111497. فالكود المتأثر موجود في برنامج فك الترميز C الخاص بـ Google Brotli، وتشير Cisco إلى أن هذا المكوّن غالبًا ما يكون مضمّنًا في برمجيات تتجاوز Node.js أو مرتبطًا بها. لذلك قد يرث منتج ما الخلل نفسه من دون أن يظهر في الجرد بوصفه تطبيق Node.js، ومن دون أن يتيح للمشغلين حزمة Brotli مستقلة لتحديثها. والسؤال المهم ليس فقط: «ما إصدارات Node.js التي نشغّلها؟» بل أيضًا: «ما المنتجات التي تحتوي على برنامج فك ترميز Brotli، وأيٌّ منها يمكنه فك ضغط بيانات يزودها طرف آخر؟»\n\n يوضح تحذير Cisco الصادر في 5 نوفمبر سبب أهمية هذا التمييز من الناحية التشغيلية. فالشركة تراجع المنتجات كلًّا على حدة، بدل التعامل مع محفظتها بأكملها باعتبارها متأثرة بالطريقة نفسها. ويسجل جدول المنتجات ذات الأولوية نتائج مختلفة: إذ تُدرج Catalyst SD-WAN Software وIdentity Services Engine وIOS XE Software وSecure Firewall Management Center وSecure Firewall Threat Defense على أنها غير متأثرة، بينما يظل IOS XR Software وSecure Firewall Adaptive Security Appliance Software قيد التحقيق. أما NX-OS Software فيُحال إلى جداول الأثر والإصلاح الأخرى. ويؤكد هذا التفاوت أن تقييم المورّد يعتمد على كيفية دمج منتج معين للمكوّن المشترك واستخدامه، لا ببساطة على ما إذا كان المورّد يطرح برمجيات مرتبطة بـ Node.js أو Brotli.\n\n يسرد التحذير نفسه منتجات قيد التحقيق النشط ضمن نطاق واسع من الفئات، منها مراقبة التطبيقات، وأمن الشبكات والمحتوى، وإدارة الشبكات، والتوجيه والتحويل، والحوسبة الموحدة، والفيديو والتعاون، والخدمات اللاسلكية، والخدمات المستضافة لدى Cisco. ولهذا الاتساع أهمية لدى مالكي الأصول، لأن مسار التنفيذ المتأثر قد يوجد داخل جهاز، أو وحدة تحكم، أو جهاز افتراضي، أو أداة طرفية، أو خدمة متصلة بالسحابة. وقد يصف اسم المنتج الظاهر في نظام إدارة التهيئة والبيانات (CMDB) الوظيفة التجارية، مثل مدير جدار ناري أو وحدة تحكم أو منصة تعاون، بينما يكون برنامج فك الترميز المتأثر مدفونًا داخل بيئة تشغيل، أو مكتبة مضمّنة، أو مكوّن خدمة. لذلك قد يكون جرد التطبيقات التقليدي دقيقًا على مستوى المنتج، ومع ذلك يعجز عن تحديد الكود الذي يعالج المدخلات المضغوطة.\n\n يوضح جدول الإصدارات المُصلحة لدى Cisco أيضًا سبب عدم جواز التعامل مع كلمة «مُرقّع» باعتبارها حالة واحدة على مستوى المحفظة كلها. إذ يحدد التحذير مسارات معالجة مختلفة لمنتجات مختلفة: يرتبط Duo Network Gateway بالإصدار 3.4.2، بينما يرتبط Duo Authentication Proxy Local Manager for Windows بالإصدار 6.8.1، وCatalyst Center بالإصدار 3.4.1. وتحتوي إدخالات أخرى على رقم إصدار لم يُحدد بعد، أو على هدف إصدار موسوم بأنه قيد الانتظار. وتعني هذه الفروق أن على المؤسسة مطابقة المنتج الدقيق، وشكل النشر، وفرع الإصدار الذي تستخدمه مع حالة المورّد وإصداره المُصلح. فتثبيت حزمة Node.js محدثة على مضيف بناء لا يثبت أن صورة جهاز، أو خدمة مضمّنة، أو منتجًا تتم صيانته بصورة منفصلة قد تلقى التصحيح المناظر.\n\n هناك فخ آخر في حصر المكونات يكمن في تدفق البيانات نفسه. فقد لا تعرض الخدمة ميزة Brotli للمستخدم، لكنها قد تظل تفك ترميز Brotli عند معالجة محتوى HTTP أو أي تدفق آخر يقدمه طرف خارجي. وتصف Red Hat التعرض للخطر من زاوية تلقي أداة فك الترميز بيانات Brotli غير موثوقة، وتذكر أمثلة تشمل تبادلات HTTP التي تستخدم `Content-Encoding: br`، وواجهات فك الضغط في Node.js، والتطبيقات التي تستدعي مكتبة Brotli مباشرة. وهذا حدّ أكثر فائدة للتقييم من مجرد وجود اسم الحزمة. ينبغي للفرق أن تسأل: هل يستطيع المكوّن استقبال بايتات مضغوطة يتحكم بها مهاجم؟ ومن خلال أي مستمع أو تكامل تصل هذه البيانات؟ وهل يحتوي المنتج قيد التشغيل — وليس بيان تبعيات المصدر فقط — على أداة فك الترميز الضعيفة؟\n\n وهذا يفسر أيضاً كيف يمكن لفحص نظيف للتبعيات أن يمنح طمأنينة زائفة. فقد يُظهر ملف القفل تبعية للتطبيق، لكنه لا يذكر مكتبة جرى تجميعها داخل ملف ثنائي يورّده أحد البائعين. وعلى العكس، قد يعرض جرد حزم المضيف حزمة Brotli للنظام، بينما تستخدم الخدمة المكشوفة نسخة خاصة داخل صورتها هي. وتوجّه نشرة Cisco المسؤولين إلى سجلات الأخطاء الخاصة بكل منتج وإصدارات البرمجيات التي تتضمن الإصلاح، في حين تشير Red Hat إلى أن المنتجات متعددة الطبقات والحاويات قد تعتمد على حزم أساسية محدّثة. لذلك فإن وحدة المعالجة العملية هي المنتج المنشور ومسار فك الترميز التنفيذي فيه. فالتحديثات الخاصة بـ Node.js تغلق المكوّن في Node.js حيث جرى تثبيتها؛ لكنها لا تغلق تلقائياً كل منتج من منتجات Cisco أو كل جهاز أو حاوية أو خدمة قد تحمل أداة فك ترميز Brotli نفسها.\n\n ## الحصر الدفاعي المهم\n\n السؤال المفيد ليس ببساطة ما إذا كان Node.js مثبتاً على الخادم، بل ما المكونات التي تستطيع فك ترميز بيانات Brotli، وأين تعمل هذه المكونات، وما إذا كان يمكن لطرف غير موثوق التأثير في البيانات التي تستقبلها. فقد تكون أداة فك الترميز جزءاً من Node.js، أو مكتبة Brotli مستخدمة عبر روابط Python، أو حزمة SDK مضمّنة في تطبيق، أو صورة حاوية، أو جهاز لا يقدم رؤية واضحة على مستوى الحزم لفريق التشغيل. لذلك قد يحدد جرد البرمجيات التقليدي التطبيق، لكنه يفوّت المكتبة التي تنفذ عملية التحليل ذات الصلة.\n\n ابدأوا بحصر بيئات التنفيذ بدلاً من البحث عن اسم حزمة واحد. سجّلوا عمليات تثبيت Node.js والتطبيقات التي تدمجه أو تعتمد عليه. وافحصوا الخدمات التي تستخدم دعم Brotli عبر روابط Python أو تكاملات لغوية أخرى، وأدرجوا حزم SDK المضمّنة التي تُدار تبعياتها بصورة منفصلة عن نظام تشغيل المضيف. ووسّعوا المراجعة لتشمل الحاويات، والصور الأساسية، ومخرجات البناء، وأجهزة البائعين. ولكل عنصر، سجّلوا المنتج وإصداره، وإصدار الصورة أو البرنامج الثابت، والعملية التي تحمّل أداة فك الترميز، والمالك المسؤول عن تحديثها. والهدف هو ربط التبعية المجردة بالملف الثنائي الذي سيعالج البيانات فعلياً.\n\n والتمييز التالي يتعلق بالتعرض. فوجود أداة فك ترميز على نظام ما لا يعني تلقائياً أنها مكشوفة. ارسموا المسارات التي تستقبل عبرها كل خدمة المحتوى المضغوط: طلبات HTTP العامة، والملفات المرفوعة عن بُعد حتى إن كانت تتطلب مصادقة، والرسائل الواردة من أنظمة خارجية، وحركة المرور عبر الوكلاء، وموجزات الحزم أو المخرجات البرمجية، وواجهات الإدارة. وسجّلوا أيضاً الخدمات التي تفك الضغط بصورة غير مباشرة، مثل البوابات والوسطاء ومكونات واجهات API أو عمال التطبيقات. ينبغي أن يصف هذا الرسم تدفق البيانات على مستوى عالٍ؛ ولا يتطلب اختبار الخلل أو إرسال مدخلات مصممة خصيصاً. يكفي تحديد ما إذا كان مهاجم أو عميل غير موثوق أو نظام upstream يستطيع التحكم في محتوى يصل إلى مسار فك ترميز Brotli.\n\n يمكن تنظيم جرد عملي حول أربعة أسئلة لكل بيئة تشغيل أو منتج:\n\n - **ما الذي يفك ترميز Brotli؟** حدّدوا بيئة التشغيل، أو المكتبة، أو الرابط، أو حزمة SDK، أو مكوّن الجهاز، أو طبقة الحاوية، أو تنفيذ الخدمة المعني.\n- **أين يعمل؟** سجّلوا المضيفات، والحاويات، والصور، والبرامج الثابتة، وبيئات النشر، والعملية أو المنتج الذي يحمّله.\n- **من يستطيع توفير المدخلات؟** بيّنوا ما إذا كانت البيانات المضغوطة تأتي من الشبكة العامة، أو شريك، أو مستخدم، أو خدمة داخلية، أو مصدر يخضع للتحكم.\n- **أي إصدار من البائع يتضمن الإصلاح؟** قارنوا المنتج أو المكوّن المرصود بالإصدار المُصلح المنطبق من Node.js، أو بائع المنتج، أو الموزّع الذي يوفّر الحزمة.\n\n يجب إجراء تلك المقارنة الأخيرة على مستوى المنتج المنشور فعليًا. فقد يعالج تحديث Node.js بيئة التشغيل في خدمة واحدة، بينما يترك جهازًا مستقلًا أو حزمة SDK أو مكتبة منسوخة منفصلة من دون تغيير. وفي المقابل، قد ينشر أحد المورّدين تحديثًا لمنتج يتضمن وحدة فك الترميز المصححة، من دون أن يتغير ظهور التبعية في تقرير حزم على مستوى التطبيق. والإجابة الموثوقة تأتي من إشعار المورّد وإصداره المُصلَح للمنتج المتأثر، ثم من التحقق مما هو موجود في البيئة قيد التشغيل.\n\n تتطلب الحاويات عناية خاصة، لأن تحديث ملف القفل أو بيان الحزم لا يغيّر صورة سبق بناؤها. تحقّق من حلّ التبعيات المستخدم أثناء البناء، وافحص أيضًا الصورة الناتجة أو بيئة التشغيل المثبّتة فيها، ثم أعد نشرها. فالصور التي تُعاد من طبقة أساس لم تتغير قد تعيد إنتاج المكوّن نفسه المعرّض للخطر، حتى عندما لا يتغير مصدر التطبيق. وعند توفر صورة مصححة، استبدل عبء العمل قيد التشغيل بدل افتراض أن عملية بناء لاحقة ستعدّل الحاويات الموجودة في مكانها. واحرص على إبقاء الصورة القديمة وارتباط النشر بها واضحين بما يكفي لتحديد النسخ التي لا تزال بحاجة إلى معالجة.\n\n وينطبق المبدأ نفسه على العمليات طويلة العمر والأجهزة المستقلة. فقد لا يؤثر تحديث الحزمة في عملية حمّلت المكتبة القديمة بالفعل، وقد يتطلب تحديث الجهاز المستقل إعادة تشغيل موثقة أو تفعيلًا للبرمجية الثابتة قبل استخدام المكوّن المصحح. تعامل مع متطلبات إعادة التشغيل باعتبارها جزءًا من سجل المعالجة: سجّل التحديث المطبّق، والنسخة أو الجهاز الذي أُعيد تشغيله، والوقت الذي أصبحت فيه العملية الجديدة أو البرمجية الثابتة الجديدة نشطة، والأدلة المستخدمة لتأكيد ذلك. وإذا لم يوفّر المنتج جردًا مستقلًا ومرئيًا للحزم، فاعتمد على مطابقة إصدارات المورّد والتحقق التشغيلي، بدل استنتاج الأمان من إصدار تطبيق غير ذي صلة.\n\n يساعد هذا الجرد أيضًا على ترتيب الأولويات من دون تحويل كل حالة إلى طارئ. امنح الأولوية لوحدات فك الترميز التي يمكن الوصول إليها عبر خدمات مكشوفة على الإنترنت أو محتوى يورده طرف بعيد، ثم للبوابات المشتركة والأجهزة عالية القيمة وبيئات العمل التي تستهلك أنظمتها الأخرى مخرجاتها. أما أدوات التطوير أو الخدمات المعزولة التي تفك ترميز بيانات خاضعة للسيطرة فقط، فقد يختلف تقييم مخاطرها، لكن ينبغي أن تظل مسجلة إلى أن تقارنها الجهة المالكة بإرشادات المورّد المعنية. ويجب أن تكون الخريطة الناتجة قائمة معالجة حيّة؛ لكل إدخال مالك للمنتج، وتقييم للتعرض، ومقارنة بالإصدار المصحح، وخطوة تحقق مرتبطة بالمكوّن الذي يعمل فعليًا.\n\n ## التصحيح والاحتواء والتحقق من دون تخمين\n\n تبدأ الاستجابة القابلة للدفاع عنها بالفرز، لا بافتراض أن كل نظام يستخدم Node.js معرض للخطر بالدرجة نفسها. رتّب وحدات فك الترميز بحسب طريقة وصول البيانات المضغوطة إليها: الخدمات والبوابات المكشوفة على الإنترنت أولًا، ثم التطبيقات التي تقبل التحميلات أو رسائل الشركاء، تليها الخدمات الداخلية التي تتلقى البيانات من شبكات أقل موثوقية. والسؤال الأساسي ليس ما إذا كان المضيف يحتوي في مكان ما على إصدار معرض للخطر ضمن جرده، بل ما إذا كان ذلك الإصدار هو المكوّن الذي يفك فعليًا ترميز بيانات Brotli التي يتحكم بها مهاجم، داخل عملية أو منتج قيد التشغيل.\n\n لكل مرشح، سجّل الفريق المالك، والمنتج وإصداره، ومصدر بيئة التشغيل أو المكتبة، وشكل النشر، ومسار الإدخال الذي يستدعي فك الترميز. ويشمل ذلك تثبيتات Node.js، والتطبيقات التي تدمج Node.js، ومكتبات Brotli المباشرة، وارتباطات اللغات مثل تكاملات Python، وحاويات، وأجهزة مستقلة. وقد يمنح إشعار المورّد حالات مختلفة لإصدارات مختلفة من المنتج، لذلك تحقّق من إصدار المنتج المحدد بدل استنتاج التعرض من بيان عام عن المكتبة الأساسية. ويوضح إشعار Cisco سبب أهمية ذلك: فقد تظهر المشكلة الأساسية نفسها عبر منتجات ذات حالات معالجة مختلفة.\n\n الإصلاح المفضّل هو التحديث الموثّق الصادر عن مورّد المكوّن أو المنتج. إذا كان مفكّك الترميز يأتي عبر Node.js، فاستخدم الإصدار المحدد في [إرشادات أمان Node.js](https://nodejs.org/en/blog/vulnerability/october-2026-security-releases). وإذا كان مضمّناً في جهاز أو حزمة SDK أو تطبيق، فاتبع تعليمات الإصدار والنشر الخاصة بالمورّد. لا تعتبر استبدال تبعية عليا دليلاً على اختفاء كل نسخة مضمّنة. فملف القفل يصف دقة البناء، بينما قد تظل صورة النشر تحتوي على حزمة انتقالية أقدم، أو مصدر مورّد، أو وحدة أصلية، أو طبقة تشغيل منفصلة. ويعتمد اكتمال المعالجة على الأثر البرمجي الذي ينفّذ فعلياً.\n\n ينبغي أن يكون الاحتواء المؤقت محدوداً وموثقاً وقابلاً للعكس. وحيثما كان ذلك ممكناً تشغيلياً، قلّل المسار المحدد الذي يقبل محتوى Brotli غير الموثوق أو علّقه، أو ضعه خلف تحكم معتمد للفلترة أو بوابة، أو أخرج المكوّن المكشوف من الخدمة ريثما يُجهّز الإصلاح. هذه الإجراءات ليست بديلاً عن التصحيح، ولا ينبغي للفرق اختراعها بناءً على افتراضات حول سلوك الضغط في المنتج. استخدم فقط إجراءات التخفيف التي وثقها المورّد المسؤول أو تحققت منها عمليات التغيير والأمن في المؤسسة. سجّل وقت بدء التحكم، والوظيفة التي يؤثر فيها، والجهة المسؤولة عن إزالته بعد المعالجة.\n\n تفاصيل النشر جزء من المعالجة. فقد تواصل عملية تحمّل بيئة التشغيل أو المكتبة المشتركة عند بدء التشغيل استخدام مفكّك الترميز القديم إلى أن يُعاد تشغيلها. وقد تُعاد بناء صورة الحاوية بصورة صحيحة، بينما تواصل النسخ الموجودة خدمة الحركة من الصورة السابقة. بعد تحديث تدريجي، تأكد من أن الحاويات القديمة والعاملين والوحدات الجانبية وعُقد الأجهزة قد توقفت عن استقبال الطلبات أو أُعيد تشغيلها، وأن تجاوز الفشل أو التوسع التلقائي لن يعيدا إدخال الأثر المستبدَل. وبالنسبة إلى الأنظمة الواقعة خارج مسار التطبيق الرئيسي، أدرج عمليات إعادة تشغيل الخدمات أو الأجهزة في سجل التغيير، مع اتباع الإجراء الموثّق للمنتج.\n\n ينبغي أن يجمع التحقق بين أدلة البرمجيات وأدلة التعرض. حدّد الملف التنفيذي أو بيئة التشغيل أو ملخص الصورة أو بيان الحزم أو بناء المورّد الذي يخدم مسار فك الترميز فعلياً، ثم قارنه بالإصدار المصحح المذكور في [سجل CVE](https://www.cve.org/CVERecord?id=CVE-2026-111497) أو إصدار Node.js أو النشرة الخاصة بالمنتج، بحسب الحالة. تأكد من إعادة تشغيل العملية المعنية ومن أن النسخ المتوقعة تعمل بالأثر الجديد؛ فوجود مستودع مصدر أو ذاكرة حزم مؤقتة أو نتيجة من CI لا يكفي كدليل. وأعد فحص النسخ المكررة في الصور غير النشطة، وإعدادات النسخ الاحتياطية، وبيئات الاختبار المتصلة بتغذية الإنتاج، والأجهزة التي يديرها فريق آخر.\n\n يجب أن يوضح السجل ما لوحظ وما لم يُلاحظ: الإصدارات المتأثرة التي عُثر عليها، والإصدارات المصححة التي نُشرت، والمسارات التي تستقبل مدخلات مضغوطة غير موثوقة، وإجراءات التحكم المؤقتة، ونتائج المراقبة ذات الصلة. وتثبت المصادر المذكورة سياق الثغرة والمعالجة، لكنها لا تثبت انتشار استغلال واسع النطاق على نحو مؤكد. ويساعد هذا التمييز على دعم استجابة متناسبة: إعطاء الأولوية لمفككات الترميز القابلة للوصول والتحقق سريعاً من الإصلاحات، من دون الادعاء بأن كل مستهلكي Brotli تعرضوا للهجوم أو بأن المعالجة نجحت لمجرد تغيّر ملف تبعية. والنتيجة المطلوبة هي خدمة عاملة ومحصورة في سجل، يكون مفكّك ترميزها مرتبطاً بإصدار مصحح موثق، ولا يسمح مسار نشرها بإعادة المكوّن الضعيف بصمت.","available_translations":[{"language":"ar","title":"CVE-2026-111497 في Brotli: لماذا يجب على الفرق حصر أجهزة فك الترميز، لا Node.js فقط","html_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=ar","markdown_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.md?lang=ar","json_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=ar","api_url":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles/brotli_decoder_dependency_inventory_cve_2026_111497?lang=ar"},{"language":"de","title":"CVE-2026-111497 in Brotli: Warum Teams Decoder inventarisieren müssen, nicht nur Node.js","html_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=de","markdown_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.md?lang=de","json_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=de","api_url":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles/brotli_decoder_dependency_inventory_cve_2026_111497?lang=de"},{"language":"en","title":"CVE-2026-111497 in Brotli: Why Teams Must Inventory Decoders, Not Just Node.js","html_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=en","markdown_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.md?lang=en","json_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=en","api_url":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles/brotli_decoder_dependency_inventory_cve_2026_111497?lang=en"},{"language":"es","title":"CVE-2026-111497 en Brotli: por qué los equipos deben inventariar decodificadores, no solo Node.js","html_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=es","markdown_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.md?lang=es","json_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=es","api_url":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles/brotli_decoder_dependency_inventory_cve_2026_111497?lang=es"},{"language":"fr","title":"CVE-2026-111497 dans Brotli : pourquoi les équipes doivent inventorier les décodeurs, pas seulement Node.js","html_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=fr","markdown_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.md?lang=fr","json_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=fr","api_url":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles/brotli_decoder_dependency_inventory_cve_2026_111497?lang=fr"},{"language":"pl","title":"CVE-2026-111497 w Brotli: dlaczego zespoły muszą zinwentaryzować dekodery, a nie tylko Node.js","html_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=pl","markdown_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.md?lang=pl","json_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=pl","api_url":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles/brotli_decoder_dependency_inventory_cve_2026_111497?lang=pl"},{"language":"ru","title":"CVE-2026-111497 в Brotli: почему командам нужно учитывать декодеры, а не только Node.js","html_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=ru","markdown_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.md?lang=ru","json_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=ru","api_url":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles/brotli_decoder_dependency_inventory_cve_2026_111497?lang=ru"},{"language":"zh","title":"Brotli 中的 CVE-2026-111497：为何团队必须盘点解码器，而不只是 Node.js","html_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=zh","markdown_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.md?lang=zh","json_url":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=zh","api_url":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles/brotli_decoder_dependency_inventory_cve_2026_111497?lang=zh"}],"_links":{"self":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=ar","api":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles/brotli_decoder_dependency_inventory_cve_2026_111497?lang=ar","html":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=ar","canonical":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497?lang=ar","markdown":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.md?lang=ar","json":"https://publicasta.com/cybersecurity/brotli_decoder_dependency_inventory_cve_2026_111497.json?lang=ar","channel":"https://publicasta.com/api/public/v1/channels/cybersecurity","channel_articles":"https://publicasta.com/api/public/v1/channels/cybersecurity/articles","search":"https://publicasta.com/api/public/v1/search","documentation":"https://publicasta.com/api-docs#reading-publicasta","openapi":"https://publicasta.com/api-docs/openapi.json","llms":"https://publicasta.com/llms.txt"}}