본문 바로가기

모바일 앱 해킹

[DIVA] HardCoding Issues(하드코딩 이슈) | 안드로이드 앱 취약점 실습

하드코딩 취약점은 소프트웨어 개발에서 중요한 정보(비밀번호, API 키, 관리자 id, pw 등)를 소스 코드 내부에 직접 넣는 실수로 발생한다.

 

하드코딩된 비밀번호나 암호키 등 중요정보는 소스 코드를 확인할 수 있는 모든 사람이 액세스할 수 있다. 이는 내부자 위협 뿐만 아니라 소스 코드가 공개적으로 유출되었을 경우 외부 공격자에게도 정보가 노출될 수 있는 위험이 있다.

 

 

아무 정보 123123을 입력하고 ACCESS 버튼을 눌러봤더니 지옥에서 보자는 무서운 경고 메세지가 뜬다. 아무 값이나 일일히 대입해보면서 액세스를 할 수는 없으니 소스코드에 저장된 중요 정보를 확인해봐야 할 것이다.

 

 

GDA로 apk 파일을 디컴파일해서 HardcodeActivity 파일의 소스코드를 보면 

 

access 함수에서 사용자의 입력 값과 vendorsecretkey 문자열을 비교하고 있다. 따라서 access 할 수 있는 값은 vendorsecretkey 일 것이다.

 

 

다시 앱으로 돌아가서 알아낸 값을 입력하고 ACCESS를 클릭하니 액세스가 허용되었다는 알림 메시지가 떴다.

 

 

대응방안

  • 중요 정보가 소스코드 내에 문자, 주석, 변수 값 등의 형식으로 하드코딩되어 있지 않도록 제거한다.
  • 개발 과정에서 사용한 계정, 암호키 등은 앱 배포 시 제거한다.