Pufferüberlauf in Toxcore durch Senden eines UDP-Pakets ausgenutzt

Toxcore, die Referenzimplementierung des Tox P2P-Messaging-Protokolls, weist eine Schwachstelle (CVE-2021-44847) auf, die möglicherweise die Codeausführung auslösen könnte, wenn ein speziell gestaltetes UDP-Paket verarbeitet wird. Von der Sicherheitslücke sind alle Benutzer von Toxcore-basierten Anwendungen betroffen, bei denen der UDP-Transport nicht deaktiviert ist. Für den Angriff reicht es aus, ein UDP-Paket zu senden, in dem die IP-Adresse, der Netzwerkport und der öffentliche DHT-Schlüssel des Opfers bekannt sind (diese Informationen sind in DHT öffentlich verfügbar, d. h. der Angriff könnte auf jeden Benutzer oder DHT-Knoten ausgeführt werden).

Das Problem trat in den Toxcore-Versionen 0.1.9 bis 0.2.12 auf und wurde in Version 0.2.13 behoben. Unter den Client-Anwendungen hat bisher nur das qTox-Projekt ein Update veröffentlicht, das die Schwachstelle beseitigt. Um die Sicherheit zu umgehen, können Sie UDP deaktivieren und gleichzeitig die TCP-Unterstützung beibehalten.

Die Schwachstelle wird durch einen Pufferüberlauf in der Funktion handle_request() verursacht, der aufgrund einer falschen Berechnung der Datengröße in einem Netzwerkpaket auftritt. Konkret wurde die Länge der verschlüsselten Daten im Makro CRYPTO_SIZE bestimmt, definiert als „1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE“, das anschließend in der Subtraktionsoperation „Länge – CRYPTO_SIZE“ verwendet wurde. Aufgrund des Fehlens von Klammern im Makro wurde nicht die Summe aller Werte subtrahiert, sondern 1 subtrahiert und die restlichen Teile addiert. Beispielsweise wurde die Puffergröße anstelle von „Länge – (1 + 32 * 2 + 24)“ als „Länge – 1 + 32 * 2 + 24“ berechnet, was dazu führte, dass Daten auf dem Stapel über die Puffergrenze hinaus überschrieben wurden.

Source: opennet.ru

Kommentar hinzufügen