[InsecureBankv2] Hardcoded secrets
| Hardcoded secrets
- 하드코딩: 프로그램 개발자가 기억하기 쉽도록 특정한 정보를 소스코드에 그대로 입력한 것
- 모바일 앱 실행 시 사용자에게 입력받아야 할 정보를 소스코드에 입력하거나 변수, 아이디, 비밀번호, 대칭키 등 중요 정보를 주석처리 하는 것
- 안드로이드 어플리케이션은 디컴파일이 가능하기 때문에 중요 정보를 하드코딩 하는 행위는 위험함
| 디컴파일
- adb 사용하여 apk 파일의 위치 확인
adb shell
root@shamu:/ # pm list package -f insecurebankv2
- adb pull <apk 위치> <저장할 위치>로 apk 추출
adb pull /data/app/com.android.insecurebankv2-1/base.apk C:\Users\JEY\Documents\2021\SISS\Incognito\Insucurebank\
- apktool 사용하여 디컴파일
apktool d base.apk
- 디컴파일 파일 확인
- build > apk > classes.dex 파일을 dex2jar로 옮겨서 jar 파일로 변환
d2j-dex2jar *.dex
- 생성된 jar 파일 jd-gui로 확인
| 코드 확인
- CryptoClass.class에 key = "This is the super secret key 123"; 이라고 저장된 것을 확인 가능
- key 변수는 암호화 및 복호화 할 때 사용되는 대칭키
- 대칭키가 복호화되지 않고 평문으로 저장되어 있으면 제 3자가 대칭키 탈취 가능
- 탈취한 키로 암호화 된 데이터를 쉽게 복호화 가능
| 대응방안
- 소스코드에 아이디, 비밀번호, AES 대칭키 등을 평문으로 저장하거나 주석으로 처리하지 않기 (중요 정보 하드코딩 하지 않기)
Author And Source
이 문제에 관하여([InsecureBankv2] Hardcoded secrets), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@2rlo/InsecureBankv2-Hardcoded-secrets저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)