1. 취약점 소개
개발자 백도어는 개발자가 편하게 사용자처럼 인증이 가능하고 여러 가지 업무를 수행하기 위해 자신만이 들어갈 수 있는 계정, 인증 우회방법을 말한다. 개발자 본인에게는 편할 수 있지만 추후에 배포용 어플리케이션, 서버 코드에 개발 백도어 코드가 삽입되면 어플리케이션 보안에 매우 취약할 수 있다.
2. 취약점 진단
[그림 2-1] devadmin 계정
DoLogin.java 파일을 열고 소스코드를 보면 httppost2를 선언해 username이 devadmin이면 별다른 암호 인증 처리 없이 로그인이 가능하다는 걸 추측할 수 있다.
[그림 2-2] devadmin 로그인 화면
인시큐어뱅크 앱을 실행시켜 devadmin, 123123으로 계정을 입력하고 로그인을 시도한다.
[그림 2-3] 로그인 성공
로그인 시도 결과 devadmin 계정은 아무 비밀번호나 입력해도 인증이 우회되어 로그인 되었음을 확인할 수 있다.
[그림 2-4] Transfer 실행
로그인이 완료되고 Transfer을 실행시켜 Get Account를 클릭하면 값이 전혀 입력 되지 않는다. 이는 개발자 계정으로 로그인 했기 때문인데 인시큐어뱅크 앱에서는 중요 정보 값이 실행 되지 않지만 실제 앱에선 개발자 계정으로 로그인해도 중요 정보 값이 실행 되는 경우가 많다.
3. 대응 방안
[그림 3-1] DoLogin.java 파일
Dologin.java 파일의 코드이다. If else 구문에서 devlogin 부분의 username을 그대로 받고 있다. Password 부분은 따로 없기 때문에 어떠한 숫자를 입력해도 로그인이 가능하다. 이런 이유로 if else 구문을 주석처리를 하면 취약점 방어가 가능하다.
[그림 3-2] app.py 파일 코드
서버 코드인 app.py를 보면 devlogin 부분이 있는데 서버쪽에서도 devlogin을 실행시키고 있음을 볼 수 있는데 별다른 검증 없이 username만 허용되면 어떠한 패스워드를 입력해도 로그인이 가능하다. 이 부분을 주석 처리하면 취약점 방어가 가능하다.
[그림 3-3] devadmin 로그인 화면
주석 처리한 코드들을 저장하고 앱을 다시 빌드하고 실행한다. 인시큐어뱅크 앱 서버도 다시 실행한 후 devadmin, 123123을 입력하고 로그인을 시도하면 로그인이 되지 않음을 확인할 수 있다. 이로써 개발자 백도어 취약점이 방어되었다.
'안드로이드 앱 취약점 진단 > 인시큐어뱅크' 카테고리의 다른 글
애플리케이션 패칭 취약점 (0) | 2020.04.15 |
---|---|
파라미터 조작 (0) | 2020.02.29 |
취약한 액티비티 컴포넌트 (0) | 2020.02.15 |
XSS 공격 (0) | 2020.02.10 |
로컬 암호화 이슈 (0) | 2020.02.09 |