CVE-2026-102758 in NetX Duo
الملخص
بحسب VulDB • 29/09/2026
تقوم الدالة `_nx_secure_x509_asn1_tlv_block_parse()` بتحليل كتل ASN.1 TLV (الوسم-الطول-القيمة) من البيانات المشفرة بتنسيق DER. وهي المكون الأساسي المستخدم في جميع عمليات تحليل شهادات X.509 داخل NetX Secure، وبالتالي فهي تعمل على الشهادات المقدمة من نظير عن بُعد أثناء مصافحة TLS.
تقرأ الدالة وسمة ASN.1 ذات البايت الواحد من مخزن المتصل *قبل* التحقق مما إذا كان المخزن يحتوي على بايت واحد على الأقل. عندما يمرر المتصل طولًا متبقيًا يساوي صفرًا، فإن شرط الحماية يعيد بشكل صحيح القيمة `NX_SECURE_X509_ASN1_LENGTH_TOO_LONG`، لكن عملية القراءة قد حدثت بالفعل بعد تجاوز نهاية المخزن ببايت واحد.
الكود: nx_secure/src/nx_secure_x509_asn1_tlv_block_parse.c
```c UINT _nx_secure_x509_asn1_tlv_block_parse(const UCHAR *buffer, ULONG *buffer_length, USHORT *tlv_type, USHORT *tlv_tag_class, ULONG *tlv_length, const UCHAR **tlv_data, ULONG *header_length)
{
UINT current_index;
USHORT current_tag;
ULONG length;
ULONG length_bytes;
current_index = 0; current_tag = buffer[current_index]; /* <-- قراءة قبل فحص الحدود */
if (*buffer_length < 1) {
return(NX_SECURE_X509_ASN1_LENGTH_TOO_LONG); }
```
باقي أجزاء الدالة مرتبة بشكل صحيح. تم حماية مسار الطول متعدد البايتات بواسطة الشرط `length_bytes > 4 || length_bytes > *buffer_length` قبل حلقة القراءة، وتم التحقق من القيمة المفككة مقابل `length > *buffer_length`، وتتبع عملية قراءة الطول أحادية البايت الثانية شرط الحماية الخاص بها `*buffer_length < 1`. وتُعد قراءة الوسم العملية الوحيدة التي يتم فيها إجراء التحميل (load) قبل الفحص.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.