2014년 8월 13일

네트워크 관련 취약점 찾기

저자: * Joe Graf

최근 기어즈 오브 워 팬과 이메일을 통해 시리즈 세 작품의 네트워킹 품질의 차이점에 대한 이야기를 나누었습니다. 여기서 네트워킹 품질 향상 측면에서 한 가지 짚어볼 수 있는 부분은, 저희가 언리얼 엔진에 내장된 네트워크 시뮬레이션 기능을 사용했다는 점입니다. 이러한 기능을 통해 다양한 네트워크 환경속에서 협동 / 경쟁 멀티플레이어 게임을 테스트해 볼 수 있었습니다. 이는 열악한 환경에서도 최선의 결과를 내는 것은 물론, 네트워크 관련 취약점 관련해서, 출시 후 커뮤니티에서 보고받은 내용에 대해 반응하기 보다는 출시 전 QA 랩에서 발견하는 것이 그 목표였습니다.

엔진에서 사용할 수 있는 세팅은 이렇습니다:

세팅

설명

PktLag

패킷 전송을 지정된 밀리초만큼 지연시킵니다.

PktLagVariance

패킷 전송 지연 시간에 약간의 가변성을 둡니다. 지정된 밀리초만큼 기간을 증감시킵니다.

PktLoss

패킷 손실 시뮬레이션을 위해 나가는 패킷을 지정된 확률로 버립니다.

PktDup

지정된 확률만큼 중복 패킷을 전송합니다.

PktOrder

켜면 패킷을 순서 없이 전송합니다. (1 = 켜짐, 0 = 꺼짐)

이 세팅을 설정하는 방법은 1. 명령줄 인수, 2. 게임 내 콘솔 실행 명령, 3. 엔진 INI 파일, 총 세 가지입니다. 명령줄에서는 다음과 같이 지정합니다:

<SettingName>=<Value>

콘솔에서는 이렇습니다:

Net <SettingName>=<Value>

DefaultEngine.ini 파일을 통한 설정은, INI 파일에 다음 섹션을 추가한 다음 테스트하고자 하는 값을 바꿔줍니다:

[PacketSimulationSettings]

PktLag=0

PktLagVariance=0

PktLoss=0

PktOrder=0

PktDup=0

기어즈 오브 워 개발 도중 매일 빌드에 시뮬레이션 세팅 부분을 만들어, 각각의 랜 기반 플레이테스트에 실제와 같은 네트워크 조건을 구현할 수 있었습니다. 프로그래머 전용 협동 / 경쟁 플레이테스트에는 극한 (왕복 핑 500, 패킷 손실 10% 이상 등) 세팅을 사용하기도 했습니다. 이러한 테스트는 즐기기 위한 게임 플레이용이 아니라, 열악한 조건에서만 나타나는 네트워크 취약점이나 버그를 찾기 위함이었습니다. 이러한 조건이 자연 발생하지는 않을 것 같다 해도, 네트워크 취약점을 악용하는 치터를 방지하기 위한 테스트로는 최선입니다.

커뮤니티에서 취약점을 찾아 공유해 줄 수는 있지만, 이러한 문제 유형에 수동적으로 반응하기 보다는 능동적 대응을 하는 것이 훨씬 낫습니다. PR 및 커뮤니티 관리 팀에서 고마워 할 것입니다.

그러면 즐거운 취약점 사냥 되시길!