| Hardcoded secrets
- 하드코딩: 프로그램 개발자가 기억하기 쉽도록 특정한 정보를 소스코드에 그대로 입력한 것
- 모바일 앱 실행 시 사용자에게 입력받아야 할 정보를 소스코드에 입력하거나 변수, 아이디, 비밀번호, 대칭키 등 중요 정보를 주석처리 하는 것
- 안드로이드 어플리케이션은 디컴파일이 가능하기 때문에 중요 정보를 하드코딩 하는 행위는 위험함
| 디컴파일
adb shell
root@shamu:/
- adb pull <apk 위치> <저장할 위치>로 apk 추출
adb pull /data/app/com.android.insecurebankv2-1/base.apk C:\Users\JEY\Documents\2021\SISS\Incognito\Insucurebank\
apktool d base.apk
- 디컴파일 파일 확인
- build > apk > classes.dex 파일을 dex2jar로 옮겨서 jar 파일로 변환
d2j-dex2jar *.dex
| 코드 확인
- CryptoClass.class에 key = "This is the super secret key 123"; 이라고 저장된 것을 확인 가능
- key 변수는 암호화 및 복호화 할 때 사용되는 대칭키
- 대칭키가 복호화되지 않고 평문으로 저장되어 있으면 제 3자가 대칭키 탈취 가능
- 탈취한 키로 암호화 된 데이터를 쉽게 복호화 가능
| 대응방안
- 소스코드에 아이디, 비밀번호, AES 대칭키 등을 평문으로 저장하거나 주석으로 처리하지 않기 (중요 정보 하드코딩 하지 않기)