CVE-2026-78205، الذي نُشر في 24 August at 01:16 UTC، هو ثغرة تزوير طلبات من جهة الخادم (SSRF) في آلية BentoML لحماية الاتصالات الصادرة، ويؤثر في الإصدارات 1.4.19 through 1.4.39. وهو، على نحو صريح، معالجة غير مكتملة لثغرة أقدم من عام 2025.

الفجوة، ولماذا يسهل عدم ملاحظتها

تمنع دالة الحماية العناوين الخاصة وعناوين loopback وlink-local. لكنها لا تمنع RFC 6598 shared address space, 100.64.0.0/10 — وهو النطاق المستخدم في carrier-grade NAT. والسبب هنا كاشف: مكتبة Python القياسية ipaddress لا تصنّف هذه الكتلة على أنها خاصة، لذا فإن أي فحص يُصاغ على أساس "هل هذا العنوان خاص؟" سيمررها. كتب المطوّر اختبارًا يبدو منطقيًا، وأجابت المكتبة بدقة؛ غير أن التعريف نفسه لا يطابق نموذج التهديد. يزوّد المهاجم عنوان URL عبر معالجة الملفات متعددة الأجزاء أو تحليل JSON، ثم يصل إلى مضيفين داخليين على شبكات CGNAT.

ما الذي يخطئ فيه الإطار الشائع

الإصلاح غير المكتمل ليس من الفئة نفسها كاكتشاف جديد، والتمييز هنا لا يصب في مصلحة المورّد بل ضده. فقد أُبلغ عن الثغرة الأصلية وقُبلت ورُقّعت، ثم عُدّ التصحيح كافيًا لإنهاء المسألة. وما نُشر هذا الأسبوع هو دليل على أن المعالجة اختُبرت ضد الحالة المُبلّغ عنها لا ضد الفئة نفسها. والسؤال الأهم لأي جهة تشغّل إصدارًا متأثرًا ليس ما إذا كانت قد طبقت إصلاح 2025 — فقد تكون فعلت ذلك بالفعل — بل ما إذا كان تطبيقه قد أوحى لها بأنها باتت محمية.

الخط الزمني

يقول المُبلّغ إن القضية أُرسلت بالبريد الإلكتروني في 2 June من دون أي رد منذ ذلك الحين. كما فُتحت قضية عامة في 30 June وما تزال مفتوحة. وهذا يعادل نحو 83 days من البلاغ الخاص إلى إصدار CVE علني، مع عدم وجود أي إقرار، بحسب رواية المُبلّغ، خلال تلك الفترة — وهكذا يتحول الإفصاح المنسق إلى إفصاح غير منسق.

النمط الذي اتّضح خلال الليلة

جاء هذا خلال ساعتين من ثغرتين في llama.cpp RPC. والثلاث جميعها ضمن بنية تحتية لتشغيل نماذج الذكاء الاصطناعي، وفي الحالات الثلاث كان القائمون على الصيانة قد أُبلغوا مسبقًا.