OpenBSD IPv6 yığınında uzaqdan zəiflik

OpenBSD-də IPv6 ünvanının avtomatik konfiqurasiyası (IPv6 Vətəndaşlığı olmayan Ünvan Avtokonfiqurasiyası, RFC 4862) üçün cavabdeh olan slaacd fon prosesində xüsusi hazırlanmış IPv6 marşrutlaşdırıcısı reklamını (RA, Router Advertisement) qəbul edərkən buferin daşmasına səbəb olan zəiflik müəyyən edilmişdir. .

Əvvəlcə IPv6 ünvanının avtomatik konfiqurasiyası funksiyası kernel səviyyəsində həyata keçirildi, lakin OpenBSD 6.2-dən başlayaraq o, ayrıca imtiyazsız slaacd prosesinə köçürüldü. Bu proses RS (Router Solicitation) mesajlarının göndərilməsi və marşrutlaşdırıcı və şəbəkə bağlantısı parametrləri haqqında məlumatla RA (Router Advertisement) cavablarının təhlili üçün cavabdehdir.

Fevral ayında slaacd RDNSS (Rekursiv DNS Serverləri) siyahısında 7 server göstərildiyi halda onun qəzaya uğramasına səbəb olan səhvi düzəltdi. Bu nəzarət RA mesajlarında sahələri təhlil edərkən baş verən digər səhvlər üçün slaacd kodunu araşdırmağa çalışan müstəqil tədqiqatçıların diqqətini çəkdi. Təhlil göstərdi ki, kodda daha bir problem var ki, bu da DNS üçün domen adlarının siyahıları və host şablonlarının daxil olduğu DNSSL (DNS Axtarış Siyahısı) sahəsinin işlənməsi zamanı özünü göstərir.

DNSSL siyahısındakı hər bir ad null ayırıcıdan və sonrakı məlumatların ölçüsünü müəyyən edən bir baytlıq teqlərdən istifadə etməklə kodlanır. Zəiflik, siyahının təhlil kodunda ölçüsü olan sahənin işarələnmiş tam ədədli dəyişənə (“len = data[pos]”) kopyalanması ilə əlaqədardır. Müvafiq olaraq, əgər dəyər ən əhəmiyyətli bit dəsti olan sahədə göstərilibsə, bu dəyər şərti operatorda mənfi ədəd və icazə verilən maksimum ölçüsün yoxlanışı kimi qəbul ediləcək (“əgər (len > 63 || len + pos) + 1 > datalen) {“) işləməyəcək və bu, kopyalanan məlumatın ölçüsü bufer ölçüsünü aşan parametrlə memcpy-ə zəng etməyə səbəb olacaq.

OpenBSD IPv6 yığınında uzaqdan zəiflik
OpenBSD IPv6 yığınında uzaqdan zəiflik


Mənbə: opennet.ru

Добавить комментарий