A Toxcore, a referencia P2P üzenetküldő protokoll implementációjában felfedeztek egy sebezhetőséget (CVE-2021-44847), amely potenciálisan lehetővé teszi kódvégrehajtás kezdeményezését, amikor egy speciálisan formázott UDP csomagot dolgoznak fel. A sebezhetőségnek minden Toxcore alapú alkalmazás felhasználója ki van téve, ahol az UDP szállítás nincs letiltva. A támadáshoz elegendő egy UDP csomagot küldeni, ha ismert az áldozat IP-cím, a hálózati port és a nyitott DHT-kulcs (ezek az adatok nyilvánosan elérhetők a DHT-n, tehát a támadás bármely felhasználó vagy DHT csomópont ellen végrehajtható).
A probléma a toxcore 0.1.9 és 0.2.12 közötti verzióiban jelentkezett, és a 0.2.13-as verzióban orvosolták. Az ügyfélalkalmazások közül a sebezhetőség javításával eddig csak a qTox projekt adott ki frissítést. Az UDP használatának letiltása, a TCP támogatásának fenntartása alternatív védelmi megoldás lehet.
A sebezhetőség a handle_request() függvényben fellépő puffer túlcsordulásából ered, ami a hálózati csomag adatmennyiségének helytelen kiszámításából fakad. Különösen a titkosított adatok hossza a CRYPTO_SIZE makróban lett meghatározva, amely «1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE» értékkel rendelkezik, és ezt később a «length — CRYPTO_SIZE» kivonási műveletben használták. Mivel a makróban hiányoztak a zárójelek, ahelyett, hogy az összes érték kivonását hajtották volna végre, csak 1-et vontak ki, az egyéb részek hozzáadásával. Például ahelyett, hogy «length — (1 + 32 * 2 + 24)» lett volna, a puffer méretét úgy számolták, hogy «length — 1 + 32 * 2 + 24», ami a puffer határain túl található adatok felülíródásához vezetett.
Forrás: opennet.ru
