Android/InsecureBankv2

인시큐어뱅크 앱 취약점 - 취약한 비밀번호 변경 로직

박연준 2023. 7. 3. 21:30

인시큐어뱅크 앱 취약점 - 취약한 비밀번호 변경 로직

취약점 소개

비밀번호 변경 구현 취약점은 모바일 앱의 비밀번호 변경 기능을 사용할 때 취약하게 구현되어 있어 제 3자가 비밀번호를 변경할 수 있는 취약점이다.

인시큐어뱅크 앱은 비밀번호 변경 버튼을 클릭하면 로그인 중인 사용자의 현재 비밀번호를 입력받지 않고 새로운 비밀번호를 변경할 수 있다.

실질적으로 사용자에게 배포한 앱에 이런 취약점이 있다면 여러 사용자의 비밀번호를 일괄적으로 변경할 수 있고, 중요한 정보와 민감한 정보를 획득할 수 있는 중대한 취약점이 존재한다.

취약점 진단

보안이 잘 적용되어 있는 다른 포탈 사이트는 로그인 후 비밀번호 변경 페이지에 접속하면 현재 비밀번호, 새로운 비밀번호, 새로운 비밀번호 확인 총 3단계를 거친다.

하지만 인시큐어뱅크 앱은 정상적으로 로그인이 되면 현재 비밀번호를 요구하지 않아 임의의 사용자가 비밀번호를 변경할 수 있게 구현되어 있다.

AndroidManifest.xml 파일의 ChangePassword 액티비티는 비밀번호 변경을 담당하는 액티비티이다. android:exported 부분이 true이기 때문에 다른 모바일 앱에서 인증 과정 없이 비밀번호를 변경할 수 있는 취약점이 존재한다.

 

모바일 앱에 회원가입 되어 있는 계정으로 로그인 한다. 비밀번호 변경 버튼을 클릭하면 새로운 비밀번호를 입력할 수 있는 폼이 나타난다.

 

 

단순한 비밀번호를 입력하고 비밀번호 변경 버튼을 클릭하면 비밀번호 복잡도가 만족하지 않아 변경에 실패했다는 메세지가 나타난다.

비밀번호 변경 액티비티를 실행했을 때 확인된 사항은 현재 비밀번호를 요구하지 않는다는 것이다.

따라서 로그인을 한 사용자의 현재 비밀번호를 입력받지 않아 Burp Suite 도구로 newPassword 부분 파라미터를 조작하여 비밀번호 변경이 가능하다.

대응 방안

비밀번호 변경 등과 같은 중요한 기능에 접근하기 전 현재 비밀번호를 입력 받도록 구현한다.

비밀번호 변경 시 단순한 비밀번호로 변경할 수 없도록 매개변수를 검증한다.

비밀번호는 중요한 정보이므로 평문으로 전송하지 않고 암호화를 적용하여 전송한다.