게시 날짜 : 27, 2025
앱 보안 격차 해소: 기본 보안 관행을 넘어서
보안 전문가와 애플리케이션 보호에 대해 이야기할 때 우리는 다음과 같은 다양한 피드백을 받습니다.
"우리는 관심사 분리를 기반으로 시스템을 설계했고, 안전한 코딩 방식을 사용하며, SAST/DAST 테스트를 실시하고 있으므로 문제 없습니다."
에
"다른 모든 보호 조치에도 불구하고, 모바일 앱의 수정된 버전이 백엔드 시스템에 위협이 된다는 사실을 깨닫고, 그 위협을 완화하고 전반적인 보안 태세를 강화하기 위한 새로운 조치를 시행했습니다."
귀하의 감정이 첫 번째 진술에 더 가깝다면 다음을 참조하시기 바랍니다. 이 문서 안전하게 개발되고 테스트된 앱조차도 어떻게 무기화되어 고객에게 가장 큰 가치를 제공하는 백엔드 시스템을 공격할 수 있는지 설명합니다. 이미 애플리케이션이 이러한 필수 모범 사례 이상으로 보호되어야 한다고 생각하신다면, 여기에서 계속 읽어주세요.
애플리케이션을 리버스 엔지니어링 및 변조로부터 보호하는 몇 가지 주요 방법이 있습니다. 이 글에서는 애플리케이션이 빌드되어 해당 앱 스토어에 제출될 준비가 된 후 적용되는 보호 방법을 살펴보겠습니다. 여기서 고려하는 방법은 래퍼, SDK, 그리고 코드 삽입입니다. 먼저 이러한 기술을 측정할 수 있는 표준 보안 프레임워크를 간략하게 소개합니다.
OWASP MASVS 복원력 개요
OWASP 모바일 Application Security 검증 표준(MASVS)은 4가지를 설명합니다. 회복력 범주 다양한 보안 위협으로부터 모바일 애플리케이션을 강화하는 것을 목표로 합니다. 이러한 범주는 공격에 직면하더라도 애플리케이션의 보안을 유지하는 데 중점을 둡니다. 이러한 범주는 모바일 기기에만 국한되지만, 최종 사용자 기기에서 인터넷으로 실행되는 모든 앱에 유용한 프레임워크 역할을 합니다. 이러한 복원력 지침을 준수함으로써 개발자는 리버스 엔지니어링에 대한 내성이 뛰어나고 사용자 데이터를 더욱 효과적으로 보호하는 애플리케이션을 개발할 수 있습니다.
- MASVS-RESILIENCE-1: 앱은 플랫폼의 무결성을 검증합니다.
- MASVS-RESILIENCE-2: 앱은 변조 방지 메커니즘을 구현합니다.
- MASVS-RESILIENCE-3: 앱은 정전 방지 분석 메커니즘을 구현합니다.
- MASVS-RESILIENCE-4: 이 앱은 동적 분석 기법을 구현합니다.
이제 보호 기술을 자세히 살펴보겠습니다.
래퍼
래퍼는 애플리케이션에 단일 방어선을 제공하는 애플리케이션 보호 유형입니다. 래퍼를 적용할 때, 애플리케이션을 인코딩하고, 해당 디코딩 루틴을 추가한 다음, 원래 애플리케이션보다 먼저 디코딩 루틴을 실행합니다. 코드가 재작성되므로 이러한 유형의 보호는 자체 수정 코드가 허용되는 플랫폼에서만 사용할 수 있습니다.
이러한 유형의 보호의 이점은 정적 분석을 직접 수행할 수 없다는 것입니다. 래퍼 아래에 있는 코드는 무의미한 바이트 시퀀스로 변환되었기 때문에 디스어셈블러, 디컴파일러, 그리고 사용자는 해당 코드를 이해할 수 없습니다. 따라서 래퍼는 OWASP MASVS-RESILIENCE-3 제어를 충족합니다. 그러나 래퍼에 의해 트리거되는 디코딩 루틴 자체는 정상 코드이므로 디스어셈블, 디컴파일 및 일반적인 이해가 가능하며, 이러한 루틴의 존재 자체가 래퍼가 사용되었음을 나타내는 위협 행위자에게 단서가 됩니다.
애플리케이션에 대한 정적 분석을 수행할 수는 없지만, 위협 행위자는 애플리케이션을 시작("실행")하고 원본 코드가 복구될 때까지 기다리기만 하면 됩니다. 그런 다음 원본 코드를 복사하여 디스어셈블하거나 디컴파일할 수 있습니다. 따라서 이러한 보호 기능은 초보 위협 행위자도 쉽게 무력화할 수 있습니다.
그렇다면 기업들은 왜 래퍼를 판매하고, 앱 개발자들은 왜 래퍼를 사용할까요? 래퍼는 구현이 매우 쉽고 정적 분석에 대한 장벽을 제공합니다. 구현이 간편하기 때문에 기업들은 애플리케이션 보안 시장에 매우 빠르고 저렴하게 진입할 수 있습니다. 이를 통해 기업들은 앱 보안에 대한 최소한의 보안만 필요한 고객을 공략할 수 있습니다.
앱을 보호하는 데 걸리는 시간은 매우 짧으며, 일반적으로 구성할 필요가 없습니다. 그러나 이러한 보호 기능은 모든 보호 기능이 동일한 디코딩 루틴을 사용하기 때문에 BORE(Break Once Run Everywhere) 공격에 취약할 수 있습니다.
어느 정도 보호가 되어도 보호가 없는 것보다 낫지만, 더 나은 보호가 가능합니다.
SDK를
보안 수준이 가장 낮은 솔루션에서 더 안전한 솔루션으로 발전해 나가는 과정에서, 애플리케이션 보안 발전의 다음 단계는 보안 SDK 모델입니다. 이 맥락에서 SDK는 하나 이상의 위협에 대한 보호 및 탐지 기능을 포함하는 독립적인 코드 모듈입니다. 예를 들어, 보안 SDK는 루팅되거나 탈옥된 기기를 탐지하여 플랫폼 무결성을 보장하고, Frida와 같은 디버거 또는 분석 도구를 탐지하여 동적 분석을 방지하는 로직을 포함할 수 있습니다.
빌드/보호 시점에 보호 SDK는 보호 대상 앱에 바인딩됩니다. 래퍼 솔루션과 마찬가지로 SDK는 애플리케이션의 진입점에 자신을 삽입하여 백그라운드에서 탐지를 수행하는 하나 이상의 스레드를 시작할 수 있습니다. 그 후에는 SDK와의 상호 작용 없이 원본 코드가 실행됩니다.
일반적으로 런타임 시 원본 코드는 수정되지 않으므로 이 솔루션의 변형 버전은 모든 플랫폼에서 사용할 수 있습니다. 하지만 원본 코드가 수정되지 않기 때문에 동적 분석에는 복원력이 있을 수 있지만, 디스어셈블러와 디컴파일러를 통한 정적 분석에는 취약할 수 있습니다. 이 경우의 약점은 보호 SDK를 제거하면 앱의 나머지 부분은 보호 메커니즘의 이점 없이 실행될 수 있다는 것입니다.
더 많은 로직이 포함되기 때문에 일반적으로 기업은 SDK 기반 보호 제품을 개발하는 데 더 많은 시간과 비용이 필요하지만, 코드 삽입 제품에 필요한 만큼은 아닙니다. 이 경우 보호 단계도 간단하며 일반적으로 구성이 필요하지 않습니다.
따라서 SDK는 MASVS-RESILIENCE-1, 2, 4를 충족합니다. 그러나 래퍼와 마찬가지로 보호 SDK도 BORE 공격에 취약한 경우가 많습니다. 추가 메커니즘을 사용하여 SDK를 앱에 바인딩할 수는 있지만, 일반적으로 애플리케이션 분석이 필요하므로 제품 개발이 더 어려워지고 바인딩 오류가 발생할 가능성이 있습니다.
코드 삽입
코드 삽입 보안 제품은 이 세 가지 기법의 정점입니다. 앞의 두 사례 모두 앱 실행 초기에 보호 코드가 실행되므로, 악성코드를 발견하고 분석하고 무력화하기가 더 쉽습니다.
코드 주입 시나리오의 핵심 아이디어는 단순히 SDK를 래핑하거나 추가하는 것이 아니라, 애플리케이션을 분석하여 제어 흐름을 완전히 이해하고, 애플리케이션 전체에 보호 메커니즘을 추가하여 보호된 앱 자체가 실행되는 동안 백그라운드에서 실행되도록 하는 것입니다. 보호 메커니즘 코드가 탈옥 또는 루팅된 기기에서 실행되는 것을 방지하기 위한 플랫폼 무결성 검사, 난독화와 같은 정적 분석 메커니즘, 디버거와 동적 계측 툴킷을 감지하기 위한 동적 분석 메커니즘, 실행 중인 앱이 제공된 앱과 동일한지 확인하기 위한 변조 방지 메커니즘을 포함할 수 있습니다.
그리고 이러한 기술은 코드 전체에 분산되어 있기 때문에 찾기가 훨씬 어렵고, 위협 행위자는 이를 물리치기 위해 훨씬 더 많은 시간과 노력을 투자해야 하지만, 종종 헛수고일 뿐입니다.
이 기술의 또 다른 장점은 보호 메커니즘이 코드에 주입되면 원하는 만큼 반복적으로 스스로를 보호할 수 있다는 것입니다. 앱 소유자는 충분히 큰 규모의 보호 메커니즘 네트워크를 구축함으로써, 스스로를 인식하고 가시적 또는 비가시적 행동으로 반응하여 잠재적 위협 행위자의 퍼즐 풀이를 저지하는 퍼즐을 만들어 앱의 보안을 크게 강화할 수 있습니다.
또한 보호 코드가 애플리케이션 전체에 분산되어 있기 때문에 효과적으로 숨겨져 있어 일부 탐지 기능은 보안 제품에서 허용하는 경우 은밀하고 사용자 지정 작업을 수행하여 앱의 동작에 미묘한 변경 사항을 적용할 수 있습니다. 이를 통해 위협 행위자는 이를 전혀 놓칠 수 있으며, 이로 인해 좌절감이 커지고 목표 달성이 어려워질 수 있습니다.
위협 행위자의 좌절감을 조성하면, 그들은 강력하게 보호되는 애플리케이션에서 멀어지고, 보호되지 않거나 보안 수준이 낮은 애플리케이션을 찾게 될 수 있습니다. 적을 견제할 필요는 없습니다. 그저 항복하고 다른 곳으로 이동하기만 하면 됩니다.
비교 분석을 완료하기 위해 코드 주입 보호 도구는 가장 포괄적인 보호 기능을 제공하며 정적 및 동적 분석에 대한 보호 기능을 제공하여 MASVS 복원력 요구 사항 4가지를 모두 충족합니다.
The Digital.ai 차이
이러한 보호 기법들을 비교해 보면 한 가지 분명한 사실이 드러납니다. 어떤 단일 방법도 완벽한 보호를 제공할 수 없습니다. 진정한 애플리케이션 복원력을 구축하려면 소프트웨어 수명 주기 전반에 걸쳐 조율된 방어와 자동화가 필요합니다. Digital.ai Application Security 해당 솔루션을 제공합니다.
- 릴리스 파이프라인을 자동화하고 복잡한 툴체인을 통합하는 단일 플랫폼입니다. 앱 배포를 통합하고, 기존 도구를 통합하고, 어떤 환경에서든 확장할 수 있습니다.
- 확장 가능한 자동화된 모바일 앱 테스트 및 보안을 제공합니다. 더욱 향상된 자동화된 테스트 및 앱 보호 기술을 통해 안전하고 고품질의 앱을 제공합니다.
- 모든 소프트웨어 제공 워크플로우에 내장된 AI, 인텔리전스, 규정 준수 및 거버넌스. 데이터를 중앙 집중화하고, 프로세스를 최적화하고, 더욱 빠르고 효율적인 인사이트를 확보하세요. safer 소프트웨어 제공