코드를 작성하여 유닛을 제어하는 게임 Screeps에서 심각한 보안 취약점이 발견되었습니다. 재미와 보안 사이의 딜레마를 살펴봅니다.
Screeps란?
Screeps는 JavaScript로 AI를 작성하여 게임 유닛을 제어하는 MMO 전략 게임입니다. 플레이어가 작성한 코드가 서버에서 실행됩니다.
발견된 취약점
플레이어가 작성한 악성 코드가 샌드박스를 탈출하여 서버에서 임의 코드를 실행할 수 있는 RCE(Remote Code Execution) 취약점이 발견되었습니다.
기술적 세부사항
- VM2 샌드박스의 우회 가능
- 프로토타입 오염(Prototype Pollution) 활용
- 서버 측 Node.js 환경에 접근
교훈
- 사용자 코드 실행은 위험: 완벽한 샌드박스는 없습니다
- VM2는 폐기됨: 보안 문제로 더 이상 유지보수되지 않습니다
- 대안: isolated-vm, WebAssembly, 또는 별도 프로세스 격리
개발자 권고
사용자 코드를 실행해야 한다면, 컨테이너 격리나 WebAssembly 런타임 사용을 고려하세요. 신뢰할 수 없는 코드는 항상 최악의 경우를 가정해야 합니다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Categories: