Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001...
01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001...
 본 문서는 JSSEC의 가이드와 타이거팀의 모의해킹 경험등을 토대로 작성되었음
1. 작성개요 안드로이드 앱 개발 보안 팁
 본 문서는 JSSEC의 가이드와 타이거팀의 모의해킹 경험등을 토대로 작성되었음
– 본 문서...
본 문서에서 다루는 주요 내용은 아래와 같음
2. 대상에 대한 전제 안드로이드 앱 개발 보안 팁
• 본 문서에서 다루는 주요 내용은 아래와 같음
루팅되지 않은 정상폰(서비스)에서 발생가능한 내용 기반
악의적인 앱이 정상...
A C t W bVi 등을 다룰때 잘못된 코딩 문제점을 도출하였음
3. 3대 취약점 안드로이드 앱 개발 보안 팁
• App Component, WebView 등을 다룰때 잘못된 코딩 문제점을 도출하였음
App Compo...
안드로이드 앱 개발 보안 팁
App Component
1. 의도치 않는 Activity 노출
2. 다른 앱(APP)에서 Local Server 접근
노출
2. 다른 앱(APP)에서 Local Server 접근
3. 의도...
A d id A 은 크게 4가지 컴포넌트를 가지며 I t t를 통해 통신을 수행함
2. App Component 노출 안드로이드 앱 개발 보안 팁
• Android App은 크게 4가지 컴포넌트를 가지며 Intent를 ...
1 의도치 않는 A ti it 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 1. 의도치 않는 Activity 노출
– 3rd Party Twitter Client에서 발생한 보안 취약점
– ...
1 의도치 않는 A ti it 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 1. 의도치 않는 Activity 노출
– AnroidManifest.xml 에서 export 설정 해결방안
명시적...
1 의도치 않는 A ti it 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 1. 의도치 않는 Activity 노출
– 소스코드에서 호출자 체크 코드로 해결방안
위처럼 Intent 호출 패키지...
2 비정상 방법으로 연동 S 접근
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 2. 비정상 방법으로 연동 Server 접근
– 하이브리드(Hybrid) 형태로 앱을 개발할 경우 연동하는 서버에도 ...
2 비정상 방법으로 연동 S 접근
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 2. 비정상 방법으로 연동 Server 접근
– 기본적인 보안 설정 뿐만 아니라 시큐어코딩도 반드시 이루어져야 함
서...
2 비정상 방법으로 연동 S 접근
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 2. 비정상 방법으로 연동 Server 접근
– 소스 코드 분석을 통해서 Web Interface 발견
– 직접 호출...
2 비정상 방법으로 연동 S 접근
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 2. 비정상 방법으로 연동 Server 접근
– SQL Injection 공격이 가능하여 데이터베이스 정보 유출 성공...
2 비정상 방법으로 연동 S 접근
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 2. 비정상 방법으로 연동 Server 접근
2 비정상 방법으로 연동 S 접근
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 2. 비정상 방법으로 연동 Server 접근
– 비정상 접근 시도 문제 해결 방안
인증과 권한에 대한 체크 로직 반드...
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
– Content Provider는 하나 이상의 APP에...
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
– 악의적인 앱 역시 Content Provider를 통...
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
– 메모, 사진들, TODO 리스트, 녹음 메모 등 DB...
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
– Content Provider 사용시 고려사항들
데이...
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
– Content Provider 사용시 고려사항들
An...
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
– Content Provider 사용시 고려사항들
같은...
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
– Content Provider 사용시 고려사항들
특별...
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
– APP 실행시 Content Provider 고려 포...
3 의도치 않는 C t t P id 노출
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 3. 의도치 않는 Content Provider 노출
– APP 실행시 Content Provider 고려 포...
W bVi 관련 주요 취약점
안드로이드 앱 개발 보안 팁
• WebView 관련 주요 취약점
WebView
4. File Scheme
WebView
5. addJavascriptInterface
4 Fil S h
3. WebView 안드로이드 앱 개발 보안 팁
• 4. File Scheme
– Vulnerable Code
4 Fil S h
3. WebView 안드로이드 앱 개발 보안 팁
• 4. File Scheme
– WebView 실행시 경로를 입력받아 처리시 다양한 악의적인 경로 입력이 가능함
1. 정상적으로 앱을 이용 http:/...
4 Fil S h
3. WebView 안드로이드 앱 개발 보안 팁
• 4. File Scheme
– Vulnerable Code
http://www.xxx.com/exploit.html
file://sdcard/expl...
4 Fil S h
3. WebView 안드로이드 앱 개발 보안 팁
• 4. File Scheme
– Vulnerable Code
http://www.xxx.com/exploit.ht
ml
Intent Message 전달...
4 Fil S h
3. WebView 안드로이드 앱 개발 보안 팁
• 4. File Scheme
– 악의적 웹 페이지에 자바스크립트 코드로 정보 유출 시도 코드
<script>
악성 코드를 통한 정보유출 가능 코드
sc...
4 Fil S h
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 4. File Scheme
– 코드를 안전하게 처리하는 방법
URI로 File scheme 입력시입력시
대응코드
Javascript는...
5 ddJ i tI t f
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 5. addJavascriptInterface
– 원격에서 임의의 명령을 수행할 수 있는 취약점 발견
CVE-2013-471...
5 ddJ i tI t f
2. App Component 노출 안드로이드 앱 개발 보안 팁
• 5. addJavascriptInterface
– 악의적인 앱 설치를 유도하는 자바스크립트 코드
모바일 앱의 코드모바일 앱의...
정보유출과 관련된 주요 취약점
안드로이드 앱 개발 보안 팁
• 정보유출과 관련된 주요 취약점
6 중요정보 Broadcasting
정보 유출
6. 중요정보 Broadcasting
7. 중요정보 Logging
8. SD 카...
6 중요정보 B d ti
4. 정보유출 안드로이드 앱 개발 보안 팁
• 6. 중요정보 Broadcasting
– LINE에서 가지고 있었던 취약점으로 메시지 수신시 해당 메시지를 브로드캐스
팅한 문제점임 3. 브로드캐스...
6 중요정보 B d ti
4. 정보유출 안드로이드 앱 개발 보안 팁
• 6. 중요정보 Broadcasting
– Fixed
3. 브로드캐스팅 메시지를 받도록 처리로 캐 팅 메시지를 받도록 처리
할 경우 메시지 내용 열람...
6 중요정보 B d ti
4. 정보유출 안드로이드 앱 개발 보안 팁
• 6. 중요정보 Broadcasting
– Broadcasting 메시지 처리시에는 Intent 메시지 목적지를 제한하는 것이 바람직
함
명시적으로 ...
6 중요정보 B d ti
4. 정보유출 안드로이드 앱 개발 보안 팁
• 6. 중요정보 Broadcasting
– 명시적 인텐트 메시지로 전달하는 것이 바람직함
public class ActivityA extends Ac...
7 중요정보 L i
4. 정보유출 안드로이드 앱 개발 보안 팁
• 7. 중요정보 Logging
– 시스템에서 개발자가 의도적으로 등 다양한 이유로 로그가 발생함
• Log.d (Debug) : 테스트, 동작등이 의도대로...
7 중요정보 L i
4. 정보유출 안드로이드 앱 개발 보안 팁
• 7. 중요정보 Logging
– 로그 메시지중 특히 개발자가 디버깅 목적으로 남긴 메시지의 경우 반드시 삭제
필요
– 앱 분석시 디버깅 메시지에서 중요하...
7 중요정보 L i
4. 정보유출 안드로이드 앱 개발 보안 팁
• 7. 중요정보 Logging
– Android 4.0 이하에서는 해당 퍼미션이 설정된 경우 다른 앱에서도 로그를 읽기
가 가능했음
– Android 4....
7 중요정보 L i
4. 정보유출 안드로이드 앱 개발 보안 팁
• 7. 중요정보 Logging
– 로깅(Logging)
• 로그 출력시 민감한 정보를 출력하지 말아야 한다.
• 필요하다면 별도의 로그 클래스를 제작하여 ...
8 SD 카드에 중요 정보 저장
4. 정보유출 안드로이드 앱 개발 보안 팁
• 8. SD 카드에 중요 정보 저장
– SD카드에 앱과 관련된 중요하거나 민감한 정보 저장은 위험함
데이터 유출 시나리오데이터 유출 시나리오
...
8 SD 카드에 중요 정보 저장
4. 정보유출 안드로이드 앱 개발 보안 팁
• 8. SD 카드에 중요 정보 저장
– 반드시 SD카드에 저장이 필요한 경우에는 제한적인 방법을 이용하는 것이 바람
직함
• 생성한 파일을 다...
01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001...
Prochain SlideShare
Chargement dans…5
×

모바일앱 개발에서 개발자가 알아야할 팁

6 872 vues

Publié le

세미나에서 두번 발표했던 자료입니다...^^
모바일앱 개발시에 참고할만한 자료로,
매우 간단한 팁 성격의 자료라고 생각하시면 될것 같네요~^^

Publié dans : Formation
  • Identifiez-vous pour voir les commentaires

모바일앱 개발에서 개발자가 알아야할 팁

  1. 1. 01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100 0100001110001010100011 안드로이드 앱 개발 보안 팁 | 무료공개자료 | 01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100 0100001110001010100011 | 무료공개자료 |
  2. 2. 01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100 0100001110001010100011 Contents I. 문서의 개요 II. App Component 노출 III. WebView IV. 정보유출 01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100 0100001110001010100011
  3. 3.  본 문서는 JSSEC의 가이드와 타이거팀의 모의해킹 경험등을 토대로 작성되었음 1. 작성개요 안드로이드 앱 개발 보안 팁  본 문서는 JSSEC의 가이드와 타이거팀의 모의해킹 경험등을 토대로 작성되었음 – 본 문서는 모바일앱 개발시 가장 기초적이고 이해하기 쉬운 주제만 다루었음 타이거팀의 모의해킹 경험과 노하우 Android Application Secure Design /Android Application Secure Design / Secure Coding Guidebook by JSSEC http://www.jssec.org/dl/android_securecoding_en_20140701.pdf
  4. 4. 본 문서에서 다루는 주요 내용은 아래와 같음 2. 대상에 대한 전제 안드로이드 앱 개발 보안 팁 • 본 문서에서 다루는 주요 내용은 아래와 같음 루팅되지 않은 정상폰(서비스)에서 발생가능한 내용 기반 악의적인 앱이 정상앱에 가할 수 있는 공격들 WebView의 잘못된 사용으로 인한 피해 퍼미션 설정상의 실수 등으로 인한 피해 등 앱 개발시 이러한 사소한 실수가 어떤 문제를 야기할 수 있는가?
  5. 5. A C t W bVi 등을 다룰때 잘못된 코딩 문제점을 도출하였음 3. 3대 취약점 안드로이드 앱 개발 보안 팁 • App Component, WebView 등을 다룰때 잘못된 코딩 문제점을 도출하였음 App Component 노출 1. 의도치 않는 Activity 노출 2. 다른 앱(APP)에서 Local Server 접근 3 의도치 않는 C t t P id 노출3. 의도치 않는 Content Provider 노출 WebView 4. File Scheme 5. addJavascriptInterface 6. 중요정보 Broadcasting 정보 유출 7. 중요정보 Logging 8. SD 카드에 중요 정보 저장
  6. 6. 안드로이드 앱 개발 보안 팁 App Component 1. 의도치 않는 Activity 노출 2. 다른 앱(APP)에서 Local Server 접근 노출 2. 다른 앱(APP)에서 Local Server 접근 3. 의도치 않는 Content Provider 노출
  7. 7. A d id A 은 크게 4가지 컴포넌트를 가지며 I t t를 통해 통신을 수행함 2. App Component 노출 안드로이드 앱 개발 보안 팁 • Android App은 크게 4가지 컴포넌트를 가지며 Intent를 통해 통신을 수행함 Android App의 4대 구성요소 Activity Content Provider ServiceIntent Broadcast
  8. 8. 1 의도치 않는 A ti it 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 1. 의도치 않는 Activity 노출 – 3rd Party Twitter Client에서 발생한 보안 취약점 – 글 등록화면 (Activity)이 export 되어 있어 intent 메시지를 통해서 등록 가능 1. 정상적인 사용자가 로 file://sdcard/.../PrivatePhoto.jpg file://mal/.../taehikim.jpg 컬에 저장된 파일을 2. APP을 통해서 3 트위터에 업로드할 수 3rd 3rd 3. 트위터에 업로드할 수 있는 기능 1. 악성앱이 임의의 파일 을 만들어서 2. APP을 통해서 Intent Message Intent Message 3 twitter client 3 twitter client 3. 트위터에 업로드할 수 있는 기능 twitter 자 동 로그인
  9. 9. 1 의도치 않는 A ti it 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 1. 의도치 않는 Activity 노출 – AnroidManifest.xml 에서 export 설정 해결방안 명시적으로 private로 선언하라. (android : exported=“false”) AnroidManifest.xml file://mal/.../taehikim.jpg … <activity android:name=“.PicUploadActivity” … android:exported=“false” /> … 3rd twitte r clientclient
  10. 10. 1 의도치 않는 A ti it 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 1. 의도치 않는 Activity 노출 – 소스코드에서 호출자 체크 코드로 해결방안 위처럼 Intent 호출 패키지명을 체크하는 방식도 있으나 “exported = false”를 사용하는 것이 더욱 바람직하다.
  11. 11. 2 비정상 방법으로 연동 S 접근 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 2. 비정상 방법으로 연동 Server 접근 – 하이브리드(Hybrid) 형태로 앱을 개발할 경우 연동하는 서버에도 보안설정이 반 드시 필요함 모바일앱이 로컬 또는 별도의 서버와 통신을 통해 정보들을 주고 받는 경우, 모바일앱이 하이브리드(Hybrid) 방식인 경우 바일앱이 컬 는 별 의 서버와 통신을 통해 정 들을 주 받는 경우, 서버측에 데이터 관리 및 단말기와 연동되는 인터페이스 관리가 매우 중요함 서버측 연결 정보 및 경로 정보는 모바일앱 분석을 통해서 쉽게 획득이 가능함서버측 연결 정보 및 경로 정보는 모바일앱 분석을 통해서 쉽게 획득이 가능함
  12. 12. 2 비정상 방법으로 연동 S 접근 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 2. 비정상 방법으로 연동 Server 접근 – 기본적인 보안 설정 뿐만 아니라 시큐어코딩도 반드시 이루어져야 함 서버측 보안설정 미흡으로 인한 컨텐츠 노출 문서, 음원, 사진 등의 파일들을 다룰때 디렉토리 인덱싱 등과 같은 서버측 보안 설정 미흡으로 인 한 정보 유출 가능성이 존재함한 정보 유출 가능성이 존재함 임의 접근을 통해서 컨텐츠를 불법적으로 획득 가능함 서버측 취약점으로 인해 악의적인 컨텐츠를 업 로드하고 배포할 경우 심각한 피해 발생 가능
  13. 13. 2 비정상 방법으로 연동 S 접근 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 2. 비정상 방법으로 연동 Server 접근 – 소스 코드 분석을 통해서 Web Interface 발견 – 직접 호출로 통해서 접근 가능성 및 취약성 여부 체크 경로 직접 호출 Sql Injection 취약점 발견 :Sql Injection 취약점 발견 : http://192.168.0.80:6543/HackMePal/service/servicepath/userlist?userid=admin
  14. 14. 2 비정상 방법으로 연동 S 접근 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 2. 비정상 방법으로 연동 Server 접근 – SQL Injection 공격이 가능하여 데이터베이스 정보 유출 성공 해당 시스템은 거의 대부분의 URL에서 가능함
  15. 15. 2 비정상 방법으로 연동 S 접근 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 2. 비정상 방법으로 연동 Server 접근
  16. 16. 2 비정상 방법으로 연동 S 접근 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 2. 비정상 방법으로 연동 Server 접근 – 비정상 접근 시도 문제 해결 방안 인증과 권한에 대한 체크 로직 반드시 구현 불필요한 접근은 IP 레벨에서 차단 서버측 인터페이스에 대해서도 모든 유효성 검증 코드 구현 (웹 프로그램 개발보안 가이드라인 준수)(웹 프로그램 개발보안 가이드라인 준수) 제공되는 다양한 컨텐츠에 대한 보호 대책 고민 (암호화, DRM 등)제 되 다 에 대 대책 화 등
  17. 17. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출 – Content Provider는 하나 이상의 APP에서 File 또는 DB 등을 공유하기 위해서 사용함 – 여러앱이 데이터를 조회하거나 변경할 수 있음 취약한 APP취약한 APP Content Provider A APP DATA 읽기 및 변조가 가능함 DATA B APP
  18. 18. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출 – 악의적인 앱 역시 Content Provider를 통해서 정보에 대한 접근이 가능함 취약한 APP A APPDATA 읽기 및취약한 APP Content Provider A APPDATA 읽기 및 변조가 가능함 B APP DATA Malicious APP
  19. 19. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출 – 메모, 사진들, TODO 리스트, 녹음 메모 등 DB나 파일등에 저장되는 모든 데이터 가 공격대상
  20. 20. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출
  21. 21. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출 – Content Provider 사용시 고려사항들 데이터를 공유하고자 하는 APP의 범위를 지정하라.1 • 불특정하고 많은 수의 앱 • 같은 signature를 가진 앱으로 한정하기 • 특정 퍼미션을 가진 앱으로 한정하기 데이터의 내용2 • 다른 앱과 공유하고자 하는 내용은 무엇인가?다 앱과 공유하 자 하 내용 무엇 가 공유를 통해서 얻고자 하는 것이 무엇인가3 • 단순한 데이터 공유인가? • 데이터 추가, 편집, 삭제등을 허용하고자 하는가?
  22. 22. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출 – Content Provider 사용시 고려사항들 Android 4.2(API17) 부터 Content Provider는 명시적으로 해당 불특정하고 많은 수의 앱 ( ) 부터 는 명시적 해당 속성을 설정하지 않는다면 private으로 처리됨 따라서 android:minSdkVersion 값 체크가 필요하고 android:targetSdkVersion 값따라서, android:minSdkVersion 값 체크가 필요하고 android:targetSdkVersion 값 이 17이상일 경우에는 아래와 같이 설정해야 함
  23. 23. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출 – Content Provider 사용시 고려사항들 같은 Signature를 가진 APP으로 접근 제한
  24. 24. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출 – Content Provider 사용시 고려사항들 특별한 퍼미션 설정을 가진 APP으로 제한
  25. 25. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출 – APP 실행시 Content Provider 고려 포인트 Content Provider 사용이 정말로 필요한가?1 • 필요하지 않다면, 사용하지 마라 Content Provide를 private로 설정하라2 • AndroidManifest.xml에서 “android:exported=false”로 설정하라
  26. 26. 3 의도치 않는 C t t P id 노출 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 3. 의도치 않는 Content Provider 노출 – APP 실행시 Content Provider 고려 포인트 Content Provider를 private로 설정하라 AndroidManifest.xml에서 “android:exported”의 속성을 지정하라에서 p 의 속성을 지정하라 하지만, Android2.2(API8) 또는 이전 버전에서는 명시적으로 “android:exported=false” 로 선언해도 Content Provider가 다른앱에서 접근이 가능하다
  27. 27. W bVi 관련 주요 취약점 안드로이드 앱 개발 보안 팁 • WebView 관련 주요 취약점 WebView 4. File Scheme WebView 5. addJavascriptInterface
  28. 28. 4 Fil S h 3. WebView 안드로이드 앱 개발 보안 팁 • 4. File Scheme – Vulnerable Code
  29. 29. 4 Fil S h 3. WebView 안드로이드 앱 개발 보안 팁 • 4. File Scheme – WebView 실행시 경로를 입력받아 처리시 다양한 악의적인 경로 입력이 가능함 1. 정상적으로 앱을 이용 http://www.naver.com http://www.xxx.com/exploit.html file://sdcard/exploit.html 할 경우 User 또는 하 드코딩된 경로를 인텐 트 메시지로 전달 1. Intent 메시지를 통해 서 WebView Activity 를 실행할 때, Intent Message Intent Message APP 트 메시지로 전달 2. 해당 Activity는 받은 메시지의 경로를 접속 2. 악의적 컨텐츠가 있는 URI를 전달하여 3. 해당 스크립트를 통해 Intent Message Activity public WebView • enabledJavascript • any URI passed APP Intent Message WebView • enabledJavascript • any URI passed메시지의 경로를 접속 하여 결과를 화면에 보 여줌 정보 유출 가능 • any URI passed DB • Cookie • cache • any URI passed DB • Cookie • cache A k데이터 유출 Attacker Server 데이터 유출 가능
  30. 30. 4 Fil S h 3. WebView 안드로이드 앱 개발 보안 팁 • 4. File Scheme – Vulnerable Code http://www.xxx.com/exploit.html file://sdcard/exploit.html Intent Message 전달 코드 (예시) // / p String pkg = “ko.vulnerable.android.app”; St i l k “ D L h A ti it ” Intent Message String cls = pkg + “.DummyLauncherActivity”; String uri = “file:///[exploit html file]”; WebView • enabledJavascript • any URI passed Intent intent = new Intent(); intent.setClassName(pkg, cls); intent.putExtra(“url”, uri);p ( , ); this.startActivity(intent);
  31. 31. 4 Fil S h 3. WebView 안드로이드 앱 개발 보안 팁 • 4. File Scheme – Vulnerable Code http://www.xxx.com/exploit.ht ml Intent Message 전달 코드 (예시) … String turl = getIntent().getStringExtra(“url”); webView.loadUrl(turl); file://sdcard/exploit.html String pkg = “ko.vulnerable.android.app”; St i l k “ D L h A ti it ” webView.loadUrl(turl); Intent Message String cls = pkg + “.DummyLauncherActivity”; String uri = “file:///[exploit html file]”; WebView • enabledJavascript • any URI passed Intent intent = new Intent(); intent.setClassName(pkg, cls); intent.putExtra(“url”, uri);p ( , ); this.startActivity(intent);
  32. 32. 4 Fil S h 3. WebView 안드로이드 앱 개발 보안 팁 • 4. File Scheme – 악의적 웹 페이지에 자바스크립트 코드로 정보 유출 시도 코드 <script> 악성 코드를 통한 정보유출 가능 코드 sc pt var target = “file:///data/data/ko.vulnerable.android.app/databases/webview.db"; var xhr = new XMLHttpRequest(); xhr.overrideMimeType(“text/plain; charset=iso-8859-1”);yp ( /p ; ); xhr.open(“GET”, target, true); xhr.onreadystatechange = function(){ 취약한 APP의 리소스에 접근 및 y g (){ var data = xhr.responseText; … 외부로 유출 등이 가능함
  33. 33. 4 Fil S h 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 4. File Scheme – 코드를 안전하게 처리하는 방법 URI로 File scheme 입력시입력시 대응코드 Javascript는 가급적 사용하지Javascript는 가급적 사용하지 않는 것이 바람직함 Android 4.1 이후부터 추가로 지원된 메쏘드 - WebSettings#setAllowFileAccessFromFileURLs - WebSettings#setAllowUniversalAccessFromFileURLs
  34. 34. 5 ddJ i tI t f 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 5. addJavascriptInterface – 원격에서 임의의 명령을 수행할 수 있는 취약점 발견 CVE-2013-4710 참고] http://www.rapid7.com/db/modules/exploit/android/browser/webview_addjavascriptinterface
  35. 35. 5 ddJ i tI t f 2. App Component 노출 안드로이드 앱 개발 보안 팁 • 5. addJavascriptInterface – 악의적인 앱 설치를 유도하는 자바스크립트 코드 모바일 앱의 코드모바일 앱의 코드 열람할 웹페이지 코드 나누어진 APK 파일을 강제로 저장시키고 백그라운드로 앱 설치하는 스크립트 코드
  36. 36. 정보유출과 관련된 주요 취약점 안드로이드 앱 개발 보안 팁 • 정보유출과 관련된 주요 취약점 6 중요정보 Broadcasting 정보 유출 6. 중요정보 Broadcasting 7. 중요정보 Logging 8. SD 카드에 중요 정보 저장
  37. 37. 6 중요정보 B d ti 4. 정보유출 안드로이드 앱 개발 보안 팁 • 6. 중요정보 Broadcasting – LINE에서 가지고 있었던 취약점으로 메시지 수신시 해당 메시지를 브로드캐스 팅한 문제점임 3. 브로드캐스팅 메시지를 받도록 처리로 캐 팅 메시지를 받도록 처리 할 경우 메시지 내용 열람이 가능 Broadcast receiver 1. 라인 메시지 전달 … … Broadcast receiver 2. 메시지 수신시 브로드캐스팅하여 메시지 처리 (사전에 악성앱 설치되었다고 가정)
  38. 38. 6 중요정보 B d ti 4. 정보유출 안드로이드 앱 개발 보안 팁 • 6. 중요정보 Broadcasting – Fixed 3. 브로드캐스팅 메시지를 받도록 처리로 캐 팅 메시지를 받도록 처리 할 경우 메시지 내용 열람이 가능 Broadcast receiver 1. 라인 메시지 전달 … … FIXED Broadcast receiver 2. 메시지 수신시 브로드캐스팅하여 메시지 처리 (사전에 악성앱 설치되었다고 가정)
  39. 39. 6 중요정보 B d ti 4. 정보유출 안드로이드 앱 개발 보안 팁 • 6. 중요정보 Broadcasting – Broadcasting 메시지 처리시에는 Intent 메시지 목적지를 제한하는 것이 바람직 함 명시적으로 I t t 메시지의 목적지를 제한 Broadcast receiver 명시적으로 Intent 메시지의 목적지를 제한 명시적 Intent 사용 … … 명시적 Intent 사용 - 사용하고자 하는 APP에서만 Broadcast receiver 를 받고 싶다면 Intent 사용시 명시적으로 사용 하라 Broadcast receiver 하라 - 목적지 클래스를 제한하라
  40. 40. 6 중요정보 B d ti 4. 정보유출 안드로이드 앱 개발 보안 팁 • 6. 중요정보 Broadcasting – 명시적 인텐트 메시지로 전달하는 것이 바람직함 public class ActivityA extends Activity { 명시적 인텐트 예시 p y y { . . . 호출할 클래스 지정 public void onClick(View view) { Intent i = new Intent(this, ActivityB.class); final EditText editText1 = (EditText) findViewById(R.id.editText1); String myString = editText1.getText().toString(); i.putExtra("qString", myString); startActivity(i); } }
  41. 41. 7 중요정보 L i 4. 정보유출 안드로이드 앱 개발 보안 팁 • 7. 중요정보 Logging – 시스템에서 개발자가 의도적으로 등 다양한 이유로 로그가 발생함 • Log.d (Debug) : 테스트, 동작등이 의도대로 되는지 알아보기 위해서 사용 • Log.e (Error) : 가장 심각한 문제가 발생했을때 사용g ( ) 가장 심각한 문제가 발생했을때 사용 • Log.i (Info) : 진행 과정을 모니터링하기 위해서 주로 사용 • Log.v (Verbose) : 동작 여부를 최대한 자세히 살펴볼 목적으로 남기는 로그 Log w (Warn) : 심각하지는 않지만 꼭 확인이 필요한 경고로 심각보다 낮을때 사용• Log.w (Warn) : 심각하지는 않지만, 꼭 확인이 필요한 경고로 심각보다 낮을때 사용
  42. 42. 7 중요정보 L i 4. 정보유출 안드로이드 앱 개발 보안 팁 • 7. 중요정보 Logging – 로그 메시지중 특히 개발자가 디버깅 목적으로 남긴 메시지의 경우 반드시 삭제 필요 – 앱 분석시 디버깅 메시지에서 중요하거나 민감한 정보가 자주 노출됨 릴리즈(Release) 버전을 배포때에는 반드시 디버그 로깅이나 중요 정보 출력 코드를 삭제해야 함 (릴리즈 버전에서 중요 정보 노출 코드가 다수 발견됨)
  43. 43. 7 중요정보 L i 4. 정보유출 안드로이드 앱 개발 보안 팁 • 7. 중요정보 Logging – Android 4.0 이하에서는 해당 퍼미션이 설정된 경우 다른 앱에서도 로그를 읽기 가 가능했음 – Android 4.1 이상에서는 해당 문제가 해결되었음
  44. 44. 7 중요정보 L i 4. 정보유출 안드로이드 앱 개발 보안 팁 • 7. 중요정보 Logging – 로깅(Logging) • 로그 출력시 민감한 정보를 출력하지 말아야 한다. • 필요하다면 별도의 로그 클래스를 제작하여 필요에 따라 로깅 기능을 활성화/비활성화 하도록필 하다면 별 의 클래 를 제작하여 필 에 따라 깅 기능을 활성화/비활성화 하 록 하라
  45. 45. 8 SD 카드에 중요 정보 저장 4. 정보유출 안드로이드 앱 개발 보안 팁 • 8. SD 카드에 중요 정보 저장 – SD카드에 앱과 관련된 중요하거나 민감한 정보 저장은 위험함 데이터 유출 시나리오데이터 유출 시나리오 1. 사용자가 사용하는 앱을 통해 중요 정보를 저장 APP 1. 사용자가 사용하는 앱을 통해 중요 정보를 저장 2. 앱이 해당 정보를 SD Card에 저장 3. 악의적인 앱이 SD Card의 해당 정보에 접근 4 접근한 정보를 외부로 유출 SD Card 4. 접근한 정보를 외부로 유출 예) 사진, 대화내역, 녹음파일, 인증서 등Other APP (malware)
  46. 46. 8 SD 카드에 중요 정보 저장 4. 정보유출 안드로이드 앱 개발 보안 팁 • 8. SD 카드에 중요 정보 저장 – 반드시 SD카드에 저장이 필요한 경우에는 제한적인 방법을 이용하는 것이 바람 직함 • 생성한 파일을 다른 앱과 공유를 하지 말 것 • 파일 생성시 MODE PRIVATE 옵션으로 생성할 것파일 생성시 _ 옵션 생성할 것 MODE_WORLD_READABLE, MODE_WORLD_WRITABLE 옵션 사용 자제 (API17에서 삭제) 내장 저장소(/data/data/package/files/)에 저장• 내장 저장소(/data/data/package/files/)에 저장 • 데이터베이스(SQLite)에 저장 • 네트워크 통해서 서버에 저장 • 만약 앱간에 파일 공유가 필요할 경우에는 IPC(ContentProvider)를 통해서 공유
  47. 47. 01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100 01000011100010101000110010100101000111000000000011110011000000111110000000011101110111000111000110111001110001100100100001 00100010010000010000111000101010001100101001010001110000000000111100110000001111100000000111011101110001110001101110011100

×