CVE-2022-36078
Təsvir
Binary, Borsh və digər formatlarda kodlaşdırma/dekodlaşdırma imkanları təmin edir. Bu zəiflik yaddaşın ayrılması ilə bağlıdır və yaddaşda (istənilən) həddindən artıq ölçülü dilimlərin (slices) ayrılması üçün istifadə edilə bilər ki, bu da mövcud yaddaşın tükənməsinə və ya bütün proqramın çökməsinə səbəb ola bilər. Etibarsız giriş mənbələrindən (məsələn, blokçeyn) gələn yoxlanılmamış (və ya yanlış tipli) məlumatları dilimlərə çevirmək üçün `github.com/gagliardetto/binary` kitabxanasından istifadə etdikdə, həddindən artıq ölçüdə yaddaş ayrılması mümkündür. Məlumatları dəyərlərdən ibarət dilimləri olan və ya onları ehtiva edən strukturuna çevirmək üçün `dec.Decode(&val)` metodu istifadə edildikdə, dilimin uzunluğu əvvəllər heç bir ölçü yoxlaması aparılmadan birbaşa məlumatın özündən oxunurdu və daha sonra dilim ayrılırdı. Bu, daşmaya (overflow) və həddindən artıq ölçü dəyəri ilə yaddaşın ayrılmasına səbəb ola bilərdi. İstifadəçilər versiyanı `v0.7.1` və ya daha yüksəyinə yüksəltməlidirlər. Alternativ həll yolu kimi məlumatları çevirmək üçün `dec.Decode(&val)` funksiyasına güvənməmək, bunun əvəzinə hər hansı dilimin uzunluğunu oxuyan və yoxlayan xüsusi `UnmarshalWithDecoder()` metodundan istifadə etmək tövsiyə olunur.
Necə düzəltmək olar
- binary_project binary0.7.1 və ya daha yeni versiya
- github.com/gagliardetto/binary0.7.1 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| binary_project binary | v < 0.7.1 | 0.7.1 |
| github.com/gagliardetto/binaryGo | v < 0.7.1 | 0.7.1 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.