안녕하세요 LIAPP TEAM 입니다:)
날씨가 따뜻해지고 벚꽃이 피니 봄이 왔네요~
오늘은 오랜만에 LIAPP의 주요 기능들에 대한 이야기를 해볼까 합니다.
리앱은 모바일 앱의 다양한 해킹으로부터 보호하기 위해 강력하고 유용한 보안 기능을 제공하고 있는데요.
이번 포스트에서는 유니티(Unity)로 개발된 앱을 보호하기 위한 리앱의 Unity protection 기능에 대하여 사용 방법과 효과를 이야기 해보겠습니다. 리앱의 유니티 보호(Unity Protection) 기능은 ‘CODE 보호’ 탭에서 설정할 수 있고, 'Unity Protection'은 Unity 엔진을 이용하여 개발된 모바일 앱에 포함된 중요한 엔진 파일 보호를 목적으로 합니다.
Unity는 간편한 앱 제작과 멀티 플랫폼 지원기능으로 손쉬운 개발을 할 수 있도록 제공된 통합 개발 환경이인데요.
Unity를 이용하여 게임 뿐만아니라 일반 앱도 제작이 가능하지만 현재 가장 많이 사용되는 곳은 모바일 게임 장르입니다.
이처럼 Unity는 명확한 장점으로 많은 개발자분들이 Unity 엔진을 이용하여 게임을 개발하게 되는 동기를 제공하고 있습니다.
하지만 Unity 엔진을 이용하면 개발이 손쉬운 만큼 다양한 취약점도 함께 존재하게 되는데, 취약점에 관해 설명하기에 앞서 Unity에서 제공하는 두 가지 빌드 방법에 대하여 설명드려보겠습니다:)
1. MONO mode
· 다양한 플랫폼 지원을 위해 Unity에서는 C# 코드로 개발
· C# 코드를 IL(Intermediate Language) 코드로 변환
· 빌드 시 Assembly-CSharp.dll (.NET framework based) 생성
(중요 로직은 Assembly-CSharp.dll 및 특정 파일에 포함)
2. IL2CPP mode
· 다양한 플랫폼 지원을 위해 Unity에서는 C# 코드로 개발
· C# 코드를 IL(Intermediate Language) 코드로 변환
· IL 코드를 C++ 형태로 변환
· 빌드 시 libil2cpp.so(Binary based) 생성
(중요 로직은 libil2cpp.so 및 특정 파일에 포함)
Unity는 현재 위와 같이 두 가지의 빌드 방법을 제공하고 있는데요.
전통적으로 제공하였던 MONO mode가 64bit를 지원하기 어려운 문제점을 개선하기 위해 IL2CPP 모드를 개발하였고, 현재 Unity에서도 IL2CPP를 권장하고 있습니다.
이렇게 개발이 완료된 MONO mode와 IL2CPP mode 파일은 아래 그림과 같이 Decompile tool을 이용하여 디컴파일이 가능하며 이를 이용하여 게임 내 중요 로직을 쉽게 분석할 수 있는 취약점을 가지고 있습니다.
위의 화면처럼 노출된 게임 내 로직이 어떤 기능을 하는지 파악할 수 있는데요.
이를 악의적으로 이용하여 앱 내의 취득할 수 있는 재화(능력치, 경험치, Game money...)를 무단으로 취할 수 있어 서비스의 중대한 피해사례가 지속해서 증가하고 있습니다.
앱은 리앱의 Unity protection 통하여 서비스에서 가장 중요하게 보호되어야 할 특정 중요한 로직 (게임 내 능력치, 경험치 및 재화 취득, 결제 로직, Game money...)을 배포된 앱 파일을 통하여 유출되지 못하게 함으로써 앱 서비스 중 발생할 수 있는 치명적인 사고를 미연에 방지할 수 있습니다.
또한 이러한 로직은 컴파일된 앱 파일(apk)를 기반으로 적용되기 때문에 개발 시 사용한 언어 및 프레임워크와 관계없이 apk 또는 aab 형태로 컴파일된 상태라면 모두 적용이 가능합니다.
감사합니다!