Toxcore дахь буфер халилтыг UDP пакет илгээснээр ашигласан

Tox P2P мессежийн протоколын лавлагаа хэрэглүүр болох Toxcore нь тусгайлан боловсруулсан UDP багцыг боловсруулах үед кодыг гүйцэтгэхэд хүргэж болзошгүй (CVE-2021-44847) сул талтай. UDP тээвэрлэлтийг идэвхгүй болгосон Toxcore-д суурилсан програмын бүх хэрэглэгчид эмзэг байдалд өртдөг. Довтолгоо хийхийн тулд хохирогчийн IP хаяг, сүлжээний порт, нийтийн DHT түлхүүрийг мэдэж байгаа UDP пакетийг илгээхэд хангалттай (энэ мэдээлэл нь DHT дээр олон нийтэд нээлттэй, өөрөөр хэлбэл халдлага нь ямар ч хэрэглэгч эсвэл DHT зангилаа дээр явагдах боломжтой).

Асуудал toxcore хувилбаруудын 0.1.9-аас 0.2.12-т гарсан бөгөөд 0.2.13 хувилбарт засварлагдсан. Үйлчлүүлэгчийн програмуудын дотроос зөвхөн qTox төсөл нь эмзэг байдлыг арилгасан шинэчлэлтийг одоогоор гаргасан байна. Аюулгүй байдлын шийдлийн хувьд та TCP дэмжлэгийг хадгалахын зэрэгцээ UDP-г идэвхгүй болгож болно.

Энэ эмзэг байдал нь сүлжээний багц дахь өгөгдлийн хэмжээг буруу тооцоолсны улмаас үүссэн handle_request() функцийн буфер хэт ихэссэнээс үүсдэг. Тодруулбал, шифрлэгдсэн өгөгдлийн уртыг "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE" гэж тодорхойлсон CRYPTO_SIZE макронд тодорхойлсон бөгөөд үүнийг дараа нь "урт - CRYPTO_SIZE" хасах үйлдэлд ашигласан. Макрод хаалт байхгүй тул бүх утгуудын нийлбэрийг хасахын оронд 1-ийг хасаад үлдсэн хэсгийг нэмсэн. Жишээлбэл, "урт - (1 + 32 * 2 + 24)"-ийн оронд буферийн хэмжээг "урт - 1 + 32 * 2 + 24" гэж тооцсон бөгөөд энэ нь буферийн хил хязгаараас давсан стек дээрх өгөгдлийг дарж бичихэд хүргэсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх