1. Mobile OWASP Top 10 ( 2014)
No | 진단 항목 | 내용 |
---|---|---|
1 | 서버 측 통제 미흡 | 모바일 앱을 통해 모바일 웹 사이트 침해 사고 |
2 | 취약한 정보 저장 방식 | 설정파일, DB 파일등에 사용자 정보 저장등 |
3 | 취약한 전송 계층 보호 | 평문으로 주요 데이터 전송 |
4 | 의도하지 않은 정보 유출 | 웹 브라우져 캐시, 키보드 캐시, 로그등 단말기 OS 에서의 특성에 읜한 정보 유출 |
5 | 취약한 인증 및 권한 관리 | 인증 권한을 단말기에 의존, 4자리 PIN 등의 간단한 번호 |
6 | 취약한 암호화 | 암호화를 부적절하게 또는 취약한 암호화 |
7 | 클라이언트 측 삽입 | 사용자 입력값 통제, SQL injection. XSS, 3자 앱의 무단 기능 호출등 |
8 | 신뢰 할 수없는 사용자 입력값 | 보안과 관련된 의사 결정이 필요한 기능을 입력값을 믿고 신뢰 할 경우 3자 앱에 의해 의도치 않는 동작 |
9 | 세션 처리 미흡 | 세션 타임 아웃 및 로그인 |
10 | 엡 바이너리 보호 미흡 | 악의적으로 변조된 앱 |
1. 서버 측 통제 미흡
- 위협
- 스마트폰 단말기가 아닌 일반 브라우저에서 접근
- attack vector
- 모바일 웹사이트를 일반 브라우저를 이용해서 편리한 환경에서 해킹시도
- 문제점
- 웹 취약점을 공략
- 발생 가능한 부분
- 하이브리드 앱에 포함된 웹페이지를 크롬등을 이용해서 분석 및 해킹시도
- 대응 방안
- 모바일 사이트도 일반 사이트 처럼 보안 절차 필요
- SQL injection, Cross Site Scripting 등 주기적인 보안 점검 수행
- 단말기 API 에서만 동작하도록 통체
2. 취약한 정보 저장 방식
- 위협 - 분실한 스마트폰 또는 악성코드로 로컬에 저장된 정보에 접근
- attack vector
- 파일 탐색 프로그램이나 로걸 DB 에 접속하여 평문으로 저장된 데이터를 열람 변조등 또는 외부로 유츌
- 문제점
- 루팅을 통한 손쉬운 접근, 암호화된 경우에도 비교적 손쉽게 해결
- 발생 가능한 부분
- 저장 기능이 있는 앱의 대부분
- 대응 방안
- 반드시 필요한 경우를 제외하고는 되도록 스마트폰 로컬에 저장하지 않는다.
- 외부저장소에 민감한 정보를 저장하면 안된다.
- 필요한 경우 OS 에서 제공하는 암호화 API 사용
3. 취약한 전송 정보 계층 보호
- 위협
- 서버 클라이언트구간의 평문으로 전송
- attack vector
- 신뢰할 수 없는 네트워크 공간에서 제3자가 평문으로 된정보를 열람/변조하거나 외부 서버로 유출
- 문제점
- 서버, 클라이언트 구간에서 제3자가 개입할 수 있다.
- 인터넷에 공개된 가짜 AP를 통한 정보를 열람/변조 또는 외부 서버로 유출
- 대응 방안
- SSL/TLS를 사용하거나 주요 정보를 암호화 한다.
4. 의도하지 않은 정보 유출
- 위협
- 분실한 스마트폰 또는 악성코드로 로컬에 저장된 정보에 접근
- attack vector
- 신파일 탐색 프로그램이나 로걸 DB 에 접속하여 평문으로 저장된 데이터를 열람 변조등 또는 외부로 유츌
- 문제점
- 개발자가 단말기 OS의 특성, 보안기능 및 이로 인한 보안 영향에 대해 충분히 파악하지 않고 개발
- 발생 가능한 부분
- 로그, 스크린샷 브라우져 캐시, 임시 폴더
- 코드에 있는 테스트용 계정 정보
- 대응 방안
- 로그는 기록하지 않도록 개발
- 아이디 / 패스워드 등은 스크린샷을 통한 유출 대비(**)
- 인앱브라우져 역시 캐시를 지워준다.
- 소스코드내 민감한 정보를 하드코딩하는것 바람직 하지 않다.
5. 취약한 인증 및 권한 관리
- 위협
- 부적절하게 구현된 인증 절차나 권한 확인 절차를 우회하여 특정사용자 권한도용
- attack vector
- 인증 권한 절차가 없거나 부적절하게 된 경우 다른사용자가 이를 우회하여 접근
- 문제점
- 분실된 경우를 고려하지 않았거나 구현 과정의 실수
- 대응 방안
- 인증 권한 관리를 구현 해야 한다.
- 기기 분실 위험에 대해서 고려할 필요가 있다.
- 개발 도구를 이용해 앱 위/변조 하여 인증, 권한 관리를 우회 할수 있으므로 권한 관리의 최종 점검은 서버측에서 수행해야함
6. 취약한 암호화
- 위협
- 암호화된 정보를 3자가 획득함
- attack vector
- 암호화된 정보를 복호화하여 평문으로 볼 수 있다.
- 문제점
- 암호화가 아닌 방법을 암호화로 착각하여 발생
- 믿을 만한 암호화 이지만 부적절하게 사용하여 발생
- 대응 방안
- 암호화 키를 모바일 앱 내에 함께 저장하는 방법을 사용하지 않는다.
- 신뢰 할 수 있는 라이브러리를 사용한다.
- 플랫폼에서 제공하는 기능을 사용한다.
- base64, 난독화, 시리얼라이즈는 암호화가 아니다.
7. 클라이언트측 삽입
- 위협
- 3자가 앱에 비정상 데이터를 삽입
- attack vector
- 앱, 웹에 비정상 데이터를 삽입하여 해킹
- 문제점
- 3자가 해당 앱의 기능을 호출 하거나 통신 과정에 개입 할 수 없다는 가정 하에 개발 하여 발생
- 사용자 입력 부분의 SQL injection, Cross Site Scripting, 버퍼오버플로우등
- 발생 가능한 부분
- 자바스크립트 enable , 자바스크립트 인터페이스를 이용할 수 있음
- 대응 방안
- 사용자 입력값 검증
- html tag, javascript 및 sql query 등의 비정상 데이터 방지
- DB 관련 작업시 prepared statement SQL injection 링크
- 문자열 처리보다 안전한 함수 사용
8. 신뢰 할 수 없는 사용자의 입력값
- 대응 방안
- 사용자 입력값 검증, 사용자를 믿지 마라 ##### 9. 세션 처리 미흡
- 대응 방안
- 세션 타임 아웃을 단말기에 의존하지 말아야 한다.
10. 앱 바이너리 보호 미흡
- 위협
- 3자가 앱을 역컴파일하여 분석한후 정상기능 변경한 위변조 바이너리 배포
- attack vector
- 앱 자체를 역컴파일하여 분석
- 문제점
- 사용자가 자사가 개발한 정상적인 앱만 사용할 것이라고 가정한 상태에서 개발 하여 발생
- 대응 방안
- 바이너리 위변조 방지 및 분석 방지를 위한 보안도구 사용(프로가드 등)
- 솔루션??