Last Updated on 6월 14th, 2023, By
 In 앱실링 블로그

모바일 애플리케이션이 점점 더 복잡해짐에 따라 애플리케이션 보안에 대한 필요성이 더욱 높아지고 있습니다. 스마트폰이 우리 삶에 깊게 자리잡으면서 중요 개인정보를 저장하는 저장소가 되었습니다.

스마트폰이 해커의 주요 표적이 되면서,  OWASP는 코드 위변조를 모바일 애플리케이션 보안 위험성 상위 10개 중 8위로 선정했습니다.

이 문서에는 코드 위변조에 대한 설명과 코드 위변조가 모바일 애플리케이션 보안에 미치는 영향에 대해 설명하고 있습니다.

코드 위변조란?

코드 위변조란 악의적인 의도로 모바일 애플리케이션의 소스 코드를 변조하고 원본을 모방하도록 재패키징하는 것을 뜻합니다. 그런 다음 이러한 앱을 타사 앱 스토어에 게시하여 스마트폰 사용자가 위험을 인식하지 못한 채 앱을 설치할 수 있도록 합니다.

해커는 사용자들을 속여 코드 위변조 된 앱들을 본인들의 기기에 설치하도록 유인하는 피싱 공격을 사용하기도 합니다.

해커들은 개발자들이 개발한 사이버 보안을 우회하거나 뚫기 위해 꾸준히 노력하고 있습니다. 가장 인기 있는 두 개의 모바일 앱 스토어인 Google Play와 Apple의 App Store도 자신들의 보안 검사를 통과하여 수백만 번 다운로드 된 악성 앱들이 상당 부분 존재했습니다.

모바일 개발자로서 애플리케이션의 소스 코드에 코드 변조 방지 장치를 적용하는 것은 우선순위가 높아야 합니다.

코드 위변조는 왜 위험할까?

모바일 코드 위변조는 앱 개발자와 애플리케이션 퍼블리셔에게 심각한 결과를 초래할 수 있습니다. 만약 효과적인 코드 위변조 위험 대비책이 고려되지 않는다면, 지적 재산의 손실을 야기할 수 있습니다.

당신의 브랜드를 사칭하여 운영되는 악성 버전이 민감한 사용자 데이터에 접근해 그 정보를 금융 및 신원 사기에 이용할 수 있고, 이는 기업(브랜드) 평판에 손상을 끼칠 수 있습니다.

다음은 부적절한 코드 위변조 위험 대비책으로 인해 위조된 악성 앱이 미칠 수 있는 영향에 대한 시나리오입니다.

  • 위조된 은행 앱은 원본 은행 앱을 모방하여 사용자의 금융 정보를 도용합니다.
  • 악성 게임 앱은 보안검사를 우회한 뒤 인앱 결제를 통해 사용자의 돈을 빼돌립니다.
  • 악성 앱은 합법적으로 보이도록 재패키징된 뒤 멀웨어를 심어 백엔드 서버 혹은 전체 IT 시스템에 대한 접근 권한을 얻습니다.

코드 위변조 취약성 척도

엄밀히 말하면 거의 모든 모바일 애플리케이션은 코드 위변조 위험에 노출되어 있습니다. 모바일 애플리케이션은 웹 애플리케이션과 달리 안전한 보안 환경에서 실행되지 않기 때문에 해커는 코드 환경을 쉽게 변경하고 모바일 애플리케이션을 조작할 수 있습니다.

앱이 항상 위변조 위험에 노출되어 있지만 해커들이 코드를 리버스 엔지니어링하고 변조하는 것을 막을 수 없는 것은 아닙니다. 여기서 핵심은 모바일 애플리케이션의 중요성과 코드 위변조가 비즈니스에 미치는 영향을 파악한 다음, 코드 위변조 위험 대비책을 위한 추가 개발 시간과 비용을 추가로 투자할 가치가 있는지를 결정하는 것입니다.

코드 위변조의 영향

모바일 코드 위변조가 미치는 전반적인 영향은 보유 혹은 개발하고 있는 애플리케이션의 유형에 따라 달라집니다. 금융 및 은행 업무용 앱의 경우 게임 혹은 엔터테인먼트용 애플리케이션 보다 훨씬 더 큰 영향을 끼칠 수 있습니다.

앱 코드 위변조의 영향은 해커의 의도 및 능력에 따라 작은 문제부터 시작해 매출 손실, 평판 하락 등의 심각한 문제를 야기할 수 있습니다.

코드 위변조 예시

코드 위변조가 어떤 결과를 초래할 수 있는지 극단적으로 보여주는 두가지 예시를 살펴보겠습니다.

1. 게임 앱

만약 무료 모바일 게임을 플레이해본 적이 있다면, 대부분의 앱들이 인앱 구매를 해야지 성공적으로 플레이할 수 있게 설계되어 있다는 것을 알 수 있습니다.

해커들은 게임이 얼마나 중독성이 강한지를 알고 있으며, 이러한 현상을 악용합니다. 그들은 게임의 원본 소스 코드를 리버스 엔지니어링하고 조건부 우회를 통해 인앱 결제가 성공적으로 이루어진 것처럼 확인되도록 재패키징합니다.

또한 그들은 스파이웨어를 코드에 삽입합니다. 표면적으로는 최종 사용자가 게임의 유료 기능 패키지를 무료로 즐기는 것처럼 보이지만, 백그라운드에서는 해커가 스파이웨어의 도움으로 사용자 신원 정보 및 다른 민감한 개인정보를 빼내어 도용할 수 있습니다.

2. 은행 앱

여기서부터 문제가 심각해집니다. 은행 앱은 일반적으로 해커가 이용할 수 있는 민감한 데이터를 처리합니다. 해커는 위조된 앱을 만들어 사용자의 개인 식별 정보 (PII)와 사용자 이름/비밀번호를 타사 사이트로 전송할 수 있습니다.

2022년에 인도 최대 국립은행의 모바일 앱 YONO가 사기꾼들에게 악용되어, 사용자 인증 정보를 탈취당한 후 이를 이용해 사용자 예금을 빼돌리는 데 사용된 사건이 발생했습니다.

코드 위변조를 어떻게 방지할 수 있을까?

그 어떤 애플리케이션도 완벽한 변조 방지는 불가능하지만, 변조 위험을 완화하기 위한 조치를 취할 수는 있습니다. 핵심은 다양한 코드 위변조 위험 방지 기술을 사용하는 것입니다. 여기에는 다음과 같은 방법이 포함됩니다.

난독화 기술을 통한 코드 복잡성 향상:

난독화를 사용하면 해커가 앱의 코드 흐름과 로직을 이해하기 어렵게 만들어 악용될 수 있는 공격 벡터의 수를 줄일 수 있습니다. 완벽한 방법은 아니지만 해커가 공격을 실행하는 데 필요한 시간을 크게 늘려 모바일 개발자가 대응할 수 있는 충분한 시간을 확보할 수 있습니다.

다음은 모바일 개발자가 사용해야 하는 몇 가지 난독화 기술입니다:

  • 런타임 조작 완화하기: iOS에서 개발자는 C/C++ 라이브러리를 사용하여 코드 복잡성을 향상시킬 수 있으며, 이는 Objective-C와 쉽게 통합되어 런타임 조작의 변화를 완화하는 데 도움이 됩니다. 안드로이드에서는 다른 프로그래밍 언어의 라이브러리를 호출하기 위해 JNI를 사용하지 않도록 합니다.
  • 추적 검사 사용하기: 프로세스 상태 플래그 모니터링, Ptrace 공격 반환값 비교 또는 프로그램 타임스탬프 비교를 통해 디버거나 디버깅 도구로 인해 앱이 추적 되는 것을 개발자에게 경고할 수 있습니다.
  • 바이너리 제거하기: 하위 수준 앱 기능에서 바이너리를 제거하면 해커가 앱을 리버스 엔지니어링하기 어렵게 만들 수 있습니다.

단순 로직 피하기:

앱에서 사용되는 단순 로직 테스트는 공격에 더 취약합니다. 세션을 신뢰할 수 없을 경우, 권한을 적용한 뒤 데이터 복호화(암호화가 해석되는 것을 방지하는 것)를 방지하는 코드를 작성하여, 세션을 신뢰할 수 있을 때까지 인증을 사용하여 데이터를 보호합니다.

코드 위변조 방지 기술 사용하기:

해커가 앱을 리버스 엔지니어링하지 못하도록 방지하면 코드 위변조에 대한 취약성이 감소합니다.

다음은 사용할 수 있는 몇 가지 기술입니다.

  • 체크섬 사용: 복잡한 체크섬은 검사를 비활성화하거나 코드를 변경하려는 해커의 시도를 탐지할 수 있습니다.
  • 루팅 또는 탈옥 감지: 모바일 애플리케이션이 탈옥 또는 루팅된 환경에 있는지 감지하는 탐지 알고리즘을 사용합니다.
  • 디지털 서명 교차 확인: 공유 암호화 라이브러리의 서명과 키는 항상 교차 확인 및 검증해야 합니다.
  • 함수 호출자 확인: 소스코드에 추가 권한 부여 및 검증 프로토콜을 추가하여 의도된 함수 호출 흐름이 변경되는 것을 방지할 수 있습니다.

또한 코드 위변조가 발견될 시 사용자의 데이터 및 기타타 민감한 정보를 삭제하는 코드를 추가할 수 있습니다.

마치면서

100% 안전한 애플리케이션은 없습니다. 하지만, 모바일 애플리케이션 개발자로서, 이러한 언급된 위험을 완화할 수 있는 권한은 전적으로 당신에게 달려있습니다. 프로젝트 매니저는 달성 불가능한 기한에 쫓기다 보면 “문제가 없다면 건드리지 마라”라는 원칙을 선택할 수밖에 없을 수 있습니다. 안전한 모바일 애플리케이션 개발의 책임은 앱 개발자뿐만 아니라 전체 SDLC의 관리자에게도 있습니다. 애플리케이션이 변경되지 않도록 개발 단계부터 해당 코드가 출시될 때까지 필요한 점검 및 안전 조치를 취하여 코드 변조가 발생하지 않도록 해야 합니다.

Dustin Hong
Dustin Hong
Dustin은 잉카엔트웍스의 앱실링 비즈니스 개발을 이끌고 있습니다. 그는 사이버 보안, IT, 컨텐츠 및 애플리케이션 보안 분야의 소프트웨어 개발과 혁신에 많은 관심을 가지고 있습니다. 또한 사이버 보안 세계에서 주요 사건의 대상, 이유 및 방법에 대해 다양한 사람들에게 공유하고 토론하는 것을 좋아합니다. 업계 동향 및 모범 사례에 대한 그의 견해는 기사, 백서에 실려있으며, 여러 보안 행사에서 유사 주제로 발표를 하였습니다.