Skip to main content
Views 3

C&C 제너럴즈 RCE 웜 ‘일반 그라보이드’ 총정리: 왜 위험했나

Summary

C&C 제너럴즈 RCE 웜 ‘일반 그라보이드’ 총정리: 왜 위험했나

‘일반 그라보이드’는 고전 RTS 게임인 Command & Conquer: Generals와 확장팩 Zero Hour 멀티플레이 환경에서, 다른 플레이어 PC까지 원격 코드 실행(RCE)을 일으키며 퍼질 수 있었던 웜(자기복제형 악성코드) 사건을 가리킵니다. 2025년 EA가 소스 코드를 공개한 뒤 네트워크 구조를 분석하는 과정에서 치명적인 취약점들이 연달아 드러났고, 실제로 “게임 한 판 하다 PC가 감염될 수 있는” 시나리오가 성립했습니다1. 이 글에서는 어떤 구조가 문제였는지, 취약점이 어떻게 연결돼 웜이 됐는지, 그리고 지금 사용자 입장에서 무엇을 해야 하는지까지 쉽게 정리해봅니다.

C&C 제너럴즈 멀티플레이 네트워크 구조: P2P가 만든 공격면

제너럴즈/제로아워의 멀티플레이는 전형적인 “서버가 모든 걸 중계”하는 형태라기보다, 참가자끼리 직접 데이터를 주고받는 P2P 통신 성격이 강합니다. 로비와 게임 트래픽이 각각 특정 포트(로비 8086, 게임 8088)를 중심으로 오가면서, 한 명이 보내는 데이터가 다른 참여자들에게 곧바로 전달될 여지가 생깁니다1.

여기서 포인트는 “빠르게, 가볍게” 설계된 오래된 프로토콜이 현대 보안 기준으로는 취약할 수 있다는 점입니다. 패킷은 XOR 기반의 가벼운 난독화와 엔디안 변환, CRC32 같은 무결성 체크, 타입 태그 등으로 구성돼 있었는데1, 이런 장치들은 ‘오작동 방지’에는 도움이 돼도 ‘악의적 입력 차단’까지 보장해주진 않습니다. 결국 문제는 암호화가 약하냐 강하냐보다, 신뢰할 수 없는 입력을 어디까지 검증하느냐였습니다.

RCE를 연 취약점 3종 세트: 파일명·업로드·메모리 오염

이번 이슈가 무서웠던 이유는 “사소해 보이는 버그”가 아니라, 원격에서 프로그램 흐름을 빼앗을 수 있는 치명점이 여러 개였기 때문입니다1.

첫째, 파일명 스택 오버플로우가 있었습니다. 요지는 단순합니다. 네트워크로 받은 “파일명”을 복사하는데, 길이 제한 없이 NULL(문자열 끝) 나올 때까지 계속 복사해버리면 버퍼가 넘칩니다. 버퍼가 넘치면 주변 메모리가 덮이고, 조건이 맞으면 공격자가 의도한 코드 실행(RCE)까지 이어질 수 있습니다1.

둘째, 무작위 파일 업로드 문제입니다. 상대가 보내는 파일을 받을 때 확장자나 경로 제한이 허술하면, 게임 관련 파일만 오가야 할 자리에 DLL 같은 실행성 파일이 끼어들 수 있습니다. 그러면 “지금 당장 실행”이 아니더라도, 다음 게임 실행 시 로딩 과정에서 악성 코드가 실행되는 발화점이 될 수 있습니다1.

셋째, Out-of-bounds 쓰기(OOB write)입니다. 패킷을 쪼개서 조립하는 로직에서 오프셋과 길이를 제대로 검증하지 않으면, 정상 범위를 벗어난 위치에 데이터를 써버릴 수 있습니다. 메모리의 임의 위치를 덮어쓸 수 있다는 건 곧 프로그램 제어권 탈취로 이어질 가능성이 큽니다1.

이 세 가지는 각각도 위험하지만, 함께 있을 때 공격자는 “침투 → 고정(지속성) → 확산”을 게임 안에서 자동화할 수 있게 됩니다.

‘게임 한 판’이 감염 경로가 되는 방식: 웜의 확산 시나리오

일반적인 악성코드는 이메일 첨부파일, 크랙 다운로드 같은 “사용자의 클릭”을 노립니다. 하지만 이 케이스의 핵심은 “게임 참가 자체가 접촉면”이라는 데 있습니다. P2P 구조에서는 감염자가 방에 들어오면, 같은 게임 인스턴스에 있는 다른 플레이어에게도 공격 패킷을 던질 기회가 생깁니다1.

웜은 감염된 PC에 DLL을 드롭하고 실행한 뒤, 게임이 통신하는 방식(패킷 처리)을 역이용해 다음 타깃에게도 자동 전파되도록 설계될 수 있었습니다1. 즉, 한 명이 감염되면 ‘같이 게임한 사람들’이 연쇄적으로 위험해지는 그림입니다. “친구랑 LAN 한 판”도 안전지대가 아닐 수 있는 이유가 여기 있습니다.

웜이 할 수 있었던 일: 원격 명령과 ‘매직 패킷’ 장난감

보고된 기능을 보면, 단순히 게임을 망가뜨리는 트롤링 수준을 넘어섭니다. 핵심은 두 갈래입니다1.

하나는 원격 명령 실행입니다. 운영체제 명령(CMD 등)을 실행하거나, 추가 페이로드(예: 스크립트 엔진 형태)를 주입하는 식으로 PC 자체를 조종할 여지가 생깁니다. 게임 보안 이슈처럼 보이지만, 실질은 시스템 보안 사고에 가깝습니다.

다른 하나는 게임 엔진 훅킹과 매직 패킷 처리입니다. 감염된 인스턴스가 특정 ‘신호’(특정 패킷)를 받으면, 게임 안에서 지정된 동작을 실행하도록 만들 수 있습니다. 예를 들어 화면에 텍스트를 뿌리거나, 특정 행동을 강제하는 식입니다1. 겉으로는 장난처럼 보여도, 이런 훅킹은 “내 PC에서 돌아가는 게임 프로세스가 이미 점령당했다”는 증거이기도 합니다.

EA 공식 대응이 어려웠던 이유와 커뮤니티 패치의 의미

이 이슈에서 씁쓸한 지점은, “큰 회사가 바로 고쳐주겠지”가 통하지 않았다는 겁니다. EA는 공식 지원 종료, 커뮤니티 서버 사용 등의 현실적인 이유로 CVE 할당 같은 공식 대응 흐름이 적극적으로 이어지지 않았고1, 대신 커뮤니티 개발진과 협력해 패치가 진행되는 형태로 굴러갔습니다.

타임라인도 흥미롭습니다. 2025년 8월에 취약점이 공유되고 대응이 시작됐고, 2025년 12월에는 커뮤니티 패치가 공개적으로 진행되었습니다1. 패치 범위는 파일명 오버플로우 완화, 패킷 처리 중 메모리 오염 방지, 파일 경로/확장자 검증 강화 등 “웜이 발붙일 자리”를 줄이는 방향이었습니다1.

여기서 얻을 교훈은 단순합니다. 레거시 게임의 생명 연장은 종종 커뮤니티가 담당하지만, 보안까지 자동으로 따라오진 않는다는 것. 그래서 커뮤니티 패치는 ‘편의 기능’이 아니라 경우에 따라 ‘생존 장비’가 됩니다.

시사점 내용 (핵심 포인트 정리 + 개인적인 생각 또는 실용적 조언)...

레거시 게임의 멀티플레이는 추억이지만, 네트워크 코드는 추억의 방식으로만 움직이지 않습니다. P2P 구조, 입력 검증 부족, 파일 전송 설계가 겹치면 “같이 플레이하는 것” 자체가 공격 경로가 됩니다1.

지금 할 수 있는 현실적인 선택지는 간단합니다. 커뮤니티 포크나 최신 커뮤니티 패치를 우선 적용하고, 출처가 불분명한 서버에서의 인터넷 멀티플레이는 최소화하는 편이 안전합니다. 특히 오래된 게임일수록 “잘 된다”보다 “안전하게 된다”가 먼저입니다.

참고

1일반 그라보이드: 웜과 Command and Conquer에서의 원격 코드 실행

C&C 제너럴즈 RCE 웜 ‘일반 그라보이드’ 총정리: 왜 위험했나

이 노트는 요약·비평·학습 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.