Toxcore, referenceimplementeringen af Tox P2P-meddelelsesprotokollen, har en sårbarhed (CVE-2021-44847), der potentielt kan udløse kodeeksekvering ved behandling af en specielt udformet UDP-pakke. Alle brugere af Toxcore-baserede applikationer, der ikke har UDP-transport deaktiveret, er berørt af sårbarheden. For at angribe er det nok at sende en UDP-pakke, der kender offerets IP-adresse, netværksport og offentlige DHT-nøgle (denne information er offentligt tilgængelig i DHT, dvs. angrebet kan udføres på enhver bruger eller DHT-knude).
Problemet var til stede i toxcore-udgivelser 0.1.9 til 0.2.12 og blev rettet i version 0.2.13. Blandt klientapplikationer er det kun qTox-projektet, der indtil videre har udgivet en opdatering, der eliminerer sårbarheden. Som en sikkerhedsløsning kan du deaktivere UDP, mens du bevarer TCP-understøttelse.
Sårbarheden er forårsaget af et bufferoverløb i handle_request()-funktionen, som opstår på grund af forkert beregning af datastørrelsen i en netværkspakke. Specifikt blev længden af de krypterede data bestemt i makroen CRYPTO_SIZE, defineret som "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", som efterfølgende blev brugt i subtraktionsoperationen "længde - CRYPTO_SIZE". På grund af fraværet af parenteser i makroen, i stedet for at trække summen af alle værdier fra, trak den 1 og tilføjede de resterende dele. For eksempel, i stedet for "længde - (1 + 32 * 2 + 24)", blev bufferstørrelsen beregnet som "længde - 1 + 32 * 2 + 24", hvilket resulterede i overskrivning af data på stakken ud over buffergrænsen.
Kilde: opennet.ru