Computer >> 컴퓨터 >  >> 스마트폰 >> 스마트폰

안드로이드 사용자가 '동적 코드 로딩'에 주의해야 하는 이유

안드로이드 앱을 사용할 때 대부분의 사람들은 화면 뒤에서 어떤 일이 일어나는지 깊이 생각하지 않습니다. 하지만 '동적 코드 로딩(dynamic code loading)'이라는 프로그래밍 기법은 보안상 위험을 초래할 수 있습니다. 이 글에서는 동적 코드 로딩이 무엇인지, 왜 주의해야 하는지 자세히 살펴보겠습니다.

동적 코드 로딩이란?

애플리케이션 개발에서 앱을 빌드할 때 사용되는 전체 소스 코드를 '코드베이스(codebase)'라고 부릅니다. 동적 코드 로딩은 앱이 코드베이스 외부의 콘텐츠를 가져와 실행 중, 즉 런타임(runtime)에 실행할 수 있도록 하는 기능입니다.

이 방식은 앱 용량을 줄이는 데 도움이 됩니다. 일반적으로 코드를 APK(Android 패키지 키트)에 직접 포함시키지 않고 원격 서버에 저장해 두었다가 필요할 때 불러오는 방식이 많이 사용되기 때문입니다.

APK는 안드로이드에서 앱을 배포하고 설치할 때 사용하는 파일 형식으로, 호환되는 기기에서 앱이 정상적으로 작동하는 데 필요한 모든 구성 요소를 담고 있습니다. 개발자 입장에서 동적 코드 로딩은 앱 사용성을 개선하는 등 여러 가지 장점을 제공합니다.

예를 들어, 앱이 무료 버전 사용자와 프리미엄 버전 사용자에게 서로 다른 콘텐츠를 보여줘야 한다면, 동적 코드 로딩을 활용해 APK 용량을 늘리지 않고도 사용자 등급에 맞는 올바른 콘텐츠를 표시할 수 있습니다.

또한 동적 코드 로딩을 사용하면 사소한 변경 사항만 포함된 새로운 앱 버전을 손쉽게 배포할 수 있습니다. 사용자는 별도로 다운로드하지 않고도 최신 버전을 바로 이용할 수 있습니다.

그러나 이러한 장점에도 불구하고, 동적 코드 로딩은 안드로이드 앱 보안과 관련된 위험을 내포하고 있습니다.

악성 앱은 동적 코드 로딩을 자주 활용

2019년 발표된 한 연구 논문의 저자들은 악성 안드로이드 앱들의 공통점을 분석했습니다. 그들은 선행 연구 결과를 인용하며, 동적 코드 로딩이 위험한 앱의 대표적인 특징 중 하나라고 지적했습니다.

실제로 한 조사에서 분석된 86,798개 앱 중 약 2만 개가 동적 코드 로딩을 사용하고 있었던 것으로 나타났습니다.

추가 분석에 따르면, 공격자들은 악성 앱의 핵심 기능을 별도의 독립 라이브러리에 넣어 두었다가 동적 코드 로딩으로 실행합니다. 이러한 방식은 앱의 악성 행위를 은폐해 보안 시스템의 탐지를 어렵게 만듭니다.

구글의 멀웨어 유형 관련 문서에서도 동적 코드 오용이 '백도어(backdoor)' 유형으로 분류될 수 있다고 명시하고 있습니다. 구글은 백도어 멀웨어를 기기에서 잠재적으로 유해한 원격 제어 동작을 실행하는 악성코드로 정의하며, 동적 코드 로딩을 통해 앱이 문자 메시지를 추출할 수 있는 사례를 예로 들었습니다.

다만 구글은 코드 실행이 명시적으로 악성 행위를 수행하는지 여부를 기준으로 판단한다고 밝혔습니다. 그렇지 않은 경우에는 임의 코드 실행을 개발자가 수정해야 할 취약점으로 간주합니다.

문제는 위험한 앱의 경우입니다. 이런 앱에서 발생하는 임의 코드 실행은 해커가 대상 기기에서 원격으로 명령을 내릴 수 있게 허용합니다.

연구진이 발견한 동적 코드 로딩 취약점

구글은 사용자 보안 강화를 위해 적극적인 조치를 자주 취해 왔습니다. 대표적인 예로, 사용자를 추적하고 정보를 저장한 뒤 타겟 광고에 활용하는 서드파티 쿠키를 2022년까지 크롬 브라우저에서 차단하겠다고 발표한 바 있습니다.

하지만 보안에 집중한다고 해서 기업이 문제로부터 완전히 자유로워지는 것은 아닙니다. 사이버보안 연구자들은 구글 앱 내에서 지속적인 임의 코드 실행 취약점을 발견해 회사에 신고했으며, 해당 문제는 2021년 5월에 수정되었지만 동적 코드 로딩과 관련된 잠재적 위험에 더 많은 사람들이 주목하게 되는 계기가 되었습니다.

연구자들은 이 취약점을 악용하면 공격자가 앱을 단 한 번만 실행해도 피해자의 구글 데이터를 탈취할 수 있다고 확인했습니다. 해커는 구글 앱의 결함을 이용해 피해자 기기에 설치된 악성 앱으로부터 코드 라이브러리를 끌어올 수 있습니다.

그 후 사이버 범죄자는 이메일을 포함해 피해자의 거의 모든 구글 데이터에 접근할 수 있으며, 심지어 사용자의 마이크, 카메라, 실시간 위치 정보까지 몰래 활성화할 수 있습니다.

위험한 앱 취약점 경고에 주의하기

동적 코드 로딩은 개발 단계에서 이루어지기 때문에 일반 앱 사용자가 특정 앱이 백그라운드에서 어떻게 작동하는지 직접 검증하기는 어렵습니다. 따라서 기술 언론에 보도되는 안드로이드 앱 보안 뉴스를 꾸준히 확인하는 것이 현명한 대처 방법입니다.

사이버보안 연구자들은 수많은 앱 사용자를 위험에 빠뜨릴 수 있는 문제들을 지속적으로 찾아내고 이를 알리고 있습니다. 잠재적인 앱 위험에 대한 최신 소식을 접하면, 문제가 될 수 있는 앱을 업데이트할지 아니면 삭제할지 합리적으로 판단하는 데 큰 도움이 됩니다.