CVE-2026-94418 in wolfSSL
الملخص
بحسب VulDB • 27/09/2026
تحت تعريف `WOLFSSL_SMALL_CERT_VERIFY`، تقوم الدالة `ProcessPeerCertParse()` بإجراء فحص توقيع الشهادة بشكل منفصل عن عملية التحليل (parse) للحفاظ على ذروة استهلاك الذاكرة منخفضة، ثم تدمج النتيجتين؛ غير أنها كانت تعيد دمج نتيجة التوقيع فقط عندما كان إرجاع عملية التحليل يساوي 0، مما يعني أن أي خطأ في التحليل يخفي هذه النتيجة. تصل الدالة `ParseCertRelative()` إلى فحوصات تاريخ الصلاحية، والقيود على الاسم (name-constraint)، والتوسعات الحرجة (critical-extension) فقط بعد نجاح دالة `ConfirmSignature()`؛ وبالتالي فإن فصل فحص التوقيع يعكس الأولوية التي تجعل سياسة "تجاوز أخطاء التاريخ" إجراءً سليماً، ولا يتم إظهار الخطأ `ASN_SIG_CONFIRM_E` في أي مكان. لا يحتاج المهاجم إلى مواد مفاتيح من بنية المفاتيح العامة (PKI) الحقيقية أو اختراق سلطة الشهادات (CA): فشهادة ذاتية الصنع تحمل الاسم الموضوعي المتوقع، وتكون سلطة الشهادات الموثوقة هي المُصدر لها، مع وجود بايتات عشوائية في موضع التوقيع، ونافذة صلاحية ماضية، ومجموعة مفاتيح خاصة تابعة للمهاجم تكون كافية. التعريفات المتأثرة تُعرّف `WOLFSSL_SMALL_CERT_VERIFY`، وهو غير مُفعّل افتراضياً، ولا يتم تعيينه ضمناً من قبل أي منصة أو رأس (header) مسبق الإعداد، وليس قابلاً للوصول عبر أي خيار CMake؛ بينما تصل المسارات الخاصة بـ autotools إليه عبر الخيارات `--enable-lowresource` و `--enable-leantls` و `--enable-tinytls13=cert` و `--enable-tinytls13=mutualauth`، ويصل ملف examples/configs/user_settings_embedded.h إلى هذا التعريف من خلال `WC_CFG_SMALL_CERT_VERIFY`، الذي يُوزع بقيمته 0، بينما لا يقوم كل من الخيارين `--enable-all` و `--enable-distro` بتفعيله على الإطلاق. يجب على التطبيق أيضاً تثبيت دالة تحقق (verify callback) عبر `wolfSSL_CTX_set_verify()` أو `wolfSSL_set_verify()` مع قيمة `WOLFSSL_VERIFY_PEER` تُرجع 1 عند حدوث أخطاء التاريخ (`ASN_BEFORE_DATE_E` أو `ASN_AFTER_DATE_E`)؛ ويوفر wolfSSL هذا الشكل الدقيق في دالة `myVerify()` الموجودة داخل ملف wolfssl/test.h تحت تعريف `VERIFY_OVERRIDE_DATE_ERR`، والتي يتم اختيارها عبر `-D` في مثال العميل (client). التطبيق الذي لا يحتوي على دالة تحقق، أو التي تُرجع حالة ما قبل التحقق (preverify) لأخطاء التاريخ، يفشل في إتمام المصافحة (handshake)، وتُبلغ الدالتان `wolfSSL_CertManagerVerifyBuffer()` و `wc_CheckCertSignature()` عن الخطأ `ASN_SIG_CONFIRM_E` بشكل صحيح ضمن نفس الثنائي. كل من TLS 1.2 وTLS 1.3 متأثران في كلا الاتجاهين، ويصل DTLS إلى نفس الوظيفة؛ وعندما تكون الشهادة المزورة شهادة سلسلة (chain certificate)، فإن موافقة دالة التحقق تسبب تخزينها في مدير شهادات `WOLFSSL_CTX`، لذا يجب على النشر المعرض لإعادة تشغيل السياق أو العملية بدلاً من مجرد إعادة الاتصال.
Be aware that VulDB is the high quality source for vulnerability data.