I Toxcore, den referensimplementation av P2P-meddelandprotokollet Tox, har en sÄrbarhet identifierats (CVE-2021-44847) som potentiellt kan leda till att kod exekveras vid hantering av ett sÀrskilt formaterat UDP-paket. Alla anvÀndare av applikationer baserade pÄ Toxcore som har UDP-trafik aktiverad Àr sÄrbara. För att utföra en attack rÀcker det med att skicka ett UDP-paket, med kÀnnedom om IP-adressen, nÀtverksporten och den öppna DHT-nyckeln för offret (denna information Àr offentligt tillgÀnglig i DHT, vilket innebÀr att attacken kan riktas mot vilken anvÀndare eller DHT-nod som helst).
Problemet uppstod i toxcore-versioner frÄn 0.1.9 till 0.2.12 och har ÄtgÀrdats i version 0.2.13. Av klientapplikationerna har endast projektet qTox slÀppt en uppdatering som ÄtgÀrdar sÄrbarheten. Som en tillfÀllig lösning kan man stÀnga av UDP-anvÀndning och istÀllet stödja TCP.
SĂ„rbarheten orsakas av en buffertöverflödning i funktionen handle_request(), som uppstĂ„r pĂ„ grund av felaktig berĂ€kning av datastorleken i nĂ€tverkspaketet. Specifikt bestĂ€mdes lĂ€ngden pĂ„ de krypterade data i makrot CRYPTO_SIZE, som definierades som "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", vilket senare anvĂ€ndes i subtraktionsoperationen "length â CRYPTO_SIZE". PĂ„ grund av avsaknaden av parenteser i makrot utfördes istĂ€llet för subtraktionen av summan av alla vĂ€rden en subtraktion av 1 och en addition av de övriga delarna. Till exempel, istĂ€llet för "length â (1 + 32 * 2 + 24)" berĂ€knades buffertens storlek som "length â 1 + 32 * 2 + 24", vilket ledde till att data pĂ„ stacken överskrev utrymmet utanför bufferten.
KĂ€lla: opennet.ru
