하드코딩 취약점은 소프트웨어 개발에서 중요한 정보(비밀번호, API 키, 관리자 id, pw 등)를 소스 코드 내부에 직접 넣는 실수로 발생한다.
하드코딩된 비밀번호나 암호키 등 중요정보는 소스 코드를 확인할 수 있는 모든 사람이 액세스할 수 있다. 이는 내부자 위협 뿐만 아니라 소스 코드가 공개적으로 유출되었을 경우 외부 공격자에게도 정보가 노출될 수 있는 위험이 있다.
아무 정보 123123을 입력하고 ACCESS 버튼을 눌러봤더니 지옥에서 보자는 무서운 경고 메세지가 뜬다. 아무 값이나 일일히 대입해보면서 액세스를 할 수는 없으니 소스코드에 저장된 중요 정보를 확인해봐야 할 것이다.
GDA로 apk 파일을 디컴파일해서 HardcodeActivity 파일의 소스코드를 보면
access 함수에서 사용자의 입력 값과 vendorsecretkey 문자열을 비교하고 있다. 따라서 access 할 수 있는 값은 vendorsecretkey 일 것이다.
다시 앱으로 돌아가서 알아낸 값을 입력하고 ACCESS를 클릭하니 액세스가 허용되었다는 알림 메시지가 떴다.
대응방안
- 중요 정보가 소스코드 내에 문자, 주석, 변수 값 등의 형식으로 하드코딩되어 있지 않도록 제거한다.
- 개발 과정에서 사용한 계정, 암호키 등은 앱 배포 시 제거한다.
'모바일 앱 해킹' 카테고리의 다른 글
[DIVA] Insecure Data Storage - Part2 (안전하지 않은 데이터 저장) | 안드로이드 앱 취약점 실습 (0) | 2024.05.23 |
---|---|
[DIVA] Insecure Data Storage - Part1 (안전하지 않은 데이터 저장) | 안드로이드 앱 취약점 실습 (0) | 2024.05.18 |
[DIVA] Insecure Logging(안전하지 않은 로깅) | 안드로이드 앱 취약점 실습, DIVA란? (0) | 2024.05.18 |
취약한 로깅 메커니즘 | 안드로이드 앱 해킹, 인시큐어뱅크 실습 (0) | 2024.05.16 |
로컬 암호화 이슈 | 안드로이드 앱 해킹, 인시큐어뱅크 실습 (0) | 2024.05.12 |