취약점 개요

부채널 데이터 유출은 사용되는 어플리케이션의 주 기능이 아닌 타 기능을 통해 데이터가 유출되는 취약점을 말한다. 의도하지 않은 데이터 유출은 개발자가 실수로 모바일 디바이스의 다른 앱이 쉽게 액세스할 수 있는 위치에 민감한 정보나 데이터를 저장할 때 발생한다.

개발자의 코드가 사용자 또는 백엔드에서 제공한 민감한 정보를 처리할 때 이 과정에서 개발자가 알지 못하는 부작용으로 인해 해당 정보가 모바일 디바이스의 안전하지 않은 위치에 배치되어 디바이스의 다른 앱이 공개적으로 액세스할 수 있게 된다. 일반적으로 이러한 부작용은 기본 모바일 디바이스의 운영 체제(OS)에서 발생하며 공격자는 간단한 코드를 작성하여 민감한 정보가 저장된 위치에 액세스할 수 있다.

취약점 실습

  • 실습 환경 : iOS 14.6, iPhone 8

  • 좌측 상단 메뉴 > Side Channel Data Leakage > Device logs

ID, Password, Email, Phone Number에 각 정보를 입력하고 iOSLogInfo 프로그램 통해 로그 기록과 동시에 Sign Up 버튼 클릭 시 설정해둔 로그 파일명으로 로그가 찍히는 것을 확인할 수 있다.

sdsiosloginfo.exe -d > logfilename

생성된 로그 파일을 통해 해당 입력 값을 검색하면 앱에서 불필요한 디버그 정보를 남기는 경우 입력 값에 대한 로그를 확인할 수 있다.

하지만 해당 앱을 오류로 인해 앱이 꺼지기에 해당 정보가 저장되지 않아 확인이 불가하다. 이와 같은 방식을 통해 Device logs가 남는지 진단하면 된다.

대응 방안

모니터링해야 할 몇 가지 일반적인 유출 지점이 있습니다. OS, 플랫폼 및 프레임워크를 위협 모델링하여 다음 유형의 기능을 어떻게 처리하는지 확인하는 것이 중요하다.

  • URL Caching (Both request and response)

  • Keyboard Press Caching

  • Copy/Paste buffer Caching

  • Application backgrounding

  • Logging

  • HTML5 data storage

  • Browser cookie objects

  • Analytics data sent to 3rd parties

Reference