본문으로 바로가기

부채널을 통한 데이터 유출 이란?

부채널 데이터 유출(Side Channel Data Leakage)이란 앱의 주기능이 아닌 제삼의(Side) 기능으로  중요정보가 유출되는 것을 말함.

 

Keystroke logging 이란?

- 텍스트 필드가 Secure로 설정되지 않은 경우 기본적으로 디바이스의 텍스트 필드에 입력한 모든 입력을 Keystroke 로그에 기록함.

- Keystroke 로그는 /var/mobile/Library/Keyboard/ 위치에 .dat 확장자를 가진 파일로 저장됨.

- 디바이스에서 쉽게 가져와 볼 수 있으므로 평문으로 저장된 중요 데이터가 있을 경우 정보가 유출될 수 있음.

 

대응 방법

- 텍스트 필드를 Secure로 설정하고, autocorrect(자동고침) 옵션을 해제해야 함.

 

- 예제(샘플) 소스

//텍스트 필드 secure 설정 샘플 소스
textField.isSecureTextEntry = true

//텍스트 필드 autocorrect 해제 샘플 소스
//Objective-C
textField.autocorrectionType = UITextAutocorrectionTypeNo;

//Swift 2
textField.autocorrectionType = .No

//Swift 3
textField.autocorrectionType = .no

//SwiftUI
textField.disableAutocorrection(false)

 

DVIA-v2 앱을 통한 실습

앱 내에서 입력한 텍스트가 Keystroke logging 으로 디바이스 내에 저장되는지 확인하기 위해 DVIA-v2 앱을 실행.

 

메인메뉴 좌측 상단 메뉴 클릭 > Side Channel Data Leakage 클릭 > Keystroke logging 클릭 > 텍스트 입력.

 

3uTools 실행 > private/var/mobile/Library/Keyboard/ 경로로 이동 > dynamic.lm 폴더안에 있는 파일들을 PC로 추출

※ en-dynamic.lm : 영어로 입력된 텍스트가 저장된 폴더

※ ko-dynamic.lm : 한글로 입력된 텍스트가 저장된 폴더

 

추출한 파일을 메모장같은 텍스트 편집기로 열어보면 기존에 입력했던 텍스트들이 기록되어 있는것을 확인할 수 있음.

※ iOS 12 이상의 버전에서는 Keystroke logging 기능으로 기록된 텍스트가 많이 없는것을 확인할 수 있음. iOS 자체적으로 Keystroke logging 기능으로 중요 텍스트가 유출되는 일이 없도록 조치하고 있는 듯 함.