2024년 전 세계 게임 산업은 4,550억 달러라는 천문학적인 매출을 기록했으며, 플레이어 수는 무려 12억 명에 육박합니다. 이제 온라인 가상 세계는 단순한 오락을 넘어 이스포츠(E-Sports), 디지털 트윈, 그리고 메타버스로 확장되는 현대 IT 인프라의 핵심이 되었습니다.
하지만 이 거대한 가상 세계에서 평화롭게 승리를 향해 가던 중, 갑자기 '연결 끊김' 메시지와 함께 로비로 튕겨 나가는 경험을 해본 적이 있으신가요? 우리는 흔히 이를 '운 나쁜 네트워크 오류'로 치부하곤 합니다. 하지만 최근 연구에 따르면, 이는 단순한 오류가 아니라 공격자가 정밀하게 조준해 쏜 단 한 개의 패킷에 의한 의도적인 저격일 수 있습니다.
전 세계에서 가장 널리 쓰이는 게임 엔진중 하나인 언리얼 엔진(Unreal Engine, 이하 UE) 4 및 5 버전에서 충격적인 설계 결함이 발견되었습니다. 복잡한 해킹 도구는커녕, 특수한 구조를 가진 단 하나의 패킷만으로 사용자를 가상 세계에서 영구적으로 퇴장시킬 수 있다는 사실입니다.
"We can disconnect any user from an ongoing virtual session with a single packet." (우리는 단 한 개의 패킷만으로 진행 중인 가상 세션에서 어떤 사용자든 연결을 끊을 수 있다.)
이 공격의 무서운 점은 공격자가 자신을 노출할 필요가 전혀 없다는 것입니다. 대규모 트래픽을 유발하는 DDoS와 달리, 공격자는 피해자의 IP 주소와 포트 번호만 알면 가상 세계에서 그를 '삭제'하고 승리를 훔칠 수 있습니다. 이는 공정성이 생명인 이스포츠와 메타버스 경제 시스템에 치명적인 위협이 됩니다.
이 취약점은 코딩 실수가 아닌, 엔진의 의도적인 설계 선택(Conscious design choices)에서 비롯되었습니다. UE는 네트워크 패킷을 처리할 때 UNetConnection::ReceivedRawPacket 함수를 진입점으로 삼아 데이터의 유효성을 검사하는 '무결성 검사(Sanity checks)'를 수행합니다.
이 과정에서 데이터가 엔진이 정의한 프로토콜과 일치하지 않으면, UE는 즉시 UNetConnection::Close 함수를 호출하여 연결을 끊어버립니다. 원래는 비정상적인 데이터를 보내는 악의적인 클라이언트를 서버가 차단하기 위한 보호 기능이었지만, 이것이 역설적으로 공격의 방해쇠가 된 것입니다.
공격의 효율성은 공포스러운 수준입니다. 연구 데이터에 따르면, 레이어 1 기준 52바이트의 패킷에 단 2바이트의 페이로드만 담아도 타겟을 무너뜨릴 수 있습니다.
특히 플레이스테이션 네트워크(PSN)와 같은 환경에서는 음성 채팅용 P2P 채널을 통해 타겟의 IP 주소가 쉽게 노출될 수 있어, 이 공격은 이론을 넘어 현실적인 위협으로 다가와 있습니다.
흔히 AES-GCM 같은 강력한 암호화 모듈을 쓰면 안전할 것이라 믿지만, UE의 설계 구조상 이는 방패가 되지 못합니다.
첫째, UE는 패킷의 전체가 아닌 헤더(비트 0-10) 이후의 데이터만 암호화합니다. 공격자가 암호화되지 않은 헤더 영역만 조작해도 무결성 검사는 즉시 실패합니다. 둘째, 더 심각한 것은 '복호화 패러독스'입니다. 설령 전체를 암호화하더라도, 암호화된 데이터에 단 1비트의 오류만 발생하면 복호화 과정에서 에러가 발생하고, 엔진은 이를 '비정상적인 침입 시도'로 판단해 곧바로 Close 함수를 트리거합니다. 암호화가 오히려 공격자가 당기기 쉬운 '예민한 방아쇠' 역할을 하게 되는 것입니다.
연구팀은 에픽게임즈(Epic Games)를 포함한 주요 개발사에 이 사실을 제보했습니다. 그러나 돌아온 답변은 "단순 참고 사항(Informative)"이라는 냉담한 평가였습니다. 인터넷상에서 IP 스푸핑은 현실적으로 어렵다는 것이 그들의 논리였습니다.
하지만 이는 현대 인터넷 아키텍처의 결함을 간과한 치명적인 보안 불감증입니다. 데이터에 따르면 전 세계 자율 시스템(AS)의 68.9%가 소스 주소 검증(SAV)을 시행하지 않고 있습니다. 즉, 공격자는 SAV가 작동하지 않는 AS의 서버를 단돈 몇 달러에 임대하기만 하면 전 세계 어디로든 위조된 패킷을 쏠 수 있는 '합법적인 저격 포인트'를 얻게 됩니다. 업계의 낙관적인 판단이 무색해지는 대목입니다.
게임 엔진은 이제 단순한 놀이터를 넘어 디지털 트윈, 가상 인프라의 핵심 엔진으로 자리 잡았습니다. 이러한 환경에서 단 하나의 패킷으로 시스템 전체의 신뢰가 무너질 수 있다는 점은 시급히 해결해야 할 과제입니다.
이번 취약점은 포트나이트, 배틀그라운드, 발로란트와 같은 거대 IP들이 공유하는 '단일 실패 지점(Single Point of Failure)'을 여실히 보여줍니다. 엔진 수준에서 메시지 인증 코드(MAC)를 도입하고, 헤더를 포함한 전체 패킷 암호화를 통해 설계적 결함을 수정해야 합니다.
우리가 공들여 구축하고 있는 미래의 가상 세계는, 과연 단 하나의 패킷으로부터 안전하다고 확신할 수 있습니까? 기술적 화려함보다 중요한 것은, 그 세계를 지탱하는 보이지 않는 보안의 토대입니다.

---
출처: Hugo Bertin, Ilies Benhabbour, Marc Dacier, Yérom-David Bromberg. Disconnecting Users from Virtual Worlds with a Single Packet: an Unreal Untold Story. iMETA 2025 - 3rd International Conference on Intelligent Metaverse Technologies & Applications, Oct 2025, Dubrovnik, Croatia. pp.67-74, 10.1109/iMETA66706.2025.11306743. hal-05202617
편집: NotebookLM