개발자 블로그
[개발 인사이드] 뱅가드 x 리그 오브 레전드

리그 오브 레전드에 찾아온 라이엇의 뱅가드

개발자 블로그글쓴이mirageofpenguins
  • 클립보드에 복사됨

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

어느덧 그 시간이 돌아와서 4년 만에 부정행위 방지 소식을 전해드리고자 합니다. 저는 이용 제한 제재 부과 건수 통산 8,500만 건을 기록한 부정행위 방지 장인 mirageofpenguins라고 합니다. 오늘 뱅가드에 관한 이야기를 드리고자 모습을 드러냈습니다.

리그 오브 레전드의 부정행위 방지 문헌을 읽는 고통을 과거에 이미 맛보신 분도 계시겠지만, 추천 선행 학습 자료는 여기에서 확인할 수 있습니다. 원한다면 편하게 훑어보시라고 말씀드리지만, 해당 문서는 이제 캘리포니아주에서 골격 연장을 유발하는 것으로 판명 났으며 이번 학기 중간고사 범위에 포함되지 않습니다.

리그 오브 레전드에 뱅가드를 도입한다는 소식은 확실히 논란거리였습니다. 어쨌든 플레이어 대부분은 부정행위를 하지 않으며 단지 부정행위자가 공정하게 경쟁하는 법을 모른다는 이유만으로 무언가를 추가로 설치해야 하는 상황을 반기는 사람은 없을 테니까요. 부정행위 방지는 그늘에서 이루어지며 활동을 대부분 암중에 진행하는 만큼 안타깝게도 많은 혼란, 걱정과 더불어 솔직히 허위 정보를 낳는 부작용이 따랐습니다.

그러니 마음의 준비를 해주시면 뱅가드가 목적을 어떻게 달성하는지를 최대한 밝게 조명해 보겠습니다. 이번 글은 약간 길지만, 그래도 그림을 몇 개 넣었습니다.

리그 오브 레전드 부정행위 개론

리그 오브 레전드는 보안이 ‘꽤’ 괜찮은 게임입니다. 게임 상태 전체의 시뮬레이션이 서버에서 이루어지며 클라이언트의 역할은 서버에 ‘요청’만 하는 데 그칩니다. 흔히 서버 권한으로 처리한다고 하는데 근본적으로는 진실에 대한 최종 판단을 서버가 내린다는 뜻입니다. 서버 검증이 충분히 이루어지게 만들었다면 ‘재사용 대기 중인 스킬을 사용’ 같은 요청이 실패해야 정상입니다. 그래서 부정 이용이 예전만큼 흔하지 않으며 부정행위자 대부분은 그 대신 소위 스크립트 혹은 헬퍼를 사용한 입력 자동화에 의지합니다.

자동 입력 프로그램 개발자는 근본적인 차원에서 리그 오브 레전드 클라이언트를 위한 래퍼(wrapper)와 마찬가지인 플랫폼을 만듭니다. 이러한 플랫폼은 게임을 이벤트 스트림으로 재송출하며 최종 사용자가 이벤트에 대응하는 특정 행동을 자동으로 실행하는 스크립트를 만들(기보다는 아마 복사 및 붙여넣기를 할) 수 있게 해줍니다. 결과는 제리가 치사량에 가까운 카페인을 섭취한 듯 프레임 단위로 완벽한 카이팅을 하는 모습 또는 신들린 카시오페아가 기도의 힘으로 어떤 스킬샷이든 피하는 상황입니다. 부정행위자를 상대하면 재미없기 마련이며 더 큰 문제는 자동 입력 프로그램의 존재를 안 후에는 남을 의심하지 않기가 어렵다는 점입니다.

자동 입력 프로그램 사용자의 집요함

첫 번째 문제는 부정행위의 중독성과 자동 입력 프로그램 사용자는 집요하다는 것입니다. 리그 오브 레전드는 무료로 플레이할 수 있는 게임이며 이용 제한 한 번에 그만두는 일은 절대 없습니다. 일시 이용 제한 제재를 정기적으로 부과한 결과 포화 상태의 부계정 시장이 유지되었으며 다시 들어오려면 새로운 30레벨 계정에 드는 비용이 유일한 진입 장벽입니다. 글 작성 시점 기준으로 미화 1.99달러(약 2,700원)면 덤으로 큰 사이즈 감자튀김까지 먹을 수 있습니다. 이러한 인해전술식 가격 책정 전략이 가능한 이유는 추측하셨겠지만 계정 자체의 레벨도 자동 입력 프로그램으로 올리기 때문입니다. 그 결과 부정행위자가 무한정으로 반복할 수 있는 악순환이 생깁니다.

04092024_League_Ranked_Games_with_a_Cheater.jpg
일반적인 자동 입력 프로그램 사용자의 실력 향상 의지가 아예 없음을 가장 잘 보여주는 방법은 오늘날 역사가들이 ‘선 그래프’라고 부르는 구식 기법입니다. 위의 선 그래프는 부정행위자 또는 봇 프로그램 사용자가 적어도 1명 있는 리그 오브 레전드 게임의 비율을 나타냅니다. 언제나처럼 이용 제한을 당한 계정의 수를 보조 Y축에 표시했습니다. 그러면 얼마나 많은지 파악하고 그들의 고통을 엿보실 수 있으니까요.

2023년에 걸쳐 부정행위 방지 팀의 사랑스러운 악동들이 리그 오브 레전드 클라이언트에 감지 장치를 은밀하게 넣은 덕분에 자동 입력 프로그램 역병의 규모를 엿볼 수 있었습니다. 이러한 장치는 허니팟(honeypot) 혹은 ‘매운 값(spicy value)’이라고 하며 일회용입니다. 허니팟에서 비롯한 이용 제한은 더욱더 철저한 검토를 거쳐야 하며 부정행위 커뮤니티에서 즉시 눈치채기 때문입니다. 저희에게 있는 비장의 무기는 무한하지 않으니 이러한 대응 방식은 중유 수준으로만 지속 가능합니다. 하지만 이제는 인류 최고의 무기를 손에 넣었습니다. 바로 통계학이라고 하죠.

최근 몇 달 들어서는 전 세계적으로 많게는 15게임당 1게임꼴로 자동 입력 또는 봇 프로그램 사용자가 있었지만, 일부 지역에서는 5게임당 1게임까지 늘어납니다. 부정행위는 지역을 가리지 않습니다. 부정행위자는 그저 부정행위를 저지르기 가장 쉬운 곳으로 갈 뿐입니다. 동방 국가에서는 자동 입력 프로그램의 비중이 더 높습니다. 현지 전용 부정행위 방지 체계와 더 중요하게는 게임 이용에 본인인증을 요구하는 정부 정책이 있는 중국과 한국의 부정행위자가 다른 나라로 넘어간 영향입니다.

빼앗아 갈 만한 영광이 있어야만 부정행위 프로그램을 만들 가치가 있으니 부정행위 시도 자체는 사실 성공적인 경쟁 환경을 나타냅니다. 하지만 올림픽 수준의 포부를 가진 게임치고는 지나치게 많으며 승리에 의미를 부여하기를 바란다면 공정성을 반드시 지켜야 합니다.

자동 입력 프로그램 사용자의 효과성

두 번째 문제는 자동 입력 프로그램이 꽤 효과적이라는 것입니다. 스크립트 사용자는 기특하게도 손을 쓰지 않고 플레이하는 데 상당한 경지에 올랐습니다. 최적으로 운용 시 자동 입력 프로그램 사용자의 랭크 게임 승률은 80%를 맴돌며 이러한 효능의 영향으로 부정행위자의 랭크 게임 유입이 끊이지 않습니다.

04092024_Ranked_Games_with_a_Scripter.jpg
자동 입력 프로그램 사용자 수가 늘어날수록 티어별 분포에 계층이 생기고 높은 랭크에 치우친 모습을 볼 수 있습니다. 랭크 장식에 들어가는 색을 손수 분류하고 평균을 내서 나온 색상의 헥스 코드로 본 걸작을 완성했다는 사실을 꼭 알려드리고 싶었습니다. 한 시간 넘게 걸렸는데 이제 눈물이 멈추지 않습니다.

위에서 본 무지갯빛의 향연은 부정행위자가 있는 채로 마무리한 랭크 게임의 비율을 부정행위자의 게임 종료 시점 티어로 구분한 그래프입니다. 잘못 보신 게 아닙니다. 마스터 이상 티어에서 부정행위자가 있었던 게임의 비율은 10%를 넘습니다. 심지어 정기적 수작업으로 검사하는 챌린저에서도 상당수의 부정행위자가 있었습니다. 통계적으로 ‘나쁜 선’이라고 하는데 저희는 이러한 추세를 심각하게 여깁니다.

설상가상으로 현재의 부정행위 방지 체계가 뚫린 결과 이러한 추세가 어떻게 이어지는지 확인할 길이 없습니다.

팩맨 (고전 게임 이야기가 아닙니다)

아래에서 다룰 여러 이유를 고려해 뱅가드의 도입은 도저히 버틸 수 없을 때까지 미루고 싶었습니다. 그래서 리그 오브 레전드는 여태 (거의 6년 동안) 팩맨(Packman)이라는 부정 조작 방지 체계로 연명해 왔습니다. 그러나 멈출 줄 모르는 부정행위와 이용 제한 세례 때문에 부정행위 방지 기술은 재귀적 광속으로 움직입니다. 쌍곡형 시간팽창을 고려해 주점 수학으로 계산한 팩맨의 ‘부정행위년’ 기준 사용 연수는 약 2억 5천만 년이므로 거의 중생대 전까지 거슬러 올라갑니다.

팩맨의 주목표는 게임 바이너리의 분석을 어렵게 하는 것이며 여기에는 게임 클라이언트에 덧붙이는 부정행위 감지 기능을 ‘숨기는’ 역할도 포함됩니다. 문제는 난독화를 해제한 게임 바이너리를 추출하고 부정행위 방지용 검사를 우회하는 작업이 이제 학습 예제나 다름없어졌으며 작년 초 데이터 유출(영문 링크)의 영향으로 이러한 작업이 더 쉬워졌을 가능성이 있습니다. 팩맨은 애초에 이렇게까지 오래 버티도록 만들어진 것이 아니었으며 팩맨을 개선하는 데 드는 비용은 엄두가 안 날 수준에 이르렀습니다.

04092024_League_Suspensions_by_Type.jpg
퍼블리싱 부서의 말에 따르면 로그 척도 Y축의 사용은 흑마법에 비견하는 범죄라고 하니 비교를 돕고자 위 그래프에서 허니팟형 감지를 없앴습니다. 기존 팩맨 체계로 부과하거나 검토한 이용 제한만 남아있습니다.

위의 그래프는 저희의 감정적 파탄을 나타내고자 한 시도이지만, 2차원 공간에서는 감정의 격렬함을 절대 제대로 표현할 수 없습니다. 리그 오브 레전드 자동 입력 프로그램 관련 이용 제한 주별 건수를 팩맨(파란색) 내에서 감지가 이루어진 경우, ‘수동’으로(부정행위 방지 담당자의 검토에 따라) 이용 제한 조치를 한 경우로 구분해서 나타냈습니다. 팩맨의 효과가 감소하면서 자동 입력 프로그램에 대한 ‘수요’를 감당하기 어려워지며 무수한 담당자가 무수한 부정행위자를 검토하는 방안은 전략적으로 타당하지 않습니다. 게임의 공정성을 보장하려면 업그레이드가 불가피한 상황입니다.

뱅가드 등장

부정행위 방지 기술 대다수와 마찬가지로 뱅가드는 예방과 감지 차원의 기능으로 이루어졌습니다. 최대한 많은 부정행위 수단을 아예 차단하려고 노력하지만, 로컬 차원에서(뿐만 아니라 노골적으로) 부정행위를 ‘방지’하면 저희의 기법을 파악하기가 너무 쉬워지는 빈틈의 경우에는 잠복 상태로 침해를 ‘감지’한 후 시차를 두고 조치를 합니다. 가장 강력한 어둠의 감지 마법을 서버의 감시하에 두면 마치 임의로 이루어지는 듯한 제재로 부정행위 개발자에게 전해지는 신호를 교란해서 저희의 기법을 숨길 수 있습니다. 방금의 장문은 보통 짧게 ‘쫓고 쫓기는 싸움’이라고 표현하며 전 세계의 부정행위 방지 개발자가 매일 마주해야 하는 기막힌 처지입니다.

좋은 부정행위 방지의 기준은 속도

게임 클라이언트에서 벗어나 뱅가드를 점점 서버로 옮기면 위험한 플레이어에게는 다른 ‘검사’를 적용해서 더욱더 첨예하고 훨씬 신속하게 침해 사실을 감지할 수 있습니다.

04092024_Time_to_Action.jpg
“조치 소요 시간”은 부정행위자의 계정이 나락으로 보내지기 전 완료한 게임 횟수를 의미합니다. 여러 이유로 완벽하지는 않은 지표이지만, 유저 모드와 커널 모드 차원의 부정행위 방지를 A/B 테스트로 비교할 희귀한 기회를 누릴 수 있어 행운이라고 생각합니다.

실례를 보여드리고자 리그 오브 레전드와 발로란트의 조치 소요 시간을 그래프로 나타냈습니다. 다만 둘을 비교하는 것은 공평하지 않습니다. 부정행위는 일인칭 슈팅 게임에서 훨씬 더 정교하게 이루어지므로 리그 오브 레전드의 게임 길이가 더 짧음을 고려하더라도 리그 오브 레전드가 앞서는 결과를 예상할 수 있었습니다. 그러나 뱅가드의 공기역학적 디자인(과 빠른 적응 속도) 때문에 감지를 피하는 데 드는 노력이 지나치게 커져서 부정행위자 대부분은 시도조차 하지 않습니다. 부정행위를 사용하지 않고 몇 게임 동안 화를 내다가 자연의 섭리대로 이용 제한을 당합니다.

환경 보안

뱅가드를 여타 부정행위 방지 체계와 더욱더 차별화시키는 요인은 특징은 게임 클라이언트보다 원천적인 수준에서 운영체제 자체에 보안 기준을 적용한다는 점입니다. 이러한 요건 중 몇몇은 충돌을 유발하기도 하지만, 이로써 부정행위를 성공적으로 배포하는 데 많은 걸림돌이 생깁니다. 그래서 게임의 보안과 접근 용이성 사이에서 균형을 찾고자 끊임없는 줄다리기를 벌여야 합니다.

TPM 2.0

리그 오브 레전드 x 뱅가드에 TPM 2.0은 필수입니다. 마이크로소프트의 원래 의도는 모든 윈도우 11 신규 설치에 TPM 2.0이 반드시 필요하게 하는 것이었지만, 이러한 요건을 실제로 시행한 방법은 비교적 약했고 쉽게 우회할 수 있었습니다. 마이크로소프트의 원래 의도를 받들어 직접 집행하기로 했습니다. 그래서 일부 윈도우 11 사용자는, 특히 TPM 요구 사항을 우회하고자 레지스트리 키를 수정했다면 리그 오브 레전드를 플레이하는 데 영향을 받을 수 있습니다.

TPM은 Trusted Platform Module(신뢰할 수 있는 플랫폼 모듈)의 약자이며 TPM을 필수로 요구하는 이유는 두 가지입니다. 첫 번째 이유는 TPM이 인증서 서명 검증(다른 소프트웨어를 신뢰할 수 있는지 확인하는 절차)의 보안을 강화하기 때문이며 (더 중요한) 두 번째 이유는 대체하기 매우 힘든 하드웨어 ID의 역할을 하기 때문입니다. TPM을 활성화하고 정상 구동 중인 플레이어는 부정행위를 할 생각이 없다고 여겨도 거의 무방합니다. 만약 생각이 있었다면 저희가 해당 TPM 칩을 손쉽게 이승에서 완전히 추방해 버릴 수 있기 때문입니다. TPM 활성화 방법에 관한 추가 정보를 얻으려면 여기에서 유익한 고객지원 글을 확인해 보시기 바랍니다.

드라이버

부정행위 방지 드라이버는 새롭지 않으며 저희가 발명하지 않았습니다. 저희에게 필요한 정보는 이미 유저 모드에서 다 확인할 수 있으므로 뱅가드에 있는 드라이버 요소의 목적은 정보를 더 많이 수집하는 게 아닙니다. 뱅가드의 주목적은 게임이 현재 신뢰할 수 있는 환경에서 실행되고 있는지 확인하는 것입니다. 그러면 진행해야 하는 감지의 수, 수집해야 하는 데이터의 양, 가장 중요하게는 잠재적 부정행위자의 게임 접근 용이성이 모두 줄어듭니다.

타당(성과 안전)성을 해치지 않는 선에서 부정행위 방지의 최대한 많은 부분이 예방 차원에서 이루어지게 하고자 합니다. 윈도우는 쉽게 손상될 수 있으며 오늘날의 위협 실정을 고려하면 윈도우의 보안을 직접 확인해야 할 필요가 있습니다. 운영체제가 발로란트 프로세스에 대해 알려주는 내용을 신뢰할 수 있어야 합니다. 신뢰하지 못한다면 부정행위자가 간섭해서 검사를 가로채고 모든 상황이 정상이라고 ‘거짓말’할 수 있습니다.

04092024_VALORANT_Games_Detected_vs_Actions_Taken.jpg
“하드웨어”는 재위반으로 즉시 감지된 계정, “수동”은 이용 제한을 당하기 전 담당자의 검토를 거친 계정, “감지”는 말 그대로 부정행위가 명백하게 감지되어 이용 제한을 당한 계정을 의미합니다. 속도에 따라 색을 다르게 표시했으며 여전히 수동이 가장 마음에 안 듭니다.

오늘 마지막으로 살펴볼 시계열은 부정행위자가 있는 발로란트 랭크 게임의 비율이며 뱅가드 주방에서 부정행위자를 어떻게 요리하는지에 따라 아름다운 색으로 구분했습니다. 상황이 여의찮을 때조차도 뱅가드의 하드웨어 식별자와 시스템 요구 사항 덕분에 잘 버틸 수 있지만, 그래프가 진짜로 부각하는 것은 현재 리그 오브 레전드의 빈틈입니다. 리그 오브 레전드의 기존 부정행위 방지 체계에는 증명이나 환경 요소가 없고 제재가 전부 감지 방식 또는 수동 방식으로만 이루어집니다.

뱅가드는 호스트 보안 검사라는 장벽으로 반복 부정행위의 대가를 끌어올립니다. 물론 부정행위자가 하드 드라이브를 식기세척기에 살균 코스로 돌리거나 자신의 코드를 커널 메모리에 수동으로 매핑할 수 있겠지만(전자든 후자든 상당히 위험합니다), 요점은 그렇게 하려면 돈과 시간이 필요하다는 사실입니다.

‘항상’ 켜져 있는 이유

뱅가드가 항상 ‘작동’하고 있지는 않습니다. 부팅 시 드라이버가 로딩되기는 하지만, 드라이버에 대한 호출이 전혀 일어나지 않으며 라이엇의 게임을 실행하기 전에는 네트워크에 연결되지 않습니다. 그저 말 그대로 (삼엄하게) 가만히 있으면서 윈도우 로딩 시점과 게임 시작 시점 사이에 운영체제를 망가뜨릴 만한 일이 발생하지 않았음을 증명합니다.

리그 오브 레전드를 실행하면 뱅가드 클라이언트가 드라이버를 연락해 모든 게 100% 정상인지 확인합니다. 전부 정상이면 유효한 부정행위 방지 세션을 부여받아 게임 서버에 연결할 수 있습니다. 이후 클라이언트의 지시가 드라이버 내부의 기능을 활성화해 서명된 리그 오브 레전드 프로세스를 조작할 수 있는 것을 경계하며 차단합니다. 드라이버는 언제든지 비활성화할 수 있습니다. 다만 게임에 들어가려면 신뢰 체인의 무결성을 재인증해야 하므로 재부팅이 필요합니다.

리그 오브 레전드 x 뱅가드

뱅가드를 리그 오브 레전드에 도입하면서 부정행위자의 숫자가 대폭 감소하겠지만, 여기에서 한술 더 뜰 수 있습니다.

VM(가상 머신) 방지를 강화해서 봇 프로그램 사용에 따르는 비용을 끌어올리고 재위반 시 상당한 어려움을 감수하게 할 수 있습니다. 대리 게임용 봇 프로그램의 공급이 고갈되고 또 다른 30레벨 계정을 구매하는 방법이 이용 제한 제재를 우회하는 데 더는 통하지 않게 됩니다. 또한 뱅가드의 기기 핑거프린팅 덕분에 대리 게임, 부계정, 계정 도용 등의 문제에 집중적으로 대응할 새로운 기회가 생깁니다. 대리 게임으로 부당하게 얻은 보상을 박탈하고, 부계정이 알맞은 랭크에 더 빨리 도달하게 하고, 어쩌면 ‘불공평한’ 사전 구성 팀까지 무효화할 수 있습니다.

클라이언트 보안 향상과 자동 입력 프로그램 감소는 리그 오브 레전드 개발진이 연계기, 제한 시간, 처형 등 피지컬 측면에서 더 보람찬 요소를 기획에 활용할 수 있음을 뜻합니다. 자동 입력 프로그램 사용자가 랭크 통계를 흐리는 문제가 수그러들어서 고위험 고수익 챔피언의 밸런스가 더 용이해지며 부정행위자 때문에 망쳐진 게임을 ‘취소’하고 피해를 입은 플레이어에게 LP를 반환할 수 있습니다.

새로운 부정행위 방지 체계를 기뻐하면서까지 반기기는 어렵다는 것은 알지만, 처음이 가장 힘듭니다. 그다음부터는 우상향으로 나아질 일만 남았습니다.

오늘은 이만

뱅가드 팀에는 2014년 팀 출범 당시의 끈끈한 3명에서 거의 1,000% 늘어나 이제 30명에 육박합니다. 데이터 파이프라인부터 부정행위 정찰까지 모든 작업을 내부로 돌렸으며 각각의 팀원은 물리적으로 가능한 선에서 가장 공정한 게임 경험을 만드는 데 전념합니다. 일부 결실은 기술 혁신의 결과이지만, 끊임없는 순수한 노력 그 자체의 역할이 훨씬 컸습니다. 부정행위자의 공세는 항상 이어지며 플레이어 여러분의 성원 없이는 저희의 부단한 노력도 있을 수 없습니다.

글을 읽어주셔서, 리그 오브 레전드를 플레이해 주셔서, 부정행위자였던 철부지들이 더 큰 사명을 띨 수 있게 도와주셔서 감사합니다.

질의응답

다시 인사드립니다. 아래의 질문은 다른 곳에 넣기 애매했지만, 열렬한 독자라면 나누어 드릴 수 있는 지식을 전부 소화하실 수 있도록 포함했습니다. 경고의 말씀을 드리자면 제 글의 훌륭한 편집자분이 “알아서 하세요”라고 하며 본 질의응답 부분을 노골적으로 외면했으니 시선을 여기 아래로 옮기신다면 여과 없는 광기를 자초하시는 셈입니다. 경고는 딱 한 번으로 마치겠습니다.

Q: 뱅가드는 스파이웨어 아닌가요?

아닙니다. 하지만 딱 그 순서대로의 단어 배열이 수학적으로 리트윗을 긁어모으는 가장 빠른 방법이라고 확신합니다. 어떤 콘텐츠 알고리즘이든 ‘스파이웨어’와 ‘루트킷’이라는 단어가 일으킬 수 있는 클릭에 중독되도록 프로그램되어 있으며 수학적으로 다음 희열만을 좇다 보니 유익한 저널리즘과는 거리가 멀고 유해하다는 점에서만 놀라운 가짜 혼란을 낳기만 합니다.

텐센트는 해당 지역에서 (중국 측 배급사로서 운영하는 라이엇의 게임을 비롯해) 운영하는 게임을 위한 독자적 부정행위 방지 체계를 사용합니다. 부정행위 프로그램을 발견하면 각자 감지할 수 있게 서로 알려주기는 하지만, 다른 것은 공유할 필요가 없습니다. 텐센트의 부정행위 방지 팀과 10년 동안 아마 3번밖에 만나지 않았고 그때 나눈 건 하이 파이브와 이용 제한 부과 건수뿐이었습니다(둘 다 텐센트가 앞섰습니다). 뱅가드와 뱅가드의 코드는 공유하지 않으며 부정행위 방지 데이터가 라이엇을 벗어난 적은 절대 없습니다.

Q: 부정행위 방지는 왜 필요한가요?

이번 글 덕분에 이러한 질문이 조금이나마 줄어들었으면 좋겠습니다. 철학적 이야기를 하자면 리그 오브 레전드에서 실력을 올리고 싶다면 악기를 배울 때와 마찬가지로 실제 연습이 필요합니다. (15년 동안 플래티넘은 구경도 못 해본) 저는 이러한 경험을 못 해봤지만, 플레이어 여러분은 할 수 있다는 사실이 핵심입니다. 경쟁력을 갖추는 데 필요한 것은 자신의 뇌, 이더넷 케이블, 백라이트가 들어오는 입력 장치뿐이어야 마땅합니다.

연습은 시간을 소요하지만, 지름길은 그러지 않습니다. 실력을 향상하지 않고 누군가에게 돈을 주는 대신 버튼을 눌러달라고 하면 어떨까요? 버튼을 직접 누르지 않고 토스터가 게임을 플레이할 수 있게 프로그래밍하면 어떨까요? 게임을 플레이하지 않고 그냥 ‘패왕’이라고 새겨진 트로피를 사면 어떨까요? 이러한 행동은 실력의 중요성을 퇴색시키고 만족도를 떨어트리며 진정한 경쟁을 벌일 동기가 사라지게 합니다. 승리는 쟁취의 대상이기를 바라며 승리를 쟁취하면 보람이 느껴지기를 바랍니다.

Q: 리눅스는 어떻게 되는 거죠?

리눅스를 공식 지원한 적은 없으며 루트리스 기반으로 구현해서 (와인을 사용하는) 리그 오브 레전드를 플레이하는 현재의 방식은 뱅가드의 드라이버 요건을 충족할 수 없는 실정입니다. 현재 리눅스에서는 저희가 부팅 상태나 커널 모듈을 증명하는 능력을 충분히 확보할 수 없으며 일을 번거롭게 하는 리눅스 배포판별 차이는 어려움을 가중할 뿐입니다. 에뮬레이션을 허용하기만 해도 엄청난 위험이 따릅니다. 그러면 그냥 호스트에서 실행되면서 뱅가드에 노출되지 않는 방식으로 VM을 조작하거나 분석하는 부정행위가 늘어날 수 있습니다.

환경이 조작되지 않았음을 확인하는 일이 부정행위 방지 노력의 절반을 차지하지만, 리눅스에서는 설계상 환경 조작 여부를 확인하기 매우 어렵습니다. 리눅스를 위해 열어두는 백도어는 부정행위 개발자에게 즉시 악용될 것이며 어제 기준으로 리그 오브 레전드의 리눅스 사용자는 800명 남짓이었습니다. 이득 대비 위험이 지나치다고 판단했습니다.

Q: 부정행위자에게 그만하라고 정중하게 부탁해 봤나요?

한때는 부정행위자가 자필 사과문을 제출하면 이용 제한을 풀어주기도 했습니다. 일부는 그만하겠다고 약속했지만, 프리랜서 플랫폼에서 사과문을 대필할 사람을 구한 경우가 많았으며 이용 제한을 풀어준 계정의 91%가 6개월 안에 자동 입력 프로그램 사용으로 다시 이용 제한을 당했습니다. 부정행위자에게는 상식이 통하지 않으며 충분한 시간이 지나 공감 능력이 발달할 때까지 부정행위 시도를 방지하는 방어책이 최선입니다.

Q: 뱅가드가 키보드를 먹통으로 만든다고 들었는데요?

출시 당시(2020년)에는 뱅가드가 부팅 시 로딩되는 점을 활용해 서명되었지만 취약한 드라이버가 아예 로딩되지 않게 막기로 했습니다. 이렇게 결정한 이유는 부정행위자가 자기 드라이버를 로딩(하거나 해킹한 서비스를 이용해 로딩)해서 뱅가드를 무력화하는 것을 방지하기 위함이었습니다. 그러나 호환성 테스트에서(뿐만 아니라 알파 테스트에서조차도) 맞춤형 불량 커널 드라이버를 활용해 비교적 알려지지 않은 기기에 지시를 보낼 수 있는 엄청나게 특정한 하드웨어 구성이 존재함을 발견하지 못했습니다.

악명 높은 사례를 말씀드리자면 여기에 키보드 조명을 제어하는 드라이버도 포함되었습니다. 이렇게 제대로 서명된 드라이버 덕분에 부정행위자는 유감스럽게도 본인의 악성 소프트웨어를 로딩해서 (인증서 검증이 여전히 활성화된 상태의) 윈도우를 정상적으로 설치한 듯해 보이게 하고 커널 수준에서 부정행위를 실행할 수 있었습니다. 키보드의 조명과 매크로만을 위한 드라이버라서 해당 개발자가 새로운 드라이버를 출시할 때까지 드라이버를 차단 목록에 남겨두었는데 그러면서 저희는 키보드 백라이트를 싫어한다는 평판을 얻었습니다. (어둠을 선호하니) 사실이라고 할 수 있겠죠.

Q: 오제재가 발생하지 않나요?

이용 제한을 ‘잘못’ 받았다고 주장한다면 가능성 순서로 나열한 아래의 범주에 듭니다.

  1. 허구의 이야기를 펼친 경우
  2. 부계정으로 부정행위를 실험한 결과 하드웨어 결부를 통해 본계정까지 말려든 경우 (내부적으로 ‘아뿔싸’라고 부르죠)
  3. 부정행위를 사용한 사람(보통 대리 게임 업자 또는 친척)과 계정을 공유한 경우
  4. 대리 게임을 진행하고 부정행위 프로그램을 사용한 사람과 사전 구성 팀으로 반복 플레이한 대가로 180일 이용 제한을 받은 경우
  5. 밥 먹듯 화내는 해커가 계정을 도용해 정확히 6게임 동안 다른 플레이어를 괴롭힌 경우
  6. 다른 게임에서 사용한 부정행위 프로그램이 유감스럽게 뱅가드에 감지된 경우
  7. 부정행위와 같은 연산을 수행하는 악성 프로그램을 설치한 경우

계정 도용의 경우 보호 차원에서 해당 계정에 일시 이용 제한을 걸려고 하지만, 때맞게 대응하지 못할 때도 있습니다. 가끔은 도용당한 계정의 플레이 시간 중 부정한 플레이 시간의 비중이 너무 커서 ‘진짜’ 소유자를 분간하기가 지나치게 어렵습니다. 하드웨어 수준 부정행위의 경우 어느 게임에 사용하려고 하는지가 명확하게 드러나지 않을 수 있으므로 어느 게임에서든 부정행위를 사용하지 말기를 단호하게 권고합니다. (보통 악성 프로그램 때문에 발생하는) 진정한 오제재의 경우 분석한 후 제재를 야기한 규칙을 완전히 ‘복구’하고 불량 정보에서 비롯한 모든 제재를 취소합니다. 이러한 상황이 드물게 발생하기는 하지만, 이러한 이용 제한이 며칠을 넘기는 경우는 극도로 드뭅니다.

이용 제한 제재의 검토를 요청하려면 고객지원에 문의해 주시기 바랍니다. 원하는 답을 못 들으신다면 계정이 상위 6개의 범주 중 하나에 해당하는 것으로 판정되었음을 의미합니다.

Q: 그냥 부정행위 개발자를 고소하면 되는 거 아닌가요?

물론 필요할 때는 소송을 진행(영문 링크)하기도 합니다. 라이엇의 경험을 보호하려는 법무팀의 마음은 열렬합니다. 하지만 소송이 필요할 만큼 뱅가드에 끈질기게 매달린 개발자는 많지 않았습니다. 대부분 우회 시도를 하지 않으며 시도를 하더라도 보통 기본적인 부정행위 방지 기제 한두 개와 씨름한 후 멋쩍어하며 포기합니다. 또한 끊임없는 사기는 업무량을 어느 정도 덜어주는 효과를 냅니다. 사기는 부정행위 커뮤니티에 불신의 씨앗을 심고 대형 재판매 업체가 문제로 떠오를 가능성을 줄이기 때문이죠. 부정행위 방지가 적절하게 이루어진다면 소송이 타당할 만한 규모로 사업을 영위하는 제공자가 나오기 힘듭니다. 현재 법무 관련 노력은 대부분 조준 보정 프로그램으로 가장한 악성 프로그램의 광고에 대응하는 데 집중하고 있습니다.

Q: 부정행위자를 위한 게임 모드를 만들면 안 되나요?

‘부정행위자의 섬’은 흥미로운 발상이지만, 엔지니어링 작업 시간은 전부 부정행위를 애초에 방지하는 데 쓰기로 했습니다. 자금은 유한하며 이미 적발한 부정행위자를 괴롭히는 역할만 하는 게임 기능에 자원을 투입한다면 부정행위 ‘방지’라고 하기 어렵겠죠. 그러나 예산이 5배 늘어난다면 부정행위자에게 벌 청소를 시키는 처분의 도입에 앞장서겠습니다. 부정행위자의 부모와 통화해서 게이머 개발자 면담을 잡겠습니다. 하드웨어 차단은 무슨, 수학여행에 못 가는 겁니다. 항의는 가까운 국회의원에게 하시기 바랍니다.

Q: OSX는 어떻게 되는 거죠?

OSX에는 자동 입력 프로그램 개발을 위한 툴이 많지 않지만, 툴의 ‘필요성’이 커지고 있습니다. 당분간은 Mac에 뱅가드가 없겠지만, 부정행위자가 결국 이를 악용할 때를 대비해 약실에 몇 발의 총알을 남겨두었습니다. 글을 쓰고 들어보니 약실마다 1발의 총알만 들어갈 수 있다고 하네요. 이 가설은 처리량 개선을 근거로 기각하겠습니다. 총알을 2개씩 발사하면 왜 안 되죠? 똑같은 재장전 횟수에 2배의 피해를 입힐 수 있잖아요. 총기 제작자들, 분발하기 바랍니다.

Q: 뱅가드가 외부 툴을 망가뜨리나요?

개발자가 공식 API를 사용(영문 링크)하지 않는다면 계속해서 클라이언트 메모리의 정보를 바로 추출하기 어려울 겁니다. 부정행위 프로그램이 이렇게 정보를 추출하기 때문입니다. 특정 툴을 허용 목록에 올리면 목록에 있는 툴을 부정행위 프로그램이 악용하려고 할 때 해당 툴의 보안을 저희가 책임져야 한다는 큰 우려가 따르므로 모두가 공식 API를 사용하는 쪽을 훨씬 선호합니다. 그래도 클라이언트 메모리를 읽는 툴은 망가지지 않는다고 보장할 수 없습니다. 사실 일부러 최대한 자주 망가뜨리려고 노력하기로 약속합니다.

Q: 부정행위 방지에 인공지능을 활용하면 안 되나요?

플레이어의 행동이 부정행위일 가능성을 예측하는 데 기계학습 모델을 사용하기는 하지만, 게임 서버가 받는 데이터만으로는 플레이어의 입력을 수정하지 않는 ‘정보성’ 부정행위의 감지에 필요한 세밀함을 현재로서는 얻을 수 없습니다. ESP 핵, 맵핵, 미니맵 핵 등은 아예 감지할 수 없습니다. 발로란트와 리그 오브 레전드에서는 정보를 수집하거나 숨기는 능력이 매우 중요해서 이러한 부정행위는 큰 피해를 초래합니다. 그래서 어차피 결국에는 전통적인 부정행위 방지 기법이 필요합니다.

조준 보정 프로그램만 해도 인식률이 그다지 높지 않습니다. 가장 뛰어난 모델조차 서버 측 플레이어 입력만으로는 부정행위의 30~50%밖에 식별하지 못하며 이러한 수치는 재진입 장벽이 전혀 없는 무료 대전 게임에 필요한 수준에 미달합니다. 더 큰 문제는 조준 보정 프로그램 개발자들이 플레이어 신고를 피하고자 ‘인간화’ 기능을 제공하기 시작했다는 점입니다. 지금은 여전히 반 무작위로 임의 행동을 하는 엉뚱한 기능이 대부분이지만, 언젠가는 특히 진취적인 젊은 부정행위자가 진짜 인간 소년처럼 마우스를 움직이는 모델을 학습시키는 데 주말을 할애할 가능성이 있습니다. 솔직히 6달 안에 딱 이러한 내용을 다루는 백서가 나와도 놀라지 않을 겁니다. 제목은 아마 ‘제페토 작전’이겠죠.

Q: 드라이버를 오픈소스로 개발하면 안 되나요?

부정행위 방지는 무기한으로 반복을 거듭해야 하는 싸움입니다. 뱅가드가 예방 차원에서 시스템 무결성을 확인하는 검사는 대부분 일부러 은밀하게 이루어지며 최첨단 기술을 활용합니다. 심지어 일부는 모래성에 불과합니다. 부정행위 방지 체계가 부정행위자에게 주는 혼란에서 오는 수확은 매우 크며 감지 기법을 간편하게 훑어볼 수 있다면 새로운 기법을 만드는 속도가 기존 기법이 무색해지는 속도를 못 따라가겠죠. 오픈소스 부정행위 방지 프로그램(2021년 만우절 장난, 영문 링크)은 전혀 쓸모가 없을 겁니다.

Q: 뱅가드 관련 기술적 문제를 겪으면 어떡하나요?

요새 뱅가드는 귀인 편향에 많이 시달립니다. 확인해 본 버그 대부분은 사실 정확하게 집어내기 어려운 외부 원인 때문에 발생했습니다. 최근에는 레지스트리 설정(DevOverrideEnable)을 수정해서 ‘다른’ 버전의 핵심 윈도우 파일을 실행 중인 모든 프로세스에 로딩할 수 있게 하는 불법 복제 소프트웨어의 배포가 주범이었습니다. 이렇게 해서 무엇을 하려는지는 모르겠지만(웃음), 손상된 윈도우 파일을 발로란트에 로딩하면 뱅가드가 싫어한다는 건 압니다. 손상된 파일은 저희가 조작 여부 검사 기능을 확인할 때 정말 많이 써서 익숙합니다. 또한 어떤 프로그램에 대해 마이크로소프트 디펜더를 비활성화하려고 한다면 주의가 필요합니다. 디펜더는 이름 그대로 윈도우를 보호하는 역할을 하니까요.

아무튼 문제가 발생한다면 고객지원에 문의해 주시기 바랍니다. 그러면 해결해 드리겠습니다.

Q: 뱅가드가 그렇게 좋다면 발로란트에서 여전히 부정행위를 목격할 수 있는 이유는 무엇인가요?

우선 모든 부정행위 프로그램이나 계정에 대해 즉시 조치를 하지는 않습니다. 각각의 이용 제한 조치는 해당 프로그램이 감지되었으니 부정행위 개발자에게 ‘업데이트’가 필요하다는 신호를 보내는 셈이나 마찬가지입니다. 부정행위 ‘군비 경쟁’의 진행 속도를 늦추고자 부정행위가 얼마나 정교하고 부정행위자가 얼마나 잘 보이는지를 고려해 시차를 두고 이용 제한을 부과합니다.

하지만 부정행위를 할 사람은 할 겁니다. 예방 차원의 기능을 기존 장치 구성과 충돌하지 않고 정당한 플레이어에게 피해를 끼치지 않는 선에서 최대한으로 끌어올렸습니다. 어떤 부정행위든 머지않아 감지하겠지만, 그전에 부정행위자가 찍은 영상을 틱톡에 도배해서 광고에서 악성 프로그램으로 이어지는 역대 최고의 클릭률을 기록할 시간은 있겠죠. 그리고 ‘라이브’라는 표시가 있어도 실시간 방송을 보고 있다는 뜻이 아닐 수 있습니다. 쓰레기는 다운로드하지 말아야 합니다.

Q: 뱅가드가 DDoS 공격을 막는 데 도움을 주기도 하나요?

드랍핵의 유형은 (일반적으로) (1) 서버를 노리는 DDoS 재전송 공격, (2) 다른 사용자를 노리는 DDoS UDP 폭주 공격, (3) 기형 서버 패킷 등 3가지로 나뉩니다. 셋 다 영리한 방법은 아니니 감명받을 필요는 없습니다. 뱅가드는 클라이언트 측 부정행위 방지 체계이므로 전자에 필요한 트래픽 추출용 툴을 감지할 수 있으며 보통 후자에 쓰이는 패킷 처리기 대상 훅을 막을 수 있습니다. 가정집을 노리는 DDoS 공격에는 뱅가드가 할 수 있는 게 많지 않습니다. 로컬 소프트웨어는 망 요소의 과부하를 막을 수 없습니다.

Q: 뱅가드를 베트남에서만 활성화하면 안 되나요?

그러면 자동 입력 프로그램 사용자가 전부 필리핀으로 가겠죠.

Q: 뱅가드를 베트남과 필리핀에서만 활성화하면 안 되나요?

그러면 싱가포르로 가겠죠.

Q: 뱅가드를 베트남과 필리핀, 싱가포르에서만 활성화하면 안 되나요?

부정행위는 한 지역에 국한되는 문제가 아닙니다. 라이엇의 서버 대부분에는 지오펜스가 적용되어 있지 않으며 적용되어 있더라도 구글 검색만 하면 터널링에 대해 알아볼 수 있습니다. 부정행위자는 국경을 가리지 않으며 이런 사고실험을 참아주셔서 격렬한 감사의 마음을 전해드리고 싶습니다.

Q: 개인적으로 뱅가드와 안 맞으면 어떡하나요?

이해하며 이러한 결정을 전적으로 존중합니다. 가까운 미래에는 부가 소프트웨어 없이 게임을 실행하는 플랫폼 자체에서 개발자가 찾는 보안 기능이 제공되기를 기원합니다. 하지만 라이엇의 개인정보 보호가 유일한 불만 대상이라면, 게임 클라이언트를 실행하는 것과 뱅가드를 실행하는 것은 완전히 똑같다는 말씀을 드리고 싶습니다. 유저 모드에서도 데이터를 추출할 수 있으며 저희는 모두 같은 스튜디오에서 같은 목표를 추구하는 엔지니어입니다. 개인정보 수집은 저희의 목표와 전혀 무관합니다. 라이엇을 신뢰할 수 없다면 라이엇의 소프트웨어를 실행하지 않으면 됩니다.

Q: 뱅가드가 수집하는 개인정보는 무엇이 있나요?

라이엇은 게임의 실행과 보안에 필요한 정보만 수집합니다. 추가 데이터는 추가 위험을 의미할 뿐이며 목적 달성에 필요한 최소한의 데이터만 원합니다. 로컬 차원에서 뱅가드에는 보호 기능을 위한 시스템 훅이 존재하지만, 뱅가드는 사용자의 파일이나 문서를 내보내지 않습니다. 악성 프로그램 방지 체계와 부정행위 방지 체계가 대부분 그렇듯 서명 검사 기법을 활용해 메모리에 있는 일련의 바이트가 알려진 부정행위 프로그램과 일치하는지 판단합니다. 검사 결과는 일치 여부(해당 바이트가 있었는지 없었는지)만 나타내며 다른 검사도 이러한 형식으로 진행하려고 합니다. 예를 들어 ‘현재 DMA 장치 사용 여부’, ‘방금 게임에 입력을 보내려고 시도한 프로그램이 있는지’ 등의 검사는 2진수 응답만 전송합니다(다만 후자의 경우 입력을 시도한 프로그램의 이름도 포함합니다).

다른 검사의 경우 사후 검토를 위해 스냅숏이 필요한데 여기에 개인식별정보가 들어갔을 가능성이 있습니다. 예를 들어 리그 오브 레전드에 로딩되는 모든 라이브러리의 파일 경로를 기록하는데 (해당 파일이 사용자 폴더에 있는 경우) 여기에 사용자 이름이 들어갈 수 있습니다. 이러한 정보를 기록하는 이유는 부정행위 프로그램을 발견한 후 (향후 위반자뿐만 아니라) 과거에 해당 프로그램을 이미 사용한 부정행위자를 적발하기 위함입니다. 이렇게 수집한 데이터는 14일 동안만 저장소에 ‘살아’ 있으며 부정행위 감지가 아닌 다른 용도로는 절대 사용하지 않습니다. 뱅가드가 무엇을 살펴보는지를 일일이 알려드리면 가장 신경 써야 할 부분이 부정행위자에게 드러날 테니 그럴 수 없습니다. 부정행위 방지에 성공하려면 약간의 숨김은 필요하지만, 이로써 데이터를 수집하는 의도가 더 명확해졌기를 바랍니다.

Q: mirageofpenguins 님을 고통의 차원으로 돌려보내는 주문은 무엇인가요?

아스모데우스의 질문은 답하지 않겠습니다.



  • 클립보드에 복사됨

관련 글
관련 글