보안개구리
2. 취약한 인증 메커니즘(Weak Authorization Mechanism) 본문
[개요]
취약한 인증 메커니즘은 정상적인 인증 절차를 우회하여 비정상적인 인증으로 접근 권한을 취득하는 취약점으로 일반적으로는 다음과 같은 경우에 해당합니다.
- 적절하지 않은 앱 퍼미션 설정 여부
- 서비스 권한 상승 행위에 대한 통제 여부
- 기능에 대한 제한 또는 우회 금지 여부
- 불필요하거나 사용하지 않는 액티비티 제거 여부
- 인텐트 사용에 대한 안정성 여부
- 마스터 키 취약점 대응 여부
[진단 과정]
1) 인시큐어뱅크앱을 다운받을 시 같이 다운받은 AndroidLabServer 내 mydb.db 파일을 SQLite를 통해 확인합니다.
2) 이 때 accounts 테이블을 확인하면 account_number는 계좌번호고 balance는 잔액입니다.
3) jack이라는 계정으로 로그인 후 Transfer 메뉴에 접속합니다.
4) 접속 시 아래와 같은 화면이 출력되는데 이 때 Get Accounts라는 버튼을 클릭하면 우측 화면처럼 자동으로 번호가 입력됩니다. 해당 액티비티는 계좌이체 관련 액티비티로 원래대로라면 당연히 자신의 계좌에서만 계좌이체가 가능합니다.
999999999는 본인이 출금계좌고 555555555는 입금 계좌인건데 해당 정보가 바로 2번 과정에서 확인한 accounts 테이블 내용입니다
즉 jack이라는 사용자를 입력했기 때문에 자동으로 jack 사용자의 계좌가 입력되어 Amount에 입력한 금액만큼 계좌이체가 가능한데 한번 10000원이라는 금액을 넣고 Transfer 버튼을 클릭해보겠습니다.
5) 버튼을 클릭 시 Transfer Success라는 메시지가 출력되며 두 번째 메뉴였던 View Statement 메뉴 클릭 시 아래와 같은 계좌 이체 내역이 나옵니다. 실제 DB 상에서도 jack의 계좌 내 잔액이 달라진 것을 알 수 있습니다.
6) 그렇다면 여기서 문제가 되는 부분은 과연 jack의 계좌가 아닌 dinesh의 계좌에서 jack의 계좌로 계좌이체가 가능한지 여부입니다. 다시 한번 Transfer 메뉴에 접속한 후 이번에 From Account 부분에 dinesh의 계좌를 입력한 후 10000을 이체해보겠습니다.
7) 계좌 이체 후 다시 한번 DB 확인 시 dinesh의 잔액은 10,000원이 줄고 jack의 계좌는 10,000이 증가한 것을 확인할 수 있습니다. 해당 경우는 극단적이기 하지만 결국에는 인증 부분이 취약하기 떄문에 발생하는 취약점입니다.
[대응 과정]
'앱 진단(Android) > Insecurebank 실습' 카테고리의 다른 글
6. 안전하지 않은 컨텐츠 프로바이더 접근 (0) | 2024.07.08 |
---|---|
5. 루팅 탐지 및 우회 (0) | 2024.07.08 |
4. 액티비티 컴포넌트 취약점 (0) | 2024.07.07 |
3. 로컬 암호화 이슈(Local Encryption Issue) (0) | 2024.07.07 |
1. 브로드캐스트 리시버(Broadcast Receiver) 결함 (0) | 2024.07.07 |