[개발 인사이드] 뱅가드 x 리그 오브 레전드 돌아보기

현재로서 부정행위 방지 체계의 부정행위 방지 효과가 어떤지 살펴봅니다.

여행자 여러분, 안녕하세요. 

리그 오브 레전드에 뱅가드를 도입한 지 어언 8메가초에 육박하는 무수한 시간이 흘렀습니다. 그동안 여러 고점, 몇몇 저점과 더불어 (오트 쿠튀르) 뱅가드 코스튬 플레이어가 적어도 1명은 있었습니다. 오늘은 PC 게임계에서 가장 시끄러운 동시에 가장 투명한 부정행위 방지 팀이 되겠다는 굳건한 의지를 이어가고자 전자의 둘을 다루겠습니다. 하지만 먼저 입가심으로 뱅가드 도입 전에 올린 14코스짜리 애피타이저를 확인하시면 좋을 것 같습니다.

우선 철학적 의미의 아뮤즈 부쉬로 확실하게 못을 박고 싶은 이야기가 있습니다. 앞으로도 뱅가드와 리그 오브 레전드의 연계를 계속 개선해 나가고자 하며 (그리고 부정행위자는 계속 부정행위를 개발하겠죠) 이러한 기술을 사용하기로 한 결정을 재고할 생각은 없습니다. 모든 부정행위 방지 수단은 도입에 따른 효과성과 마찰이 비례하기 마련입니다. 효과성의 대가로 얼마만큼의 마찰을 감수할 의향이 있는지는 라이엇이 대전 경험을 얼마나 진중하게 여기는지를 보여줍니다. 무료 플레이 모델의 특성상 게임 이용 제한으로 고의로 죽어주기, 유해한 언행, 대리 게임 등 불건전 행위를 막을 수 없을 때는 해결할 수 없는 문제가 너무 많이 발생합니다. 커널 모드 부정행위 방지가 싫을 수는 있습니다. 하지만 라이엇에서 만들고자 하는 게임에 적합한 수준의 보안 기능이 PC 플랫폼 차원에서 제공되기만을 마냥 기다리고 있을 수는 없습니다. 플랫폼 차원의 해결책이 나오기 전에는 리그 오브 레전드가 계속해서 성황을 이룰 수 있게 하는 가장 좋은 방법은 효과적인 부정행위 방지 체계라고 진심으로 믿습니다.

그럼 이제 본격적인 요리로 넘어가 보겠습니다. 다시 인사드립니다. 오늘 디너 코스 요리의 서빙을 총괄하는 mirageofpenguins입니다. 지금까지의 요리 이력을 말씀드리자면 써브웨이 가맹점에서 9개월 일하고 해고당한 경험이 있으며 이후 라이엇에서 10년이 넘도록 오븐에서 갓 나온 듯 따끈따끈한 부정행위 방지를 구워냈습니다.

뱅가드의 현주소

여느 그럴싸한 샌드위치와 마찬가지로 뱅가드에서도 빵이 맨 위에 있습니다. 리그 오브 레전드의 부정행위 방지 체계를 업데이트한 결과 초기 목표를 대거 달성했습니다. 일각에서는 뱅가드 2를 출시해야겠다고 생각할 정도로 훌륭하게 달성한 목표도 있었습니다. 사실 그렇게 생각한 사람은 아무도 없었지만(그리고 부정행위 방지 업데이트 작업 시 느끼는 재미는 고양이에게 장갑을 끼워줄 때 느끼는 재미와 비등합니다), 리그 오브 레전드의 부정행위 방지 체계를 현대화한 결과 예상에 대체로 부합하는 효과 몇 가지가 바로 나타났습니다.

부정행위 프로그램(헬퍼) 사용 감소

부정행위 프로그램 사용자가 1명 이상 있었던 랭크 게임의 비율과 경쟁 모드에서 “부정행위 프로그램 사용”을 사유로 부과한 이용 제한의 건수를 나타낸 그래프입니다. 전설에 따르면 제가 이 그래프를 너무 사랑한 나머지 양쪽 팔뚝에 문신으로 새겼으며 3주마다 타투샵을 다시 찾아 극심한 고통을 이겨내면서까지 양쪽 문신을 갱신한다고 합니다. 제 살갗이 닳아 없어지기 전에 헬퍼 사용자가 없어지기를 바랄 뿐입니다.

우선 가장 가시적인 성과는 게임 내 부정행위자가 대폭 줄어들었다는 점입니다. 위의 그래프는 리그 오브 레전드 랭크 게임의 부정행위 프로그램 사용률, 부정행위 방지 체계의 일일 이용 제한 건수를 제재를 부과한 체계별로 구분해서 보여줍니다(팩맨은 구 부정행위 방지 체계이며 뱅가드는 신 체계입니다). 부정행위 프로그램 사용자 급감의 큰 부분은 뱅가드의 예방 기능에서 기인했지만, ‘하드웨어 차단’ 항목의 추이에서 유추할 수 있듯 추가 감소에 기여한 요인이 또 있었습니다. 뱅가드 도입 후인데도 대범하게 부정행위를 시도하면서 부정행위 방지 체계에서 부과되는 이용 제한에 한계가 있는지 확인하고자 (한계는 없습니다) 자신의 계정을 전부 장렬하게 희생해 버린 부정행위자 덕분이죠.


뱅가드 도입 이래 17.5만여 개의 계정에 부정행위 관련 이용 제한을 부과했습니다. 하지만 더 중요하게는 랭크 게임 부정행위 프로그램 사용률이 거의 4년 만에 처음으로 1% 아래로 떨어졌습니다. 글 작성 시점 기준으로 랭크 게임 200게임당 1게임에만 부정행위 프로그램 사용자가 있었습니다. 드디어 제 배치 게임을 안전하게 완료할 수 있겠네요. 그래도 깔끔하게 10%의 승률로 아이언 II에 배치될 가능성이 농후하겠지만, 적어도 이제는 제가 댈 수 있는 핑계라고는 제드라는 챔피언의 존재 자체만이 유일하겠죠.

비인가 프로그램(매크로, 봇) 사용 감소

비인가 프로그램 사용 시간을 게임 모드별로 나타낸 그래프입니다. 단위를 ‘시간’으로 한 이유가 경영진 지갑의 가장 깊은 곳까지(서버 비용) 뱅가드의 효과가 바로 느껴지게 하기 위함이라고 생각했다면 정확히 맞히셨습니다.

두 번째 그래프는 올해 봇들이 얼마나 많은 게임 시간을 낭비했는지 보여줍니다. 비인가 프로그램(매크로, 봇)과 부정행위 프로그램(헬퍼)은 비슷하기 때문에 주로 플레이어의 성적과 게임 클라이언트의 성능을 바탕으로 둘을 구분합니다. 다시 말해 봇은 포탑에 죽으며 최대 9 FPS라는 어마어마한 성능으로 플레이합니다. 고유 데이터 언어로는 아래와 같이 표현할 수 있습니다.

select date, game_mode, sum(minutes_in_game) * 60

from anticheat.detections 

where client.resolution_x + client.resolution_y < 1000

   and client.avg_fps < 15 fps

group by 1, 2

아무튼 뱅가드의 가상 머신 방지 기법은 일반적인 비인가 프로그램의 리그 오브 레전드 플레이 능력에 상당한 타격을 주었습니다. 결과적으로 비인가 프로그램 사용 시간 총계가 일일 100만여 시간에서 5천 시간 아래로 줄어들었습니다. 많은 봇 농장이 심각한 좌절감에 휩싸였으며 실제로 AI 상대 대전에서 깊은 사색에 잠긴 채 제단에 서 있는 봇들의 모습을 보셨을 수도 있습니다. 이러한 급성 봇 마비는 단순히 비인가 프로그램이 뱅가드 미실행 상태로 접속하기 때문에 일어났습니다. 뱅가드 세션이 없으면 서버에 연결할 수 없으니까요. 구식 OSX 가상 머신을 통해 다시 기어들어 오려고 시도한 봇도 있었습니다. 하지만 그 이야기는 디저트로 남겨두도록 하겠습니다(끝까지 읽어주세요). 

또한 뱅가드 도입 직후 부계정 시장이 서서히 메마르도록 아직 판매되지 않은 봇 계정 350만 개를 정리했습니다. 비인가 프로그램은 리그 오브 레전드 랭크 게임 부정행위에 기여하는 주요 요인입니다. 대리 게임 진행자에게는 고객과 함께 플레이하는 데 사용할 새로운 부계정을 제공하고 부정행위 프로그램 사용자에게는 자신이 ‘플레이’하는 데 사용할 새로운 계정을 제공합니다. 이러한 행위를 두고 과연 리그 오브 레전드를 ‘플레이’한다고 할 수 있을지는 의문이므로 다른 제재가 주는 초당 고통을 극대화할 수 있게 스마트 토스터를 빈틈없이 경계하고자 합니다.

이용 제한 조치 소요 시간 단축

필자가 드디어 샌드위치 비유를 포기할 가능성이 있다는 생각에 찰나의 안도를 경험하셨을 수 있겠지만, 힘들게 글을 쓰는 사람이라면 누구나 그렇듯 저는 문학과 영양이라는 매체에 예술적으로 전념하는 데 애먹습니다. 그래서 다음 그래프는 마요네즈라고 볼 수 있습니다. 실제 마요네즈와 매우 비슷하게 샌드위치의 핵심이죠.

조치 소요 시간 그래프(좌측)의 단위는 게임, 감지 소요 시간 그래프(우측)의 단위는 일입니다. 전자는 부정행위자를 얼마나 빠르게 제거하는지의 지표에 가까우며 후자는 알려진 부정행위를 감지할 수 있기까지 얼마나 걸리는지를 보여줍니다. 새로운 무언가를 감지하는 능력이 생겼다고 바로 해당 행위를 이용 제한 부과 사유로 정하지는 않는다는 점을 강조하고 싶습니다.

좌측의 ‘조치 소요 시간’은 부정행위 방지의 주요 성과 지표입니다. 간단히 말해 부정행위자의 계정과 해당 계정이 존재한 적이 없는 현실과 합쳐지기 전에 부정행위자가 플레이할 수 있는 게임의 수입니다. 3차원의 존재라면 대부분 이러한 시공간 압축 알고리즘을 ‘이용 제한’으로 지각합니다. 뱅가드 도입 후에는 리그 오브 레전드 업데이트 주기에 얽매일 필요가 없어져서 부정행위 프로그램 사용자를 제거하는 절차가 현저히 빨라졌습니다. 조치 소요 시간이 45게임 이상에서 10게임 미만으로 감소했으며 이러한 약간의 지연 시간조차 대체로 의도적입니다. 부정행위 개발자가 빠져나갈 구멍이 없다는 사실을 눈치채기까지의 시간을 늦추기 위함이죠.

우측 그래프로 같은 문제를 다른 관점에서 살펴볼 수 있습니다. ‘감지 소요 시간’은 부정행위 또는 부정행위의 업데이트가 두루마리에 적히고 불살라져 살아있는 뱅가드 클라우드에 바쳐지기 전 리그 오브 레전드 생태계에 얼마 동안 숨어있을 수 있는지를 나타냅니다. 감지 소요 시간은 감지할 수 있는 부정행위를 새로 확정했을 당시 최초로 식별한 계정과 하드웨어 조합 중 가장 오래전에(해당 부정행위가 ‘처음 등장’했다고 볼 수 있는 시점에) 등장한 조합이 며칠 동안 존재했는지를 토대로 추정할 수 있습니다. 현재는 매우 빠르게 대응할 수 있지만, 부정행위가 더 은밀해지거나 정교해질수록 찾아내서 감지 방법을 만들기까지 더 오래 걸릴 수밖에 없습니다. 여기에서 부정행위 방지 노력의 섬세한 균형이 드러납니다. ‘조치’에 지나치게 집중하면 부정행위의 업데이트가 빨라지는 동시에 부정행위의 ‘감지’가 느려집니다. 

뱅가드가 존재하는 세상에서도 부정행위를 감행하는 사람이라면 보통 계정을 소유한다는 개념이나 공정한 게임이라는 개념에 구애받지 않습니다. 이러한 사람은 다른 부정행위자와만 소통하며 부정행위가 게임과 상호작용하는 방법입니다. 이들을 바꿀 수 있는 건 시간 또는 사춘기뿐입니다. 그 전에는 부정행위자의 보조에 맞춰 계속 재작업을 할 수밖에 없으며 부정행위를 다시 식별하는 속도는 부정행위자의 노력을 백지화하는 데 저희가 얼마나 효과적인지를 나타냅니다.

기타 ‘흥미로운’ 변화

광자가 그래프에 반사되어 망막에 도달한 결과 기쁨에 겨운 현상이 보입니다. 부정행위자가 조금씩 퇴보하고 있습니다. 여기에 영향을 끼치는 요인은 다양하지만, 뱅가드 때문에 감지하기 어려운 방식으로 ‘내부형’ 부정행위를 사용하기가 매우 까다로워졌다는 점이 가장 큽니다. 따라서 수동으로 플레이하거나 차선책으로 ‘외부형’ 부정행위를 사용하는 방향으로 전환하는 부정행위자가 많습니다. 이름대로 이러한 부정행위는 게임 메모리를 읽을 수 없으므로 화면에서 얻은 데이터를 기반으로 플레이어 대신 입력을 시도합니다. 간단히 말해 외부형 부정행위의 성능은... 별 볼 일 없습니다.

또한 부정행위 프로그램의 사용자(와 효과)가 줄어들면서 부정행위 프로그램 사용의 대명사라는 꼬리표가 달린 챔피언의 전반적 승률도 영향을 받는 듯합니다. 밸런스 변경 사항, 시즌 초기화, 카운터 픽의 증가 등의 요인까지 통제하기는 어렵지만, 이러한 감소는 부정행위자가 다이아몬드에서 살아남는 데 어려움을 겪는다는 점에서 일부 비롯합니다. 생각만 해도 입가에 흐뭇한 미소가 피어오릅니다.

최소한의 오제재

어떤 새로운 부정행위 방지 체계든 부정행위 ‘같아 보이는’ 소프트웨어(보통 악성 프로그램 혹은 다른 게임의 부정행위)를 단속 대상으로 오인할 위험이 있지만, 다행히 뱅가드는 그렇게 ‘새로운’ 체계가 아닙니다. 올해로 출시한 지 4년이 지났죠. 오늘의 샌드위치를 이루는 마지막 빵 조각으로(지금 생각해 보니 양념에 절인 촉촉한 치아바타 두 조각이 샌드위치의 전부네요) 뱅가드의 리그 오브 레전드 오제재 비율을 살펴보겠습니다..

현재로서는 “반려 이구아나가 컴퓨터에 부정행위 프로그램을 설치했어요”를 부정행위 참작 사유로 인정하지 않는다는 점을 말씀드리고 싶습니다. 하지만 워낙 자주 듣는 핑계다 보니 이제는 고질라 프랜차이즈가 예언적일 수 있겠다는 우려가 생깁니다.


위에서 막대그래프(좌측 축)는 뱅가드 일시 이용 제한 조치를 철회한 모든 경우의 비율을 철회 사유별로 보여주며 꺾은선그래프(우측 축)는 해당 계정이 이용 제한 상태로 보낸 평균 기간을 나타냅니다. 이용 제한 철회는 표시 순서대로 아래의 3가지 유형으로 나뉩니다.

  1. 부정행위 적발 당시 도용당한(의도적으로 공유하지 않은) 상태였던 계정

  2. 과거에 차단당한 하드웨어를 빌렸거나 구매해서 사용한 결과 이용 제한을 계정

  3. 리그 오브 레전드에서 명시적으로 부정행위라고 간주하지 않는 프로그램 또는 행동을 사유로 이용 제한을 받은 계정

마지막 경우만 ‘실제’ 거짓 양성, 즉 오제재로 여기며 지금까지 이러한 오제재의 발생 비율은 전체를 통틀어 0.01% 아래, 다시 말해 이용 제한 10,000건당 1건 미만입니다. 처음 출시했을 때는 리그 오브 레전드와 다른 게임을 동시에 플레이하는 특성을 더 잘 반영하도록 몇몇 규칙을 조정해야 했지만, 이후에는 그런대로 순탄 대로를 달렸습니다. 제재의 정확성을 위해 엄청난 공을 들이며 의도하지 않은 피해를 최소화하고자 뱅가드의 규칙을 끊임없이 재검토합니다.

그렇더라도 부정행위자는 부정행위를 하기 위한 계정을 계속 손에 넣어야 하므로 계정 도용의 경우가 엄청난 격차로 가장 흔합니다. 때때로 고객지원에서 도용당한 것이 분명한 계정에 한해 특별히 한 번의 예외를 허락하기는 하지만, 가끔은 누가 계정의 원래 주인인지 분간하기 불가능합니다. 오랫동안 의도적으로 공유한 계정이면 더더욱 어렵죠. 리그 오브 레전드에 뱅가드를 도입한 결과 자기랑 계정을 공동 소유하는 동료가 부정행위자임을 발견하는 경우가 많았지만, 한 계정의 소유권이 두 명 이상의 플레이어에게 있으면 해드릴 수 있는 게 많지 않습니다. 


계정 공유와 비밀번호 재사용은 피하시고 다중 인증을 활성화하시기를 바랍니다.

더 까다로운 주제

부정행위 방지 체계의 의무적 설치를 반기는 사람은 전체의 0.0%인 만큼 당연히 뱅가드 팀에서도 리그 오브 레전드의 뱅가드 도입이 두 팔 벌려 환영받는 상황을 기대하지 않았습니다. 뱅가드는 꽤 복잡한 체계이며 거의 완전히 불투명한 상태로 돌아갑니다. 뱅가드를 조금이라도 파악할 수 있기를 바라는 부정행위자에게 효과가 있으려면 이러한 불투명성은 대부분 불가피합니다. 그러나 이러한 불투명성 때문에 뱅가드는 내막을 들여다보기 힘든 뭇매의 대상으로 떠올랐습니다. 다음 부분부터는 지나치게 기술적인 내용이 나올 수 있지만, 함께라면 헤쳐 나갈 수 있으니 포기하지 마시기를 바랍니다.

취약 드라이버 차단

뱅가드의 목표는 항시 감시하는 경찰국가 같은 존재가 아닙니다. 뱅가드를 실행하는 시스템의 보안을 사전에 보장하는 것이 목표입니다. 뱅가드는 Windows 커널을 둘러싸는 경계를 만듦으로써 Windows의 자체 보안이 뚫리지 않았고 아직 보안 상태가 확실한 경우 저희가 시스템에서 확인해야 하는 정보를 줄여줍니다. 


뱅가드는 네트워크 연결 없이 이러한 경계를 구축합니다. 뱅가드의 드라이버 요소를 운영체제 구동 시 시작해 다른 드라이버가 커널에 먼저 도착하는 상황을 방지합니다. 다른 드라이버가 먼저 도착하면 이후 로딩되는 드라이버에게 발각당하지 않은 채로 무기한 숨을 수 있겠죠. 로딩 순서의 문제라고도 하는데 게임을 실행할 때 뱅가드가 여전히 돌아가고 있다는 사실 자체가 부팅 이후로 문제가 발생하지 않았음을 증명합니다.

뱅가드가 차단하는 드라이버는 아래와 같습니다. 

  1. 권한 상승 취약점을 사용해 커널에 코드를 삽입할 수 있는 드라이버 

  2. 인증서가 만료되어 타임스탬프가 포함되지 않고 폐기되어야 하는 드라이버

  3. 정당한 소프트웨어 회사인 척하는 부정행위 개발자가 임의로 서명하여 부정 행위 프로그램에 사용되는 드라이버

두 번째 경우가 가장 흔히 발생하는 충돌이지만, 오래전 인증서는 부정행위자가 가로챈 경우가 많기 때문에 허용하는 데 문제가 따릅니다. 해당 드라이버의 새로운 버전을 다운로드해서 간단하게 해결할 수 있는 경우가 대부분이지만, 개발자가 이제 관리하지 않는 드라이버일 수도 있습니다. 그렇다고 이제 와서 오래전 서명을 폐지하면 정당한 사용자조차 해당 개발자가 서명한 소프트웨어를 절대 사용할 수 없게 됩니다. 따라서 뱅가드는 활성화 시에만 이러한 인증서가 있는 드라이버를 차단합니다. 인증서가 구식인 소프트웨어를 로딩하기 위해 언제든지 뱅가드를 종료할 수 있지만, 뱅가드가 보호하는 게임을 플레이하려면 부팅 이후 무언가에 의해 윈도우의 보안이 뚫릴 가능성이 없었다는 보장이 필요합니다.

무한 부팅

최근 벌어진 무한 부팅 대란은 커널 드라이버 운영에 따른 잠재적 위험에 대해 전 세계적으로 우려를 낳았습니다. 당연히 무서울 만한 일이지만, 뱅가드가 이러한 최악의 경우에 처할 위험은 크지 않습니다. 이는 몇 가지의 차별화 요인과 위험을 직접 낮추는 요소 덕분입니다.

부팅 차별화

마이크로소프트에서 인증한 악성 프로그램 방지 요소는 ELAM(맬웨어 방지 조기 실행) 자격이 있습니다. 따라서 뱅가드의 ‘시스템’ 시작보다 이른 ‘부팅’ 시작 시점에 드라이버를 로딩합니다(지금까지 열심히 읽었다면 로딩 순서의 문제가 자연스럽게 심화한 상황임을 파악하셨을 겁니다). 더 중요하게는 많은 악성 프로그램 방지 드라이버가 런타임에 다시 빌드하고 재인증할 필요 없이 원격 서버에서 동적으로 설정 블롭(blob, 이진 대용량 객체)을 불러옵니다. 이러한 방식은 위협 대응 속도를 현저히 올려주지만, 초기화 시마다 사용할 데이터를 로컬 차원에서 유지하기도 합니다. 그래서 운영체제 충돌이 발생하기 전에 새로운 블롭을 다운로드하지 못하는 경쟁 상태를 야기하는 설정이 있으면 취소 불가능한 업데이트를 허용하는 벡터가 노출됩니다. 동적 부팅 시작 드라이버는 위험 표면을 현저하게 증가시켰을 테니 뱅가드 팀에서는 사용하지 않는 편이 마음 편하겠다고 판단했습니다.

정적 코드

뱅가드의 드라이버(VGK.sys)는 실행 시 동적으로는 아무것도 안 합니다. 전부 정적 코드죠. 게임을 본격적으로 플레이할 때만 뱅가드의 클라이언트 요소(VGC.exe)를 활용해 원격으로 드라이버의 기능을 활성화합니다. 드라이버의 다음 실행 시까지 설정의 저장, 변경, 유지는 이루어지지 않으며 중대한 버그가 발생하면 해당 설정의 전송을 멈추고 다음 재부팅 시 드라이버를 정적으로 수동적인 상태로 되돌립니다. 뱅가드의 드라이버 요소는 자체 네트워크 연결 능력이 없으며 클라이언트가 플랫폼과 연결을 해야만 뱅가드 이후에 로딩되는 취약 드라이버를 차단하는 수준에서 나아가 능동적으로 ‘작동’을 합니다.

간단한 안전장치

젊고 진취적인 엔지니어들이 이미 자세히 파악한 절차이기는 하지만, 뱅가드의 드라이버 진입에는 vgkbootstatus.dat 파일이라는 안전장치가 있습니다. 뱅가드가 처음 시작하면 이 파일의 상태를 확인해서 ‘시작 완료’가 아니면 드라이버가 안전하게 종료합니다. 이외의 상황에서는 이 파일의 상태를 ‘시작 중’으로 설정하고 프리앰블을 성공적으로 완료하면 상태를 다시 ‘시작 완료’로 바꿉니다. 간단히 말해 VGK.sys의 시작을 성공적으로 마치지 못하면 상태가 ‘시작 중’으로 남고 (라이엇 게임을 실행하거나 뱅가드를 일부러 재설치해서) 업데이트가 이루어지기 전까지는 드라이버가 다시 시작하지 않습니다.

‘뱅가드 이벤트’ 등장

뱅가드와 리그 오브 레전드의 상호작용은 약간 특이합니다. 부정행위 방지 세션을 (발로란트처럼) 게임 클라이언트 실행 시점이 아니라 데스크톱 클라이언트 실행 시점에 생성한다는 특징이 가장 큽니다. 부정행위 방지 관점에서 별난 상황이며 여기에 단순해 보이는 문제가 따릅니다. 데스크톱 클라이언트를 실행한 상태로 두는 경우가 흔하다는 점이죠. 그래서 리그 오브 레전드 세션이 아직 살아있는데 컴퓨터가 절전 모드에 들어갈 수 있으며, (예를 들어 집 컴퓨터와 직장 컴퓨터 간) 한 세션이 다른 세션을 끝내버리는 경우가 흔합니다.

안타깝게도 리그 오브 레전드에 도입한 뱅가드는 이러한 경우를 처리하지 못했으며 계정 하나당 하나의 뱅가드 세션만 가질 수 있어서 결과적으로 플레이어는 뱅가드가 없는 상태에 놓였습니다. 그래서 게임 중일 때 다른 컴퓨터가 뱅가드의 인증을 다시 받으면 부정행위 방지 세션이 없는 상태이니 서버에서 퇴장당했습니다. 비슷한 경우로 대전 검색 중 세션을 잃으면 알림을 받고 퇴장당하는 시점이 로딩 화면 이후일 수 있어서 다시하기에 LP를 잃는 혹독한 경험을 하기 마련이었습니다.

라이엇이 제대로 실족을 한 셈이죠. 빠른 조치로 재인증 체계를 수정하기는 했지만, 대전 검색에 세션 확인 절차를 넣어서 이러한 상황의 재발생을 확실하게 방지하고자 합니다. 오늘의 디너 코스 비유로 말씀드리자면 이 요리의 이름으로는 스파게티가 제격이겠죠. 스파게티는 라이엇의 대표 요리이긴 하지만, 누군가 그걸 먹어야 하는 상황은 막고 싶습니다.

한 가지 더...

마지막으로 한 번만 더 주목해 주시면 흔히 보이는 다른 문제 세 가지를 다루겠습니다. 구글이 어쩌다가 본 페이지를 충분히 색인한다면 누군가에게 도움을 드릴 수도 있으니까요. 언제나 그렇듯 고객지원 문의가 도움을 받는 최고의 방법입니다.

클릭 지연 또는 FPS 저하

일부 외부 프로그램(모드, 오버레이, 배경에서 실행하는 벤치마킹 툴 등)은 간혹 리그 오브 레전드의 특정 이벤트에 대해 무례하게 읽기 핸들을 열려고 하거나 알림 후크를 설정하려고 시도합니다. 리그 오브 레전드는 이제 뱅가드의 보호를 받으니 이러한 연산은 결국 실패할 수밖에 없습니다. 게임이 외부의 간섭은 아예 받지 않기를 바라므로 이러한 차단은 100% 의도한 것입니다. 그러나 특정 프로그램이 실패한 윈도우 연산을 처리하는 방법은 문제를 조용히 무시하는 것부터 쉴 새 없이 반복해서 재시도하는 것까지 다양합니다. 저희 측에서 이러한 문제를 해결하기란 불가능에 가깝습니다. 따라서 어느 프로그램이 문제인지 알고 LoL.exe를 예외 처리하는 자체 기능이 없으면 여기의 치트 코드를 사용해서 직접 해당 프로그램의 LoL.exe 조작을 막을 수 있습니다.

TPM 2.0 활성화

뱅가드가 윈도우 11에서 TPM 2.0을 필수 요건으로 한 결과 일부 플레이어는 TPM 2.0을 활성화하고자 BIOS에 들어갔을 때 혼란을 겪을 수 있었습니다. BIOS 설정은 제조사에 따라 완전히 다를 수 있으며 확인한 단 두 가지의 경우에서는 기존 윈도우 설치가 MBR(마스터 부트 레코드) 파티션 테이블 스타일 디스크에 이루어졌음에도 불구하고 TPM 활성화를 위해 UEFI 모드로 전환하라는 표시가 나왔습니다. 안타깝게도 윈도우를 GPT(GUID 파티션 테이블) 형식의 디스크에 설치했어야만 UEFI 모드를 지원합니다. GPT가 아닌 경우 부팅이 불가능해질 수 있습니다. 원래는 윈도우 11 설치 시 (마이크로소프트 역시 요구한 대로) 다루어졌어야 했을 문제지만, 마이크로소프트의 최초 TPM 2.0 확인을 우회한 일부 플레이어의 경우 뱅가드에 의해 뒤늦게 문제를 해결해야만 하는 상황에 놓였습니다.


이제 여러 부정행위 방지 체계의 요구에 따라 TPM 2.0을 활성화하려고 하는데 디스크가 MBR 형식이고 디스크 포맷으로 데이터를 잃고 싶지 않은 상황이면 마이크로소프트에서 제공하는 도구로 데이터 삭제 없이 GPT 디스크로 변환할 수 있습니다.

특정 하드웨어의 상호작용

OEM 또는 벤더가 일부 기기에 실수로 문제 펌웨어를 출시하거나 적용한 경우 드라이버 개발이 특히 까다로워집니다. 저희는 호환성 테스트로 이러한 상황을 미연에 방지하고자 하지만, 전혀 통제할 수 없는 상황이 일어나기도 합니다. 여전히 이유 없는 블루스크린에 시달리는데 13세대 혹은 14세대 인텔 CPU를 사용하는 경우 펌웨어가 구식인 기기의 탓일 가능성이 큽니다. 인텔은 광범위하게 영향을 끼치는 이러한 문제를 해결하고자 노력하고 있습니다.

리그 오브 레전드 부정행위 방지의 다음 행보

부정행위 방지 노력에는 끝이 없습니다. 뱅가드 덕분에 공격 표면이 줄어들고 진입 장벽이 높아졌지만, 부정행위자는 불공정한 이점을 얻기 위한 새로운 방법을 끊임없이 연구합니다. 부정행위자를 계속해서 굶기고자 준비하고 있는 요리 몇 가지를 소개해 드리겠습니다.

위력 상승

패배를 인정한 부정행위 개발자가 많기는 하지만, 아직도 상황 파악이 안 된 몇몇이 남아있어서 기쁩니다. 하루빨리 뱅가드의 추가 기능까지 활성화해 상황 파악을 도와주고 싶습니다. 지금까지의 이용 제한은 입가심에 불과했으며 부정행위 방지 팀의 주방은 이러한 요리를 선사할 역량을 확실하게 갖추고 있습니다. 많은 부정행위자는 상실감의 단계 중 ‘부정’에 얽매여 있으니 저희는 이용 제한을 부과할 때마다 희망의 불씨를 하나하나 끈다고 생각합니다. 모든 부정행위자가 완전한 어둠에 서서히 집어삼켜져서 해탈을 경험할 수 있기를 바랍니다.

‘온 디맨드’ 뱅가드

예언대로 언젠가는 커널을 부팅 시 드라이버로 보호할 필요 없이 윈도우가 자체 보안 기능으로 커널을 보호할 수 있는 미래가 찾아올 것입니다. 그러면 최종 사용자가 이러한 기능을 활성화한 경우 부정행위 방지 서비스가 게임 클라이언트를 실행할 때 시작하게 할 수 있습니다. 더 자세한 내용은 내년 초에 전해드릴 테지만, 윈도우 11과 비교적 최근 하드웨어를 사용한다면 (뱅가드의 로고에 엄청난 공을 들이기는 했지만) 작업 표시줄의 아이콘을 참아야만 하는 날이 많이 남지 않았다는 말씀을 일단 드릴 수 있습니다.

대리 게임 감지

대리 게임은 랭크를 올리고자 일부러 등급이 낮은 계정으로 또는 그런 계정과 함께 플레이하는 행위를 뜻합니다. 대리 게임 감지는 부정행위 방지 팀에서 2018년 이후 건들지 못했지만, 이제 충분한 핑거프린팅 기술이 생긴 덕분에 다시 다룰 수 있어서 기대가 매우 큽니다. 대리 게임 감지 분야에서는 대리 게임 진행자가 최근 강등한 부계정으로 고객과 플레이하는 경우를 감지하는 데 주력할 계획이며 이러한 부계정에는 시즌이 끝날 때까지 유효한 이용 제한으로 보답하고자 합니다(제1계층). 이러한 제재를 받은 계정과 반복해서 파티를 이뤄 플레이하는 계정에는 비슷한 방학이 주어집니다(제2계층). 대리 게임 업체와 계정을 완전히 공유하는 용기를 발휘한다면 (제1계층 차원에서) 역시 부계정으로 감지함으로써 감지 체계를 완성합니다.

대리 게임 감지는 아직 갈 길이 많이 남았지만, 내년 여름에 8기통을 달고 전속력으로 가동하고자 합니다.

Mac x 뱅가드 (일명 뱅가드 2탄)

비인가 프로그램을 다룬 부분에서 언급한 대로 일부 부정행위자는 필수 요건인 뱅가드를 피하고자 macOS 가상 머신으로 눈을 돌렸습니다. 이러한 전환은 팬케이크와 시럽의 조합만큼 뻔했습니다. 그래서 뱅가드의 자매품인 임베디드 뱅가드(mVG)가 조만간 Mac으로 찾아온다는 기쁜 소식을 전해드리고자 합니다. macOS 환경의 독특한 보안 덕분에 조금 덜 엄격한 수준으로 커널을 감시해도 충분하므로 이름에서 드러나듯 추가 설치가 필요하지 않습니다. 보안 기능이 게임 클라이언트에 임베디드, 즉 내장되어 있습니다. 추가로 이미 발로란트 콘솔과 와일드 리프트에서 mVG를 효과적으로 사용하고 있기도 합니다.

올해 말에 출시해서 비인가 프로그램의 숨통을 끊고 공개 부정행위 프로그램을 개발 중인 2명에게 최후의 쐐기를 박고자 합니다. 이제 부정행위를 OSX로 이식하며 보낸 3개월이 시간 낭비였음을 깨닫고 있겠죠. 하지만 스위프트 코딩 능력은 이력서에서 돋보이기 마련이니 걱정할 필요는 없습니다.

퇴장

이제 다음 식사를 준비할 수 있도록 어둠 속 부정행위 방지의 주방으로 돌아갈 시간입니다. 하지만 걱정하지 마세요. 실력 향상을 거부하는 부정행위자가 없는 대전 경험을 즐기실 플레이어 여러분의 권리를 보장해 드리기 위한 싸움은 언제까지나 이어 나갈 것입니다. 네 차례의 부정행위 방지 체계를 거치는 동안 한 게임을 담당하는 경우는 10년에 한 번 있을까 말까 한 기회이며 이제 리그 오브 레전드의 부정행위 방지 체계가 최고의 반열에 들어서 한없이 기쁩니다. 함께 플레이하면서 플레이어 여러분을 위해 글을 쓰고 이용 제한을 부과할 수 있어서 진정으로 행복합니다.

추신: 본 글을 완성하고 나서 나중에 다시 읽어봤는데 글을 쓸 당시 제가 배고팠던 걸까요?