Netikėtas „OpenSSL“ pažeidžiamumas, pavadintas „HollowByte“, leidžia neautentifikuotiems užpuolikams sukelti paslaugos atsisakymo (DoS) sąlygas net su 11 baitų kenkėjiška apkrova. „OpenSSL“ komanda tyliai ištaisė šią spragą ir perkėlė pataisą į senesnius leidimus, todėl organizacijos turėtų teikti pirmenybę atnaujinimui į saugią versiją.
„HollowByte“ pažeidžiamumo detalės
Šios savaitės pradžioje „Okta’s Red Team“ išleido patarimą, kuriame išsamiai aprašomas „HollowByte DoS“ pažeidžiamumo veikimo mechanizmas. Tyrėjai paaiškino, kad TLS susiejimo proceso metu kiekvienas pranešimas turi 4 baitų antraštę, nurodančią gaunamo pranešimo dydį. Tačiau pažeidžiamos „OpenSSL“ versijos skiria nurodytą atminties vietą, nepatikrinus, ar tai atitinka faktinį gaunamų duomenų dydį.
Kiekvienas TLS susiejimo pranešimas prasideda 4 baitų antrašte, kurioje trijų baitų ilgio laukas nurodo duomenų dydį. Nepatikrinus naudingosios apkrovos dydžio, serveris pasitiki antraštės informacija ir paskirsto atitinkamą atminties kiekį. Dėl to serverio gija blokuojasi, laukdama duomenų, kurie niekada nebus gauti. Tai leidžia neautentifikuotam užpuolikui inicijuoti TLS ryšį ir siųsti 11 baitų kenkėjišką įvestį, kurios antraštė nurodo reikšmingai didesnį pranešimo tekstą.
Pakartodamas šį procesą per kelis ryšius, užpuolikas verčia serverį skirti didelius atminties išteklius, nors iš tikrųjų perduodami duomenys yra maži. Tyrėjai pastebi, kad nors „OpenSSL“ atlaisvina atmintį nutraukus ryšį, GNU C biblioteka (glibc) veikia kitaip – mažus ir vidutinius atminties paskirstymus ji išsaugo pakartotinam naudojimui. Tai reiškia, kad paleidus bangą įvairaus dydžio ryšių, užpuolikas gali sutrikdyti atminties skaidyklės veiklą ir sukelti nuolatinį serverio nuolatinio rinkinio (RSS) didėjimą. Net po atakos pasibaigimo, serveris lieka su „išpūsta“ atmintimi, o vienintelis būdas visiškai atkurti atmintį yra paleisti procesą iš naujo.
Poveikis ir pataisymai
„OpenSSL“ biblioteka yra plačiai naudojama įvairiuose populiariuose programinės įrangos projektuose, įskaitant NGINX ir Apache žiniatinklio serverius, programavimo kalbų aplinkas (pvz., Node.js, Python, Ruby, PHP) ir duomenų bazes (MySQL, PostgreSQL). Ji taip pat yra įdiegta daugelyje „Linux“ platinamųjų versijų, atliekant TLS šifravimo ir sertifikatų valdymo funkcijas. „Okta“ NGINX bandymai parodė, kad mažos talpos aplinkose „HollowByte“ gali lengvai sukelti atminties išeikvojimą, o aukštesnės specifikacijos serveriuose gali prarasti iki 25% atminties net nepasiekus saugumo įspėjimo ribų.
Nors DoS pažeidžiamumai paprastai laikomi mažiau pavojingais nei tie, kurie leidžia vagis duomenis ar vykdyti koduotį, jie vis tiek gali sukelti reikšmingus veiklos sutrikimus ir pakenkti organizacijos reputacijai. „HollowByte“ DoS problema buvo ištaisyta „OpenSSL“ versijoje 4.0.1 ir perkelta į senesnes versijas: 3.6.3, 3.5.7, 3.4.6 ir 3.0.21. Pataisytos versijos dabar įkelia buferį tik gavus duomenis, nepaisydamos antraštės nurodyto dydžio. Nepaisant to, kad „Okta“ tai laiko „sugriežtintu pataisymu“, o ne kritiniu saugos pažeidžiamumu, bendrovė rekomenduoja nedelsiant atnaujinti „OpenSSL“ paketus.













