Rust və Go dillərinin şəbəkə kitabxanalarında IP ünvan yoxlamasından yan keçməyə imkan verən zəiflik

Rust və Go dillərinin standart kitabxanalarında ünvanların təhlili funksiyalarında səkkizlik rəqəmlərlə İP ünvanlarının düzgün işlənməməsi ilə bağlı boşluqlar müəyyən edilib. Zəifliklər tətbiqlərdə etibarlı ünvanların yoxlanılmasından yan keçməyə, məsələn, SSRF (Server tərəfi sorğu saxtakarlığı) hücumlarını həyata keçirərkən geri dönmə interfeys ünvanlarına (127.xxx) və ya intranet alt şəbəkələrinə girişi təşkil etməyə imkan verir. Zəifliklər əvvəllər şəbəkə maskası (JavaScript, CVE-2021-28918, CVE-2021-29418), private-ip (JavaScript, CVE-2020-28360), ipadres (Python, CVE-) kitabxanalarında müəyyən edilmiş problemlər dövrünü davam etdirir. 2021-29921 ), Data::Validate::IP (Perl, CVE-2021-29662) və Net::Netmask (Perl, CVE-2021-29424).

Spesifikasiyaya görə, sıfırla başlayan IP ünvanı sətirinin dəyərləri səkkizlik ədədlər kimi şərh edilməlidir, lakin bir çox kitabxana bunu nəzərə almır və sadəcə olaraq sıfırı ataraq, dəyəri onluq ədəd kimi qəbul edir. Məsələn, səkkizlikdə 0177 rəqəmi onluqda 127-yə bərabərdir. Təcavüzkar onluq qeyddə “0177.0.0.1”-ə uyğun gələn “127.0.0.1” dəyərini göstərməklə resurs tələb edə bilər. Problemli kitabxanadan istifadə edilərsə, proqram 0177.0.0.1 ünvanının 127.0.0.1/8 alt şəbəkəsində olduğunu aşkar etməyəcək, lakin əslində sorğu göndərərkən o, “0177.0.0.1” ünvanına daxil ola bilər. şəbəkə funksiyaları 127.0.0.1 kimi işləyəcək. Bənzər şəkildə, siz "012.0.0.1" ("10.0.0.1"-ə bərabər) kimi dəyərləri göstərərək intranet ünvanlarına giriş yoxlanışını aldada bilərsiniz.

Rust-da "std::net" standart kitabxanasına problem (CVE-2021-29922) təsir etdi. Bu kitabxananın IP ünvan analizatoru ünvandakı dəyərlərdən əvvəl sıfırı atdı, lakin yalnız üç rəqəmdən çox olmadıqda, məsələn, “0177.0.0.1” etibarsız dəyər və səhv nəticə kimi qəbul ediləcəkdir. 010.8.8.8 və 127.0.026.1-ə cavab olaraq geri qaytarılacaq. İstifadəçi tərəfindən müəyyən edilmiş ünvanları təhlil edərkən std::net::IpAddr istifadə edən proqramlar SSRF (Server tərəfi sorğu saxtakarlığı), RFI (Uzaqdan Fayl Daxiletmə) və LFI (Yerli Fayl Daxiletmə) hücumlarına potensial olaraq həssasdır. Boşluq Rust 1.53.0 filialında aradan qaldırıldı.

Rust və Go dillərinin şəbəkə kitabxanalarında IP ünvan yoxlamasından yan keçməyə imkan verən zəiflik

Go-da standart kitabxana "şəbəkə" təsirlənir (CVE-2021-29923). net.ParseCIDR daxili funksiyası onları emal etmək əvəzinə səkkizlik ədədlərdən əvvəl başdakı sıfırları ötür. Məsələn, təcavüzkar net.ParseCIDR(00000177.0.0.1/00000177.0.0.1) funksiyasında yoxlanılan zaman 24/177.0.0.1 deyil, 24/127.0.0.1 kimi təhlil ediləcək 24 dəyərini ötürə bilər. Problem Kubernetes platformasında da özünü göstərir. Zəiflik Go buraxılış 1.16.3 və beta 1.17-də aradan qaldırılıb.

Rust və Go dillərinin şəbəkə kitabxanalarında IP ünvan yoxlamasından yan keçməyə imkan verən zəiflik


Mənbə: opennet.ru

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