Toxcore буферінің толып кетуі UDP пакетін жіберу арқылы пайдаланылды

Toxcore, Tox P2P хабар алмасу протоколының анықтамалық орындалуында (CVE-2021-44847) осалдық бар, ол арнайы жасалған UDP пакетін өңдеу кезінде кодты орындауды іске қосуы мүмкін. UDP тасымалдауы өшірілмеген Toxcore негізіндегі қолданбалардың барлық пайдаланушыларына осалдық әсер етеді. Шабуыл жасау үшін жәбірленушінің IP мекенжайын, желілік портын және жалпы DHT кілтін білетін UDP пакетін жіберу жеткілікті (бұл ақпарат DHT-те жалпыға қолжетімді, яғни шабуыл кез келген пайдаланушыға немесе DHT түйініне жасалуы мүмкін).

Мәселе 0.1.9-0.2.12 toxcore шығарылымдарында болды және 0.2.13 нұсқасында түзетілді. Клиенттік қосымшалардың ішінде тек qTox жобасы ғана осалдықты жойатын жаңартуды шығарды. Қауіпсіздікті шешу ретінде TCP қолдауын сақтай отырып, UDP өшіруге болады.

Осалдық желі пакетіндегі деректер өлшемін дұрыс есептемеу нәтижесінде пайда болатын handle_request() функциясындағы буфердің толып кетуінен туындайды. Атап айтқанда, шифрланған деректердің ұзындығы "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE" ретінде анықталған CRYPTO_SIZE макросында анықталды, ол кейіннен "ұзындық - CRYPTO_SIZE" алу операциясында қолданылды. Макроста жақшаның болмауына байланысты барлық мәндердің қосындысын алып тастаудың орнына 1-ді алып тастап, қалған бөліктерді қосты. Мысалы, "ұзындығы - (1 + 32 * 2 + 24)" орнына буфер өлшемі "ұзындық - 1 + 32 * 2 + 24" ретінде есептелді, бұл буфер шекарасынан тыс стекке деректерді қайта жазуға әкелді.

Ақпарат көзі: opennet.ru

пікір қалдыру