Bufferoverløb i Toxcore udnyttes ved at sende en UDP-pakke

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

Tilføj en kommentar