야놀자 앱은 왜 자동실행 되나요?

  

야놀자(yanolja) / 조회수 : 2368

pluu

저는 야놀자 CX서비스실의 Android 파트에서 레이아웃 깎기와 Kotlin 새로운 Android 기술을 전파하는 노현석입니다.
 
야놀자에 합류하고서 경험한 가장 독특한 케이스에 대해서 이야기해 보려고 합니다.


시작은 물음표부터

언제부터인가 야놀자앱을 설치하거나 업데이트하면 앱이 자동으로 실행된다는 리뷰가 들어오기 시작했습니다.




?! 그게 무슨 말이에요?

안드로이드 개발을 시작한 이래로 처음 들어보는 내용이라원인도 정확한 해결책도 떠오르지 않는 그런 리뷰였습니다그래서 자연스럽게 브라우저를 켜서 구글에 검색을 먼저 해봤습니다.
 Android, Auto Start, Install  다양한 검색 결과로 일정한 패턴의 내용을 확인할  있습니다.

 
 

  • Intent Action 관련 내용
    • android.intent.action.PACKAGE_ADDED
    • android.intent.action.PACKAGE_CHANGED
    • etc.
  • Broadcast Receiver
  • etc.

일반적으로 안드로이드 앱이 설치  업데이트될  발생하는 이벤트(이하 Broadcast) 받는 방법에 대한 설명이 많습니다. Broadcast 배터리 변화전화 여부와이파이  시스템의 상태 변화를 감지하거나 서비스 내부적에서 이벤트를 전달하기 위해 사용합니다.
 ???? 실질적인 해결책은 되지 않지만범위를 좁혀서 찾아볼 포인트로 Intent 
PACKAGE관련 액션을 포커스로 잡았습니다.
 
하지만야놀자앱에서는 마케팅 성과 측정을 위해com.android.vending.INSTALL_REFERRER 광고 트래킹 SDK에서 사용하는  이외에는 별도의 작업을 하지는 않습니다그러나이를  리가 없는 사용자는야놀자 앱 일으키는 문제라고 인지하기 쉽습니다.
 
 

일차적으로어느 경로를 통해서인지는 모르지만 누군가가 야놀자 앱을 실행하는 것이라고 생각했습니다.

야놀자  사용자의 기기에 설치된 모든  리스트를 받아올 수도 있고리퍼럴에 따른  실행경로를 모두 수집할 수도 있지만단순히 버그를 찾기 위해 사용자의 동의 없이 정보를 수집할 수는 없기 때문에 장기전으로 돌입하게 되었습니다하지만 동일한 리뷰는 계속되었고 여전히 뚜렷한 해결책이 없는 채로 시간이 흘러갔습니다.
 
 

 재현되는데요

증상이 나타나지만 재현은 되지 않고재현 경로를 단기간에 파악하기는 어려운 과제였습니다.
 
한두 명에 불과하던 제보가 시간이 지날수록 Android 파트의 목을 조르듯이 점점 유입되는 횟수가 늘어만 갔습니다그런데 어느 다른 팀의 분께서저 재현되는데요라는  줄기의 빛과 같은 언급을 해주셨습니다.





믿고 싶지 않은 일이 현실이 되었다



네? 그게 … 정말로 일어났습니다.

이제부터가진짜시작

역시버그는재현이되어야제대로잡을수있겠죠! 저에게는재현되는 단말이 있어요!




Android에서 디버깅을   있는 다양한 수단이 있습니다이번 사례의 경우는Log혹은Dump 확인해보는 선택지가 있습니다.


Log


민감한 정보라고 판단되는 부분은 모자이크했습니다.

 설치  광고 SDK 수집하는 것으로 보이는 Log에는 다양한 항목들이 나열되는 것을   있습니다이때 설치한 앱의 정보가 SDK 통해 특정 API 전송되는 것도 확인할  있습니다하지만 Log Log 뿐입니다.
 
 

Dumpsys

이렇게 Log만으로 추적이 어려울 추가적으로 시스템의 상태를 얻어내 디버깅   있는 방법이 있는데 바로dumpsys입니다dumpsys Android 단말에서 실행되며 시스템 서비스에 대한 다양한 정보를 제공하는 도구입니다ADB(Android Debug Bridge) 사용하여 dumpsys 호출  해당 단말에서 실행 중인 모든 시스템 서비스에 대한 정보를 가져올  있습니다간단하게 말하면 배터리의 잔량메모리 소비량네트워크 통신 상태 등을 명령어로 확인할  있습니다.
 dumpsys 기능에 대해서는 방대한 설명이 필요하므로자세한 내용은 아래 링크로 대체합니다.

 
 

  1. Android Developers ~ dumpsys
  2. https://android.googlesource.com/platform/frameworks/native/+/master/cmds/dumpsys/dumpsys.cpp

Activity Dump

Dumpsys 에서   Activity  관련된 정보를 얻기 위해서는 아래의 명령어를 적용해볼  있습니다.



// Activity Log Dump 
adb shell dumpsys activity activities

결과를 확인해봅니다아래와 같은 Activity  활동 이력을 얻을  있습니다.



Activity Dump 나타난mCallingPackage값으로 야놀자 앱을 시작시킨 앱의 패키지를 확인할  있습니다해당 패키지를 실제 Play Store에서 확인해본 결과사진 보정 필터앱으로 유명한카메라  하나였습니다.



???? 야놀자와는 전혀 연관성이 없는 앱인데, 호출하고 있네요… ????

Process ID

// 애플리케이션의 Process ID 취득
adb shell ps

Activity Dump에서 확인한mCallingUidu0a423였는데이는 Activity 호출한 uid 값을 가리킵니다실제로 Process  호출되는 Application ID 카메라 앱에서 호출한 ID 정보와 일치합니다.



대상 앱 자료 분석

단순하게는 APK  분석하여 추측하는 방법이 있습니다. Android Studio 에서 제공되는Analyze APK기능을 이용하여 해당 앱에서 사용되는 서비스의 정보를 파악할  있습니다 방법을 이용하여 문제의 앱이 사용하는 광고 SDK 서비스에서 패키지 설치/제거 관련 Broadcast Receiver 수집하는 것을 확인   있습니다.



패키지 관련 Broadcastandroid.intent.action.PACKAGE_ADDED, android.intent.action.PACKAGE_REMOVED 앱이 사용하는 것은 잘못된 것이 아닙니다예를 들어 런처 앱의 경우 단말기 내부의  정보가 변경되었다는 이벤트를 이용하여 화면 렌더링  동작을 변경하는 처리를   있습니다
 
해당 광고 SDK 경우에는 앱을 설치  실행하는 것으로 사용자에게 포인트  여러 혜택을 제공할 것이라고 예상할  있습니다.



개인적인 의견으로는 사용자의 액션과 상관없이 동작하는 부분에 대해서는 분명히 Android 의 개선도 필요하다고 생각됩니다. 이런 정상 동작과 어뷰징은 아슬아슬한 경계에 있지만, 자칫 어뷰징으로 이어지는 경우 서비스의 품질이 떨어지게 되면서 사용자와 개발사 모두에게 좋지 않은 경험을 줄 뿐입니다.

설마 이것도 되려나?

동일 패키지명

이번 포스팅을 작성하게  카메라 앱과 야놀자 서비스 사이에 특별한 관계가 없다면 이런 현상이 발생하는지 고민해봤습니다. SDK 연결하지 않았다면앱을 추적할  있는 유일한 키는패키지명이지 않을까라는 생각으로 패키지명만 야놀자 앱과 동일한 샘플 앱으로 테스트해봤습니다.





동일 재현 성공!!

그럼… 해결… 끝?

많은 사람들에게 이름이 널리 알려진 여러 서비스에서조차 이번 포스팅에서 다룬 내용과 같은 현상이 발생하고 있습니다발생 유무에 따른 차이점이나 현상의 인과 관계를 명확히 판단하기엔 아직 정보가 많이 부족합니다그리고 이번 분석에서 발견한 문제의 앱을 비롯하여  다른 2, 3 앱들이 등장할 거란 가능성도 배제할  없는것이 현재 상황입니다.
 
슬프게도 아직  현상은 지금도 계속되고 있으며불편을 호소하는 리뷰가 등록되어 서비스 전체의 이미지와 평점을 갉아먹고 있습니다.
 
안드로이드 생태계가 사용자  서비스 제공자에게  유익한 방향으로 나아갔으면 하는 바람을 담아 작성했습니다.



도움 주신 분

  • 동일 증상을 발견하고, 단말을 빌려주신 R&D SF팀 전호숙님
  • 같이 추적해주신 R&D CX 서비스실 유관종님
  • Dump/Log 관련 조언을 주신 Wind River의 차영호님 (????????????)
  • 국어가 많이 부족한 저를 도와주신 리뷰어 ???????????? R&D CX 서비스실 강미경님, 송요창님, 유관종님, 유용우님, 이미혜님

이번 현상 추적에 도움을 주신 분들에게 감사함을 전합니다.

#야놀자 #개발자 #개발팀 #문제해결 #버그수정 #안드로이드 #인사이트 #경험공유


관련 스택

기업문화 엿볼 때, 더팀스

로그인

/