Download presentation
Presentation is loading. Please wait.
1
Chapter 13 모바일 보안
2
01 모바일 보안의 개요 02 모바일 보안 위협 요소 03 모바일 보안 대응 방안
3
모바일 보안에 대한 기본적인 내용을 이해한다. 모바일 보안의 위협 요소와 이에 대한 대응 방안을 학습한다.
4
1.1 모바일 환경의 성장 모바일 환경의 성장 모바일 보안의 중요성은 아이폰이 세상에 나온 후 스마트폰 열풍이 불기 시작
하면서부터 시작
5
1.1 모바일 환경의 성장 모바일 환경의 성장 현재 모바일 앱을 다운로드할 수 있는 곳은 애플 앱 스토어와 구글 플레이로
양분되어 있음.
6
1.2 모바일 보안의 생성 배경 안드로이드와 iOS의 보안
7
1.2 모바일 보안의 생성 배경 안드로이드와 iOS의 보안
안드로이드의 개방적인 특성을 이용한 리패키징 기법이 알려지면서 모바일 악 성 앱이 증가하는 추세
8
2.1 모바일 보안 위협의 유형 모바일 보안 위협의 유형
9
2.1 모바일 보안 위협의 유형 모바일 보안 위협의 유형
10
2.1 모바일 보안 위협의 유형 모바일 보안 위협의 유형
스마트폰 탈옥(jailbreak) 및 루팅(rooting)에 관련된 정보가 인터넷을 통해 공 유되면서 많은 사람이 자신의 취향에 맞게 스마트폰을 변경하여 이로 인한 악 성 코드 감염도 급증 탈옥 : 애플의 통제를 벗어나 임의의 소프트웨어를 설치할 수 있도록 하는 것 루팅 : 안드로이드 운영체제를 사용하는 스마트폰에서 시스템 잠금장치를 해 체하여 운영체제 관리자의 권한을 얻는 것
11
2.2 모바일 환경의 위협 요소 모바일 환경에서 주의해야 할 위협 요소 10가지
12
2.2 모바일 환경의 위협 요소 M1. 적절하지 않은 플랫폼 사용
위협 대상 : 안드로이드 인텐트, 플랫폼 퍼미션, TouchID, 그 외 모바일 운영체 제의 한 부분인 보안 통제가 해당 공격 요인 : 공격 벡터 보안 취약성 : 모바일 앱에서 제공하는 API 또는 웹 서비스가 노출되어 있어야 함. 기술적 영향 : 모바일 장치에 대한 공격으로 기존 ‘OWASP Top 10’ 취약점과 같은 기술적 영향이 발생 비즈니스 영향 : 기술적 영향과 동일한 영향이 발생하지만 비즈니스 측면에서 고려할 수 있음.
13
2.2 모바일 환경의 위협 요소 M2. 안전하지 않은 데이터 저장
위협 대상 : 분실하거나 도난당한 모바일 장치를 습득하여 공격하는 경우 공격 요인 : 개인정보가 포함된 파일이나 민감한 정보가 포함된 파일, 제삼자의 디렉터리 내용 등을 볼 수 있고, 정보 자산을 훔치지 위해 등록된 앱을 수정하 거나 악성 코드를 만들 수 있음. 보안 취약성 : 루팅이나 탈옥 상태에서는 암호화된 보호가 무력화될 수 있음. 기술적 영향 : 데이터를 잃어버릴 수 있을 뿐만 아니라 수많은 사용자의 데이 터가 삭제될 수 있음. 비즈니스 영향 : 조직에서는 신원 도용, 부정, 브랜드 손상, 외부 정책 위반(PCI 등), 자료 손실 등의 리스크가 발생할 수 있음.
14
2.2 모바일 환경의 위협 요소 M3. 안전하지 않은 통신 위협 대상 : 로컬 네트워크를 공유하는 악의적인 공격자, 통신 제공사, 네트워 크 장치 제공자, 모바일 장치에 있는 악성 코드 등 공격 요인 : 안전하지 않은 통신 범위를 모니터링할 수 있는 부분 보안 취약성 : 모바일 애플리케이션은 인증이 필요할 때만 SSL/TLS를 사용하기 때문에 중요한 데이터나 세션 아이디와 같은 정보가 노출될 수 있음. 기술적 영향 : 개인 사용자의 데이터와 계정 정보가 노출될 수 있음. 비즈니스 영향 : 사용자의 개인 정보 유출이 기업의 신원 도용, 부정, 브랜드 손 상으로 이어질 수 있음.
15
2.2 모바일 환경의 위협 요소 M4. 안전하지 않은 인증 위협 대상 : 전형적으로 자동화된 툴을 이용하여 공격 수행
공격 요인 : 모바일 악성 코드나 봇넷으로 인증 체계의 취약점을 발견하면 모 바일 앱 백 엔드 서버에게 서비스 요청을 전달하여 인증 또는 모바일 앱의 특 정 요청을 우회 보안 취약성 : 보통 모바일 장치의 입력폼에서 발생 기술적 영향 : 공격자가 다른 사용자에게 특정 행위를 할 수 있음. 비즈니스 영향 : 브랜드 손상, 정보 유출, 데이터에 대한 불법적인 접근 등의 결 과 초래
16
2.2 모바일 환경의 위협 요소 M5. 불충분한 암호화 위협 대상 : 부적절하게 암호화된 데이터에 물리적으로 접근할 수 있는 모든 행위자 또는 모바일에 설치된 악성 코드 공격 요인 : 장치에 물리적으로 접근하여 데이터를 복호화하거나 네트워크 트 래픽을 캡처하거나 암호화된 데이터에 접근할 수 있는 악성코드 보안 취약성 : 암호화된 코드를 복호화하거나 암호화 절차의 결함이나 취약한 암호화 알고리즘으로 원본 데이터를 복호화 기술적 영향 : 민감한 데이터가 유출될 수 있음. 비즈니스 영향 : 프라이버시 침해, 정보 유출, 코드 유출, 지식재산권 유출, 브 랜드 손상과 같은 결과를 초래
17
2.2 모바일 환경의 위협 요소 M6. 안전하지 않은 권한 위협 대상 : 자동화된 툴을 이용하여 공격 수행
공격 요인 : 권한 체계가 취약하다는 것을 공격자가 파악하면 합법적인 사용자 로 애플리케이션에 로그인하여 성공적으로 권한 통제를 우회 보안 취약성 : 낮은 권한을 가진 사용자가 높은 권한을 가진 사용자만이 실행 가능한 기능을 실행할 수 있는지 확인 기술적 영향 : 관리자 권한으로 특정 명령어를 실행하거나 시스템을 파괴하거 나 민감한 데이터가 유출될 수 있음. 비즈니스 영향 : 브랜드 손상, 부정, 정보 유출과 같은 다양한 비즈니스 영향이 발생
18
2.2 모바일 환경의 위협 요소 M7. 클라이언트 코드 품질 위협 대상 : 모바일 코드에 의도치 않은 입력을 전달
공격 요인 : 공격 대상 앱에 조작된 입력값을 전달하여 공격을 수행 보안 취약성 : 정적 분석 도구 또는 퍼저를 이용하여 모바일 코드의 취약점을 발견 기술적 영향 : 공격자가 원하는 특정 코드를 실행하거나 모바일 장치에 대한 서비스 거부 공격을 원격으로 수행할 수 있음. 비즈니스 영향 : 브랜드 손상, 지식재산권 유출, 정보 유출 등의 결과를 초래
19
2.2 모바일 환경의 위협 요소 M8. 코드 변조 위협 대상 : 앱스토어에 조작된 앱을 올리거나 피싱 공격을 통해 코드가 변조
된 악의적인 앱을 설치하도록 유도 공격 요인 : ‘애플리케이션 패키지의 핵심 바이너리에 대한 바이너리 변경’, ‘애플리케이션 패키지에 있는 리소스 파일에 대한 바이너리 변경’, ‘악의적 인 목적의 코드를 실행하거나 데이터를 캡처하는 시스템 API 변경’ 등 보안 취약성 : 애플리케이션의 형태를 변경(바이너리 패치, 로컬 자원 변경, 메 소드 후킹 포함) 기술적 영향 : 일반적으로 새로운 기능을 추가하거나 정보를 유출 비즈니스 영향 : 저작권 침해로 인한 수익 감소, 브랜드 손상 등의 결과를 초래
20
2.2 모바일 환경의 위협 요소 M9. 역공학 위협 대상 : 앱스토어에서 공격 대상 앱을 내려받아 로컬 환경에서 분석
공격 요인 : IDA Pro, Hopper, otool, strings와 같은 바이너리 검사 툴을 이용하 여 핵심 바이너리 파일 분석 보안 취약성 : 일반적으로 모바일 코드는 역공학에 취약 기술적 영향 : 백 엔드 서버 정보 추출, 암호화된 문자열 또는 암호화 키 추출, 지식재산권 정보 추출, 백 엔드 시스템에 대한 공격 수행과 같은 목적을 달성할 수 있음. 비즈니스 영향 : 지식재산권 유출, 브랜드 손상, 신원 도용, 백 엔드 시스템에 대한 침해 등의 결과를 초래
21
2.2 모바일 환경의 위협 요소 M10. 관련 없는 기능 위협 대상 : 일반적으로 백 엔드 시스템에서 숨겨진 기능을 찾기 위해 모바일 앱의 기능을 분석 공격 요인 : 로그 파일과 설정 파일을 살펴보거나 때로는 개발자가 실수나 고 의로 특정 기능을 숨겨 놓기도 함. 보안 취약성 : 백 엔드 테스트 환경에 대한 정보나 사용자 환경 테스트 정보, API 관련 정보를 포함하는 기능 등은 공격자에게 유리하게 사용될 수 있음. 기술적 영향 : 백 엔드 시스템의 동작 내용 노출, 비인가자가 높은 권한을 가지 고 특정 기능을 수 행하는 것 등 비즈니스 영향 : 민감한 기능에 대한 불법적인 접근, 브랜드 손상, 지식재산권 노출 등
22
2.3 안드로이드 앱 분석 안드로이드 앱 분석 과정
23
2.3 안드로이드 앱 분석 안드로이드 앱 분석 과정
24
2.3 안드로이드 앱 분석 안드로이드 앱 분석 과정
25
2.3 안드로이드 앱 분석 apk 파일 구하기 다음 사이트에서 검색하여 특정 apk 파일을 내려받음.
26
2.3 안드로이드 앱 분석 아스트로 파일 관리자 앱으로 apk 파일 추출
안드로이드 기반 스마트폰에서 아스트로 파일 관리자 앱을 이용하여 스마트폰 에 설치된 앱을 apk 확장자로 백업
27
2.3 안드로이드 앱 분석 아스트로 파일 관리자 앱으로 apk 파일 추출
설정에서 앱의 백업 경로를 지정하고, [어플리케이션 관리자]를 클릭 원하는 앱을 선택하고 <백업>을 클릭하여 파일 복사 시작
28
2.3 안드로이드 앱 분석 아스트로 파일 관리자 앱으로 apk 파일 추출
을 확인
29
2.3 안드로이드 앱 분석 압축 풀기로 dex 파일 추출
7-zip을 설치한 뒤 apk 파일을 선택하고 마우스 오른쪽 버튼을 눌러 7-zip으로 압축 풀기 다운로드 :
30
2.3 안드로이드 앱 분석 압축 풀기로 dex 파일 추출
31
2.3 안드로이드 앱 분석 apktool로 스마일리 파일 추출
apk 파일로 패키징되어 있는 앱을 언패키징하여 내부 파일을 보기 위해 apktool 을 사용 다운로드 :
32
2.3 안드로이드 앱 분석 apktool로 스마일리 파일 추출 apktool의 다운로드 및 설치(윈도우를 예로 살펴봄)
① wrapper script 링크를 마우스 오른쪽 버튼으로 눌러 나타나는 메뉴에서 [다른 이름으 로 대상(링크) 저장]을 선택, 해당 파일을 특정 폴더에 apktool.bat로 저장 ② find newest here 링크를 클릭하면 나타나는 사이트에서 최신 버전의 apktool을 다운 로드하여 apktool.bat 파일이 있는 폴더로 복사 ③ 다운로드한 jar 파일의 이름을 apktool.jar로 변경 ④ apktool.jar와 apktool.bat 파일을 윈도우 디렉터리(C:\Windows\)로 복사 ⑤ C:\Windows\ 폴더에 복사할 권한이 없다면 특정 폴더에 복사하고, 시스템 환경 변수 에 해당 경로를 등록 ⑥ 윈도우의 커맨드 창(cmd.exe)을 띄워서 apktool을 실행
33
2.3 안드로이드 앱 분석 apktool로 스마일리 파일 추출
apktool을 통해 분석을 원하는 앱(apk 파일)의 압축 풀기 apktool d [압축을 풀려는 apk 파일]
34
2.3 안드로이드 앱 분석 apktool로 스마일리 파일 추출
35
2.3 안드로이드 앱 분석 dex 파일에서 jar 파일 추출
dex 파일에서 jar 파일을 만들려면 dex2jar 프로그램이 필요 다운로드 :
36
2.3 안드로이드 앱 분석 dex 파일에서 jar 파일 추출
dex2jar-2.0.zip 파일을 내려받아 zip 파일의 압축을 풀고 해당 폴더를 임의의 폴 더에 복사 ‘3 압축 풀기로 dex 파일 추출’에서 얻은 classes.dex 파일을 해당 폴더에 복사
37
2.3 안드로이드 앱 분석 dex 파일에서 jar 파일 추출
classes.dex 파일을 풀면 같은 폴더에 classes-dex2jar.jar 파일이 생성 jd-gui와 같은 프로그램을 이용하면 내용을 살펴볼 수 있음. 다운로드 : 압축을 풀고 jdgui.exe 파일을 실행하여 classes-dex2jar.jar 파일을 불러오면 디 컴파일된 class 파일을 살펴볼 수 있음. C:\dex2jar>d2j-dex2jar.bat classes.dex dex2jar classes.dex -> .\classes-dex2jar.jar
38
2.3 안드로이드 앱 분석 dex 파일에서 jar 파일 추출
압축을 풀고 jdgui.exe 파일을 실행하여 classes-dex2jar.jar 파일을 불러오면 디 컴파일된 class 파일을 살펴볼 수 있음.
39
2.3 안드로이드 앱 분석 jar 파일 압축 풀기로 class 파일 만들기
7-zip으로 jar 파일을 풀면 class 파일이 생성
40
2.3 안드로이드 앱 분석 class 파일을 디컴파일하여 java 파일 만들기
class 파일을 원래 소스코드인 java 파일로 바꾸기 위해 jad를 사용 다운로드 : 내려받은 jad.exe 파일을 class 파일이 있는 상위 디렉터리로 복사
41
2.3 안드로이드 앱 분석 class 파일을 디컴파일하여 java 파일 만들기
Sublime Text 프로그램으로 보면 보다 정교하게 디컴파일된 java 코드 확인 다운로드 : jad -r -sjava -d classes-dex2jar **/*.class
42
3.1 모바일 위협 요소에 대한 대응 방안 ‘안전하지 않은 데이터 저장’에 대한 대응 방안 iOS 환경에서의 대응 방안
모바일 기기의 파일 시스템에 중요한 개인 식별 정보를 저장하지 않는다. 불가피하게 사용자 인증 정보를 제공해야 한다면 반드시 표준 웹 또는 API 로그인 스키마(HTTPS 등)를 사용한다. 정보를 저장하는 곳이나 캐시는 CommonCrypto와 같은 표준 iOS 암호화 라이브러리 사용을 고려한다. 데이터가 적다면 애플에서 제공하는 keychain API 사용을 권장한다. 데이터베이스에 대해서는 SQLite 데이터를 보호하기 위해 SQLcipher 사용을 권장한다. 민감한 데이터를 plist 파일에 저장할 때는 가급적 NSUserDefaults를 사용하지 않는다. NSManagedObjects를 이용한 모든 데이터/엔티티는 보호되지 않는 데이터베이스 파 일에 저장된다는 것을 인지해야 한다.
43
3.1 모바일 위협 요소에 대한 대응 방안 ‘안전하지 않은 데이터 저장’에 대한 대응 방안 안드로이드 환경에서의 대응 방안
로컬 저장소에 대한 엔터프라이즈 안드로이드 장치 관리 API는 ‘setStorageEncryption’ 을 통해 로컬 파일 저장소를 강제로 암호화하는 데 사용할 수 있다. SD 카드 저장소에 대한 보안은 ‘javax.crypto’ 라이브러리를 통해 부분적으로 해결할 수 있다. (가장 쉬운 것은 마스터 패스워드와 AES128로 평문 데이터를 암호화하는 것) 응용 프로그램 간의 정보 공유를 위해 반드시 필요한 경우가 아니면 모든 공유 환경 설 정에 MODE_WORLD_READABLE이 되지 않도록 한다.
44
3.1 모바일 위협 요소에 대한 대응 방안 ‘충분하지 않은 전송 계층 보호’에 대한 대응 방안 일반적인 고려 사항
네트워크 계층은 안전하지 않기 때문에 잠재적으로 도청이 가능하다는 사실을 항상 염 두에 두어야 한다. 민감한 정보, 세션 토큰, 그 외 중요한 데이터를 백 엔드 API 또는 웹 서비스와 주고받 을 때는 모든 전송 채널에 대해 SSL/TLS를 사용한다. 산업 표준 암호 알고리즘을 사용하고, 키의 길이는 짧지 않게 적절히 설정한다. 신뢰할 수 있는 CA 제공자가 서명한 인증서를 사용한다. 자체 서명한 인증서는 절대 받아들이지 않는다. SSL chain 검증을 무시하거나 비활성화시키지 않는다. 유효하지 않은 인증서가 탐지되면 경고를 보낸다.
45
3.1 모바일 위협 요소에 대한 대응 방안 ‘충분하지 않은 전송 계층 보호’에 대한 대응 방안 iOS 환경에서의 대응 방안
CFNetwork를 사용할 때 신뢰할 수 있는 클라이언트 인증서를 지정하기 위해 안전한 전송 API를 사용하는지 확인한다. 대부분의 경우 NSStreamSocketSecurityLevelSSLv3 또는 NSStreamSocketSecurityLevelTLSv1은 매우 높은 암호화 표준 길이를 사용한다. 개발 후 NSURL 콜(또는 NSURL의 래핑)은 자체 서명된 것이나 NSURL 클래스 메소드 인 setAllowsAnyHTTPSCertification과 같은 유효하지 않은 인증서를 받아들여서는 안 된다. 안드로이드 환경에서의 대응 방안 애플리케이션에서 org.apache.http.conn.ssl.AllowAllHostnameVerifier 또는 SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER와 같은 모든 인증서를 받아들이 지 않도록 개발 사이클이 끝나면 해당 부분을 모두 제거해야 한다.
46
3.2 모바일 통제와 설계 원칙 모바일 장치에 있는 민감한 데이터를 식별하고 보호
설계 단계에서 데이터의 중요도와 통제 적용을 고려하여 데이터 저장 방식을 분류한다(예를 들어 패스워드, 개인 데이터, 위치 정보, 에러 로그 등). 데이터의 처리와 저장, 사용은 이 분류 기준에 따라 수행되어야 한다. 또한 API 함수에 대 한 보안 검증은 민감한 데이터에 적용되어야 한다. 민감하고 중요한 데이터는 클라이언트 측 장치가 아닌 서버에 저장한다. 이는 안전한 네트워크 연결이 보장되고, 서버 측에 적용된 보호 메커니즘이 높은 수 준이라는 것을 전제로 한다. 장치에 데이터를 저장할 때 OS에서 제공하는 파일 암호화 API를 사용한다. 애플리케이션을 개발할 때 데이터를 최초 생성할 때부터 저장, 이용, 삭제할 때 까지 유출되지 않도록 안전한 방법을 고려한다.
47
3.2 모바일 통제와 설계 원칙 장치에 있는 패스워드 식별 정보를 안전하게 처리
패스워드 대신 장치에 안전하게 저장할 수 있는 긴 문자열의 인증 토큰 사용을 고려한다. 해당 토큰이 전송될 때 SSL/TLS를 이용하여 안전하게 교환되도록 한 다. 패스워드를 장치에 저장해야 할 경우 모바일 OS에서 제공하는 암호화와 키 저 장 메커니즘을 이 용한다. 모든 패스워드의 복잡도를 테스트한다. 패스워드와 키가 캐시 또는 로그에 보이지 않도록 한다. 패스워드 또는 비밀 정보가 애플리케이션 바이너리에 포함되지 않도록 한다.
48
3.2 모바일 통제와 설계 원칙 전송 시 민감한 데이터가 보호되는지 확인 전송되는 네트워크가 안전하지 않다고 가정한다.
애플리케이션에서 네트워크를 통해 민감한 데이터를 전송할 때 SSL/TLS와 같 은 end-to-end 시큐어 채널을 사용한다. AES와 같은 검증된 암호화 알고리즘을 사용하고 적절한 키 길이를 적용한다. 신뢰된 CA 제공자에 의해 서명된 인증서를 사용한다. 자체 서명된 인증서는 허 용하지 않는다. 민감한 데이터에 대한 Man-in-middle 공격(SSL proxy, SSL strip)의 위험을 줄 이기 위해 원 격 엔드-포인트(서버) 식별을 검증한 후 안전한 채널을 연결한다. 민감한 데이터를 전달할 때는 SMS, MMS 또는 공지 문자 등을 사용하지 않는 다.
49
3.2 모바일 통제와 설계 원칙 사용자 인증, 권한, 세션 관리를 올바르게 구현
애플리케이션에 적절한 길이의 사용자 인증값을 요청한다. 초기 인증 이후 세션 관리는 안전한 프로토콜을 통해 처리한다. 매우 복잡하고 예측하기 어려운 세션 식별자를 사용한다. 인증할 때 IP 주소와 같은 추가 보안 요소를 사용한다. 백 엔드 API(서비스)와 플랫폼(서버)을 안전하게 유지 모바일 장치와 웹 서버 백 엔드 또는 다른 외부 인터페이스 간에 민감한 데이 터가 의도치 않은 상태로 전송되는 경우가 있는지 코드를 면밀히 확인한다. 모바일 앱에 대한 모든 백 엔드 서비스(REST/Web 서비스)는 주기적으로 취약 점을 검토한다. OS, 웹 서버, 다른 애플리케이션 컴포넌트 등에 적용된 최신 보안 패치가 백 엔 드 플랫폼(서버)에 적용되어 있는지 확인한다. 사용자/IP별 Rate 최솟값을 적용하여 DDoS 공격의 위험을 줄인다.
50
3.2 모바일 통제와 설계 원칙 서드 파티 서비스와 애플리케이션의 데이터 통합을 안전하게 수행
모바일 애플리케이션에서 사용되는 서드 파티 코드/라이브러리에 대한 보안과 인증이 안전하게 되어 있는지 확인한다. 보안 패치를 위해 모바일 애플리케이션에서 사용되고 있는 서드 파티 프레임워 크/API를 조사한다. 신뢰할 수 없는 서드 파티 앱으로부터 전달받는 모든 데이터를 유심히 살펴본다. 사용자 데이터의 수집과 사용 동의를 구할 때는 신중히 대처 개인 정보를 보호할 수 있는 정책을 수립하고, 개인 정보 및 데이터를 사용할 경 우 사용자의 동의를 받는 채널을 만든다. 앱을 만들 때 사용자 개인 정보를 수집하는지 확인한다. 의도치 않은 노출을 확인하기 위해 커뮤니케이션 메커니즘을 살펴본다. 개인 식별 정보 전송에 대한 동의 기록을 보관한다.
51
3.2 모바일 통제와 설계 원칙 금융 지불 자원에 불법으로 접근하지 못하게 통제 모바일 애플리케이션을 안전하게 배포
금융 지불 자원에 접근한 로그를 모두 기록한다. 금융 지불 자원에 익명으로 접근이 가능한지, 재인증을 실행하는지 검사한다. 금융 지불 자원 주소에 대해 기본적으로 화이트리스트 모델을 사용한다. 금융 지불 자원에 대한 모든 API 호출을 인증한다 wallet API 콜백에서 계정/금액/청구/항목 정보를 평문으로 전송하지 않는다. 모바일 애플리케이션을 안전하게 배포 애플리케이션은 보안 패치를 적용시키도록 설계하고, 앱 스토어에서 승인되기 위한 모든 요건을 충족해야 한다. 앱 스토어는 안전하지 않은 코드를 포함한 앱을 지속적으로 모니터링하고, 사 고가 발생하면 즉시 공지하고 원격에서 바로 삭제한다. 공식적인 앱 스토어를 통해 배포되는 앱은 취약점이 발생할 경우를 대비해 안전장치를 제공한다. 앱에서 보안 문제가 발견되었을 때 보고할 수 있는 피드백 채널을 제공한다.
52
3.2 모바일 통제와 설계 원칙 에러에 대한 실시간 코드 해석기(인터프리터)를 면밀히 확인
실시간 코드 해석기를 최소화하고 필요할 때는 최소한의 권한으로 실행한다. 실시간 코드 해석기의 퍼지 테스트를 한다. 샌드박스로 실시간 코드 해석기를 보호한다 ※ 안전한 앱 코딩 방법 • 정상적인 방법뿐만 아니라 비정상적인 방법으로도 앱을 테스트한다. • 모든 입력값을 검증한다. • 프로그래밍 코드를 최소화한다. • 안전한 언어를 사용한다(예를 들어 버퍼 오버플로가 안 되는 함수 사용 등). • 보안 결함을 찾기 위해 정적 분석과 동적 분석을 수행하고 퍼지 테스트를 한다. • 버퍼, 정수 오버플로를 피하기 위해 안전한 문자열 함수를 사용한다. • 애플리케이션이 요구하는 최소한의 권한으로 앱을 구동한다. • API에서 기본적으로 부여하는 권한을 인지하고 필요하지 않다면 제거한다. • 루트나 시스템 관리자 권한으로 코드나 앱을 실행하지 않는다. • 권한을 가진 사용자뿐만 아니라 표준 권한으로도 테스트를 수행한다. • OS에서 제공하는 통신 메커니즘을 사용한다. • 앱을 배포하기 전에 테스트한 모든 코드를 제거한다. • 로깅이 적절하게 기록되는지 확인한다. 단, 민감한 정보까지 불필요하게 로그에 보 관하지 않도록 한다.
Similar presentations