Buffer superfluo en Toxcore ekspluatita sendante UDP-pakon

Toxcore, la referenca efektivigo de la Tox P2P-mesaĝa protokolo, havas vundeblecon (CVE-2021-44847), kiu eble povus ekigi kodan ekzekuton dum prilaborado de speciale kreita UDP-pako. Ĉiuj uzantoj de Toxcore-bazitaj aplikoj kiuj ne havas UDP-transporton malfunkciigita estas trafitaj de la vundebleco. Por ataki, sufiĉas sendi UDP-pakaĵon sciantan la IP-adreson, retan havenon kaj publikan DHT-ŝlosilon de la viktimo (ĉi tiu informo estas publike havebla en DHT, t.e. la atako povus esti farita sur iu ajn uzanto aŭ DHT-nodo).

La problemo ĉeestis en toxcore-eldonoj 0.1.9 ĝis 0.2.12 kaj estis riparita en versio 0.2.13. Inter klientaj aplikoj, nur la projekto qTox ĝis nun publikigis ĝisdatigon, kiu forigas la vundeblecon. Kiel sekureca solvo, vi povas malŝalti UDP konservante TCP-subtenon.

La vundebleco estas kaŭzita de bufra superfluo en la funkcio handle_request(), kiu okazas pro malĝusta kalkulo de la datumgrandeco en retpako. Specife, la longeco de la ĉifritaj datumoj estis determinita en la makroo CRYPTO_SIZE, difinita kiel "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", kiu estis poste uzata en la subtraho operacio "longo - CRYPTO_SIZE". Pro la foresto de krampoj en la makroo, anstataŭ subtrahi la sumon de ĉiuj valoroj, ĝi subtrahis 1 kaj aldonis la ceterajn partojn. Ekzemple, anstataŭ "longo - (1 + 32 * 2 + 24)", la bufrograndeco estis kalkulita kiel "longo - 1 + 32 * 2 + 24", kio rezultigis anstataŭigon de datumoj sur la stako preter la bufrolimo.

fonto: opennet.ru

Aldoni komenton