취약점 개요

키보드캐시 취약점은 사용자가 모바일 앱에서 입력했던 정보를 확인할 수 있는 취약점이다.


비밀번호, 계좌번호 등의 정보를 직접 입력하지 않고, 복사해서 붙여넣을 경우 클립보드에 저장된다. 클립보드에 저장된 데이터에 접근하기 위해 어떤 권한이 필요하지 않으므로 중요 정보를 얻을 수 있다.


취약점 진단

모바일 앱에서 로그인 시 아이디와 비밀번호를 복사할 수 있는 기능이 존재하는지 확인한다.


아이디 입력 폼에 마우스를 길게 누르면 상단의 복사하기 메뉴가 생성된다. 하지만, 비밀번호는 마스킹이 처리되어 있어 복사 메뉴가 생성되지 않는다.



클립보드에 접근할 수 있는 앱(org.rojekti.clipper)을 실행한 상태에서 사용자가 입력한 아이디 값을 복사한다. 클립보드 앱의 CLIPBOARD 탭을 누르면 사용자가 복사한 아이디 정보가 저장되어 있다.



대응 방안 및 검증

키보드캐시 취약점은 모바일 앱에서 중요 정보를 직접 입력받아야 하는데, 복사 및 붙여넣기 기능을 허용할 때 발생한다.


중요 정보를 입력받는 구간에 마스킹을 처리하거나 복사 및 붙여넣기 기능을 사용할 수 없도록 제한해야 한다.


키보드캐시 취약점
중요 정보는 직접 입력
중요 정보는 마스킹 처리
android:editable 속성의 값을 false로 변경

계좌 이체 시 From Account, To Account에 사용자가 값 입력/복사/붙여넣기/수정 등을 하지 못하도록 EditText 뷰의 android:editable="false"를 추가한다.




계좌 이체 시 송신자 계좌번호, 수신자 계좌번호 뷰에 마우스를 길게 누르면 복사하기, 붙여넣기, 자르기 등 버튼이 나오지 않는다.


또한, 직접적으로 값을 입력할 수 없으며 Get Accounts 버튼을 클릭해야 자동으로 계좌 정보가 채워진다.


중요 정보를 꼭 입력해야 하는 경우

○ android:clickable="false"를 추가하여 롱 클릭 이벤트 제한


사용자가 중요 정보를 입력하지 않고, 모바일 앱에서 채우는 경우

○ android:editable="false"를 추가하여 입력 및 롱 클릭 이벤트 제한



▶ Android Drozer 설치 및 사용법

▶ 안드로이드 컴포넌트 취약점 (Android Activity)

▶ 안드로이드 컴포넌트 취약점 (Android Broadcast Receiver)

▶ 안드로이드 컴포넌트 취약점 (Android Content Provider)

▶ 안드로이드 백업 취약점 (Android Backup)

▶ 안드로이드 메모리 노출 취약점 (메모리 덤프)

▶ 안드로이드 난독화 (코드 보호 기법)

▶ 안드로이드 루팅 탐지 우회 (Frida Hooking)

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유