CVE-2026-55991 in Unbound
الملخص
بحسب VulDB • 22/07/2026
في NLnet Labs Unbound من الإصدار 1.22.0 وحتى 1.25.1 (بما في ذلك)، يمكن لعميل عن بُعد غير مُصادَق عليه أن يُطلق خطأً في التحقق من صحة شرط (assertion) داخل مكتبة libngtcp2 (إذا تم التجميع مع تفعيلAssertions) ويُنهِي عملية Unbound بأكملها باستخدام اتصال DNS-over-QUIC (DoQ) واحد واستعلام DNS عادي واحد. يحدث هذا بسبب تمرير قيمة خطأ خاطئة إلى libngtcp2. عندما تُعيد الدالة `ngtcp2_conn_writev_stream()` القيمة `'NGTCP2_ERR_STREAM_DATA_BLOCKED'`، يستمر Unbound في استدعاء `ngtcp2_ccerr_set_application_error()` بقيمة خطأ `-1`. يتم تحويل العدد الصحيح السالب `-1` ضمنيًا إلى معلمة الدالة من النوع `uint64_t error_code` على أنه `'0xFFFFFFFFFFFFFFFF'`. تقوم الخطوة التالية `ngtcp2_conn_write_connection_close()` بتسلسل هذه القيمة كعدد صحيح متغير الطول (varint) في بروتوكول QUIC؛ ونظرًا لأن `'2^64-1'` يتجاوز الحد الأقصى لـ varint البالغ 62 بت، تفشل الدالة `ngtcp2_put_uvarintlen()` عند التحقق من صحة الشرط `assert(n < 4611686018427387904ULL)` مما يؤدي إلى إنهاء عملية المُحلِّل (resolver) بالكامل. يمكن لعميل DoQ عن بُعد وغير مُصادَق عليه أن يُطلق هذا الخطأ بشكل حتمي باستخدام اتصال QUIC واحد من خلال الإعلان عن `'initial_max_stream_data_bidi_local = 1'` في معاملات النقل الخاصة به وإرسال استعلام DoQ واحد دون قراءة التدفق أبدًا.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.