CVE-2023-28638 in Snappier
الملخص
بحسب VulDB • 06/06/2026
Snappier هو تنفيذ عالي الأداء لخوارزمية ضغط Snappy مكتوب بلغة C#. تُعد هذه الثغرة من نوع تجاوز المخزن المؤقت (Buffer Overrun) ويمكن أن تؤثر على أي مستخدم لـ Snappier الإصدار 1.1.0. في هذا الإصدار، تمت إعادة كتابة جزء كبير من الكود لاستخدام مراجع بايت (byte references) بدلاً من المؤشرات إلى المخازن المؤقتة المثبتة (pinned buffers). يحسن هذا التغيير الأداء بشكل عام ويقلل العبء على جامع القمامة (Garbage Collector). ومع ذلك، عندما يقوم جامع القمامة بإجراء ضغط الذاكرة (compaction) وإعادة ترتيبها، يجب عليه تحديث أي مراجع بايت موجودة على المكدس (stack) لتشير إلى الموقع المحدّث. يمكن لجامع القمامة في .NET تحديث مراجع البايت هذه فقط إذا كانت لا تزال تشير إلى داخل المخزن المؤقت أو إلى نقطة تلي نهاية المخزن المؤقت ببايت واحد. إذا كانت تشير إلى خارج هذا النطاق، فقد يتم نقل المخزن المؤقت نفسه بينما تظل مرجع البايت كما هو. توجد عدة أماكن في الإصدار 1.1.0 حيث تشير مراجع البايت لفترة وجيزة جداً إلى خارج المناطق الصالحة للمخازن المؤقتة. وتقع هذه الأماكن في أجزاء من الكود المستخدمة لإجراء فحوصات نطاق المخزن المؤقت. وعلى الرغم من أنه لا يتم فك مرجع المراجع غير الصالحة مباشرة، إلا أنه إذا حدث ضغط لجامع القمامة خلال النافذة الزمنية القصيرة التي تكون فيها هذه المراجع على المكدس، فقد يؤدي ذلك إلى إبطال فحص نطاق المخزن المؤقت والسماح لعمليات أخرى بتجاوز المخزن المؤقت. من الصعب جداً على مهاجم تحفيز هذا الأمر عن قصد. سيتطلب ذلك هجوماً ضخماً متكرراً مع الأمل في حدوث ضغط لجامع القمامة في اللحظة المناسبة تماماً أثناء أحد الطلبات. ومع ذلك، فإن أحد فحوصات النطاق المتأثرة بهذه المشكلة يعتمد على بيانات الإدخال في مخزن الضغط غير المضغوط (decompression buffer)، مما يعني أنه يمكن استخدام بيانات إدخال مشوهة لزيادة فرص النجاح. تجدر الإشارة إلى أن أي تجاوز للمخزن المؤقت الناتج من المرجح أن يؤدي إلى الوصول إلى ذاكرة محمية، مما سيؤدي بدوره إلى حدوث استثناء وإنهاء العملية. لذلك، فإن النتيجة الأكثر احتمالاً للهجوم هي حجب الخدمة (Denial of Service). تم إصلاح هذه المشكلة في الإصدار 1.1.1. يُنصح المستخدمون بالترقية. قد يتمكن المستخدمون غير القادرين على الترقية من تثبيت المخازن المؤقتة في موقع ثابت قبل استخدامها للضغط أو فك الضغط للتخفيف من بعض، ولكن ليس جميع، هذه الحالات. يوجد على الأقل مخزن مؤقت مؤقت لفك الضغط داخلي في المكتبة ولا يتم تثبيته أبداً.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.