Bufferoorloop in Toxcore word uitgebuit deur 'n UDP-pakkie te stuur

Toxcore, die verwysingsimplementering van die Tox P2P-boodskapprotokol, het 'n kwesbaarheid (CVE-2021-44847) wat moontlik kode-uitvoering kan veroorsaak wanneer 'n spesiaal vervaardigde UDP-pakkie verwerk word. Alle gebruikers van Toxcore-gebaseerde toepassings wat nie UDP-vervoer gedeaktiveer het nie, word deur die kwesbaarheid geraak. Om aan te val, is dit genoeg om 'n UDP-pakkie te stuur met kennis van die IP-adres, netwerkpoort en publieke DHT-sleutel van die slagoffer (hierdie inligting is publiek beskikbaar in DHT, dit wil sê die aanval kan op enige gebruiker of DHT-nodus uitgevoer word).

Die probleem was teenwoordig in tokscore-vrystellings 0.1.9 tot 0.2.12 en is reggestel in weergawe 0.2.13. Onder kliënttoepassings het slegs die qTox-projek tot dusver 'n opdatering vrygestel wat die kwesbaarheid uitskakel. As 'n veiligheidsoplossing kan u UDP deaktiveer terwyl u TCP-ondersteuning behou.

Die kwesbaarheid word veroorsaak deur 'n buffer oorloop in die handle_request() funksie, wat plaasvind as gevolg van verkeerde berekening van die data grootte in 'n netwerk pakkie. Spesifiek, die lengte van die geënkripteerde data is bepaal in die makro CRYPTO_SIZE, gedefinieer as "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", wat daarna gebruik is in die aftrekbewerking "lengte - CRYPTO_SIZE". As gevolg van die afwesigheid van hakies in die makro, in plaas daarvan om die som van alle waardes af te trek, het dit 1 afgetrek en die oorblywende dele bygevoeg. Byvoorbeeld, in plaas van "lengte - (1 + 32 * 2 + 24)", is die buffergrootte bereken as "lengte - 1 + 32 * 2 + 24", wat gelei het tot die oorskryf van data op die stapel buite die buffergrens.

Bron: opennet.ru

Voeg 'n opmerking