Self-Improvement

모바일 2016년 OWASP TOP10 본문

AOS

모바일 2016년 OWASP TOP10

JoGeun 2018. 10. 20. 14:35

M1 – 적절하지 않은 플랫폼 사용
이 항목은 플랫폼의 보안에 대한 개발지침을 위반했거나 기존 관습 사례를 따르지 않았을 경우 혹은 의도하지 않았지만 작업 중 실수를 했을 경우 생기는 취약점을 다룬다. 문제는 이러한 경우 공격가능성과 그에 따른 영향도가 심각하다는 점이다. 




M2 – 취약한 데이터 저장소
이 새로운 항목은 Mobile Top 10 2014의 M2(취약한 데이터 저장소)와 M4(의도하지 않은 데이터 노출)를 통합한 것으로, 안전하지 않은 데이터 저장 및 의도하지 않은 데이터 유출에 대해 다루고 있다. OWASP는 보안대책으로 모바일 앱, OS, 플랫폼과 프레임워크의 위협모델이 정보자산을 처리하고, API가 이런 자산을 다루는 방법을 이해해야 한다고 조언했다. 




M3 – 취약한 통신
이 항목은 데이터를 A에서 B로 이동하는 측면을 모두 다루며, 여기에는 모바일에서 모바일로의 통신, 앱 간 통신 또는 모바일에서 다른 쪽으로의 통신이 모두 포함된다. 여기에서는 악의적인 핸드 셰이킹, 잘못된 SS L버전, 약한 협상, 민감정보의 평문통신 등을 검토한다. 




M4 – 취약한 인증
여기서는 최종 사용자 인증 또는 잘못된 세션 관리에 대해 이야기하고 있다. 주로 △사용자 식별을 못하는 경우 △사용자 신원이 유지되지 않는 경우 △세션 관리 취약점 등을 다루며, 공격이 쉽기 때문에 그만큼 영향도도 높은 것으로 알려졌다. 




M5 – 취약한 암호화
중요한 정보 자산을 암호화하는 것은 당연하다. 하지만 어떤 측면에서는 충분하지 않은 것도 사실이다. M3(취약한 통신)에서 TLS 또는 SSL과 관련된 사항들이 있다. 또한, 앱이 암호화를 사용해야할 때 하지 않았다면, M2(취약한 데이터 사용)에 속한다. 모바일 앱은 근본적으로 결함이 있는 암호화·복호화 프로세스를 사용할 수 있으며, 민감한 데이터를 복호화하기 위해 공격자가 악용할 수 있다. 또한, 모바일 앱은 본질적으로 취약하고 공격자에 의해 직접 복호화 될 수 있는 암호화·복호화 알고리즘을 구현하거나 활용할 수 있다




M6 – 취약한 권한 부여
이 항목은 잘못된 권한(Authorization) 부여(클라이언트 측의 권한 부여, 강제 검색 등)를 다룬다. 이는 인증(Authentication) 문제(기기 등록, 사용자 식별 등)와 다르다. 사용자 인증을 하지 않은 상황(인증된 후, 권한이 부여 되어 접근이 필요할 때 일부 리소스 또는 서비스에 익명 접근 허용)이라면, 권한 부여가 잘못된 것이 아니라 인증이 잘못된 것이다.




M7 – 취약한 코드 품질
이것은 모바일 클라이언트의 코드 수준 구현 문제에 대한 포괄적인 문제를 말한다. 이는 서버 측 코딩 실수와 구별된다. 버퍼 오버플로우, 형식 문자열 취약성 및 모바일 장치에서 실행중인 일부 코드를 다시 작성하는 다양한 코드 수준의 실수와 같은 취약점 위험을 파악한다. 이는 일반적으로 프로그래밍 언어 자체(Java, Swift, Objective C, JavaScript)를 참조하기 때문에 부적절한 플랫폼 사용과는 다르다. 




M8 – 코드 변조
이 범주에는 바이너리 패치, 로컬 리소스 수정, 메서드 후킹, 메서드 변경 및 동적 메모리 수정이 포함된다. 어플리케이션을 모바일 장치에 설치하면, 코드 및 데이터 리소스가 해당 모바일 장치에 존재한다. 공격자는 코드를 직접 수정하거나 메모리 내용을 동적으로 변경하거나 어플리케이션이 사용하는 시스템 API를 변경 및 대체하거나 어플리케이션의 데이터와 자원을 수정할 수 있다. 이것은 공격자에게 소프트웨어의 의도된 사용을 개인적 또는 금전적 이득을 위해 파괴하는 직접적인 방법을 제공할 수 있다.




M9 – 리버스 엔지니어링
이 항목에는 소스 코드, 라이브러리, 알고리즘 및 기타 자산을 결정하기 위한 최종 코어 바이너리 분석이 포함된다. IDA Pro, Hopper, o’toole 및 기타 바이너리 검사 도구와 같은 소프트웨어는 공격자가 어플리케이션의 내부 동작을 파악할 수 있도록 한다. 이는 백엔드 서버, 암호화 상수 및 암호 및 지적 재산에 대한 정보를 공개하는 것 외에도 어플리케이션의 초기 취약점을 악용하는 데 사용될 수 있다.




M10 – 불필요한 기능
종종 개발자는 숨겨진 백도어 기능 또는 프로덕션 환경으로 배포하지 않을 예정인 기타 내부 개발보안 컨트롤을 만들기도 한다. 예를 들어, 개발자가 실수로 하이브리드 앱에 댓글로 비밀번호를 포함시킬 수도 있다. 또한, 테스트 중 2중 인증을 사용하지 못하도록 한다. 쉽게 말하면 앱에 공개하지 않을 기능을 삭제하지 않고 그대로 두는 것을 말한다.