커널 내부의 잔디밭 전쟁.

수정: 8월 14일 오전 5시 30분 (ET): 사용자들은 Valorant를 제거해야 Battlefield 6 베타를 실행할 수 있다는 오류 메시지를 받고 있지만, 라이엇의 안티 치트 총괄인 필립 코스키나스(Philip Koskinas)는 BF6 클라이언트가 Valorant의 동시 실행만을 막을 뿐, 제거는 필요하지 않다고 밝혔습니다.
EA는 이번 주말(8월 14일~8월 17일)에 또 다른 무료 오픈 베타를 개최하며, 더욱 밀접한 근접 전투가 기대되는 새로운 "엠파이어 스테이트(Empire State)" 맵을 선보입니다. 또한 새로운 러시(Rush) 모드와 스쿼드 데스매치(Squad deathmatch) 모드도 플레이할 수 있으며, 물론 무료 보상도 획득할 수 있습니다. 이 모든 것이 기대되지만, 게임에는 작은 문제점, 즉 Valorant가 있습니다. 네, 바로 그 Valorant 말입니다. Battlefield 6를 플레이하려면 e스포츠 1인칭 슈팅 게임인 이 프로그램이 설치되어 있으면 안 됩니다. 만약 설치할 경우, Battlefield 6가 아예 실행되지 않습니다. 지난 주말 첫 오픈 베타 기간 동안, 사용자 AnAveragePlayer가 r/Battlefield 서브레딧에 다소 이례적인 오류 메시지를 게시했습니다. 메시지에는 Battlefield 6가 "보안 위반(security violation)"을 이유로 Valorant를 제거하라고 사용자에게 통지하고 있었습니다. 이 게시물은 거의 10,000개의 추천을 받으며, 두 안티 치트 프로그램이 충돌한 최초의 주요 사례로 파악되었습니다.
문제의 원인은 라이엇의 안티 치트 소프트웨어인 라이엇 뱅가드(Riot Vanguard)입니다. 뱅가드는 커널 레벨 안티 치트 프로그램으로, 이는 윈도우 운영체제와 동일한 권한으로 실행된다는 의미이며, 사용자 관리자 계정보다 더 깊은 시스템 영역까지 관여합니다. 이러한 수준에서 안티 치트 소프트웨어는 잠재적인 악용 행위가 발휘되기 전에 포착할 수 있습니다. 이는 사용자 공간(user space)에서 확인할 수 있는 것보다 훨씬 많은 시스템 영역을 모니터링하고 가로챌 수 있기 때문입니다. 다만, 다른 안티 치트 프로그램과 달리 뱅가드는 라이엇 게임 실행 시에만 작동하는 것이 아니라, 부팅 드라이버로 로드되어 PC의 거의 모든 시스템보다 먼저 구동됩니다. 라이엇은 이를 통해 치트 프로그램이 먼저 로드될 경우 커널에 후킹(hook)하여 자신을 완벽하게 은폐함으로써 안티 치트 소프트웨어가 탐지할 수 없게 되는 것을 막을 수 있다고 설명합니다. 뱅가드는 이 취약한 시간적 간극(window of opportunity)을 막기 위해 부팅 단계에서 작동할 수밖에 없으며, 실제로 그렇게 합니다. 현대의 해킹 프로그램은 게임의 메모리(memory)를 읽거나(때로는 쓰면서) 조작하며, 무작위로 보이는 숫자 문자열 같은 원시 값을 적의 위치와 같은 실행 가능한 정보로 변환합니다. 커널 레벨 안티 치트는 동일한 권한 수준에서 메모리 접근을 모니터링하여, 악용 행위가 플레이어에게 어떤 불공정한 이점도 제공하지 못하도록 원천적으로 차단합니다.
뱅가드가 더 깊이 개입하는 부분은 민감한 게임 데이터를 은폐하고 보호하는 방식입니다. 뱅가드는 게임 메모리 내부에 "보호 영역(guarded regions)"을 생성하는데, 이 영역에 매핑된 페이지들은 뱅가드가 명시적으로 승인한 스레드만이 접근할 수 있도록 합니다. 디버거와 치트를 포함한 다른 모든 것은 마치 해당 메모리가 존재하지 않는 것처럼 페이지 폴트(page fault)가 발생합니다. 이를 강제하기 위해 뱅가드는 운영 체제에 후킹(hooking)하여 CPU가 스레드를 전환할 때마다 검사하고, 누가 보호 영역을 볼 수 있을지 결정합니다. 이러한 최고 수준의 제어력 덕분에 뱅가드는 시장에서 가장 침입적(invasive)인 안티 치트 프로그램 중 하나라는 평판을 얻었습니다. 이는 기본적으로 OS의 저수준 디스패치 경로 및 메모리 관리 영역에 자신을 삽입함으로써 Windows의 기능을 모방하는 방식이며, 다른 상업용 드라이버와는 비교할 수 없는 수준입니다. 그리고 이 지점이 다른 게임들과 충돌하는 핵심 지점입니다. 커널 레벨 안티 치트들은 그 통제 영역을 쉽게 공유할 수 없습니다. 따라서 뱅가드가 활성화된 상태에서 Battlefield 6의 안티 치트가 작동하면, 두 프로그램은 동일한 저수준 후크(low-level hooks)를 놓고 경쟁하게 되며, 그 결과 둘 중 하나가 다른 하나를 완전히 차단하게 됩니다. 이는 단순히 EA의 책임이라기보다는 커널 내부에서의 '영토 분쟁(turf war)'인 셈입니다. 그 결과 안티 치트 환경이 너무 영역 구분이 심해져서 특정 게임들이 더 이상 원활하게 병행 구동될 수 없게 된 것입니다. 물론, Vanguard를 비활성화(재부팅 필요)한 후 게임을 시작할 수는 있지만, 오류 메시지에는 그러한 안내가 포함되어 있지 않습니다. 따라서 이번 주말에 Battlefield 6 플레이를 계획한다면, 무작정 Valorant를 삭제하는 것은 권장되지 않습니다.
EA, 게임 플레이어 이탈에 따른 '정비' 움직임으로 Battlefield 관련 스튜디오 인력 감축
최신 뉴스, 분석 및 리뷰는 Tom's Hardware의 Google News를 팔로우하여 받아보세요. 팔로우 버튼을 클릭하는 것을 잊지 마세요.