Hoʻohana ʻia ʻo Buffer overflow ma Toxcore ma ka hoʻouna ʻana i kahi ʻeke UDP

ʻO Toxcore, ka hoʻokō kuhikuhi o ka Tox P2P messaging protocol, he nāwaliwali (CVE-2021-44847) hiki ke hoʻomaka i ka hoʻokō code i ka wā e hana ai i kahi ʻeke UDP i hana kūikawā ʻia. ʻO nā mea hoʻohana a pau o nā noi Toxcore i hoʻopaʻa ʻole ʻia ka lawe ʻana i ka UDP e pili ana i ka nāwaliwali. No ka hoʻouka ʻana, ua lawa ka hoʻouna ʻana i kahi ʻeke UDP me ka ʻike i ka IP address, ke awa pūnaewele a me ke kī DHT lehulehu o ka mea i pepehi ʻia (ua loaʻa kēia ʻike i ka lehulehu ma DHT, ʻo ia hoʻi.

Aia ka pilikia ma nā hoʻokuʻu toxcore 0.1.9 a hiki i ka 0.2.12 a ua hoʻopaʻa ʻia ma ka mana 0.2.13. Ma waena o nā noi mea kūʻai aku, ʻo ka papahana qTox wale nō i hoʻokuʻu i kahi mea hou e hoʻopau ai i ka nāwaliwali. Ma ke ʻano he hana palekana, hiki iā ʻoe ke hoʻopau i ka UDP i ka wā e mālama ana i ke kākoʻo TCP.

Hoʻokumu ʻia ka nāwaliwali ma muli o ke kahe ʻana o ka buffer ma ka hana handle_request(), i hana ʻia ma muli o ka helu hewa ʻana o ka nui o ka ʻikepili i loko o kahi ʻeke pūnaewele. Ma keʻano kūikawā, ua hoʻoholo ʻia ka lōʻihi o ka ʻikepili i hoʻopili ʻia ma ka macro CRYPTO_SIZE, i wehewehe ʻia ʻo "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", i hoʻohana ʻia ma ka hana unuhi "lōʻihi - CRYPTO_SIZE". Ma muli o ka nele o nā pale ma ka macro, ma kahi o ka unuhi ʻana i ka huina o nā waiwai a pau, ua unuhi ʻo ia i ka 1 a hoʻohui i nā ʻāpana i koe. No ka laʻana, ma kahi o "lōʻihi - (1 + 32 * 2 + 24)", ua helu ʻia ka nui buffer ma ke ʻano he "lōʻihi - 1 + 32 * 2 + 24", i hopena i ke kākau ʻana i ka ʻikepili ma ka waihona ma waho o ka palena pale.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka