Und3r__Score__

Firebase Real-time Databases Misconfiguration 본문

취약점진단/Mobile (Android, iOS)

Firebase Real-time Databases Misconfiguration

_underscore_ 2024. 2. 20. 09:13

해당 게시글은 OWASP_MASTG 일부를 번역하여 정리 및 참고하였습니다.

 

Mobile(Android, iOS)에서 데이터를 저장하는 방법은 다양하게 존재합니다. 그 중 Firebase Real-time Database에 대해 다뤄보려고 합니다. 

Firebase Real-time Database?

Firebase는 15개 이상의 제품을 보유한 개발 플랫폼으로, 그 중 하나가 Firebase Real-time Database입니다. 애플리케이션 개발자는 이를 활용하여 NoSQL 클라우드 호스팅 데이터베이스와 데이터를 저장하고 동기화할 수 있습니다. 데이터는 JSON으로 저장되며 연결된 모든 클라이언트에 실시간으로 동기화되고 애플리케이션이 오프라인 상태에서도 사용 가능한 상태로 유지됩니다.

 

잘못 구성된 Firebase Real-time Database

public하게 읽을 수 있도록 잘못 구성된 Firebase instance는 데이터베이스가 노출될 위험성이 존재합니다. 이를 확인하기 위해서는 다음 URL을 호출해보면 됩니다. ( _firebaseProjectName_은 앱의 firebase 프로젝트 이름으로 수정)

https://_firebaseProjectName_.firebaseio.com/.json

 

Android

firebase 프로젝트 이름은 애플리케이션을 리버싱하여 확인할 수 있습니다. 프로젝트 이름 및 취약점 존재 여부 확인을 자동화해주는 Firebase Scanner를 사용할 수 있습니다. 

python FirebaseScanner.py -p <pathOfAPKFile>
python FirebaseScanner.py -f <ommaSeparatedFirebaseProjectNames>

 

iOS

firebase 프로젝트 이름은 .plist 파일을 통해 확인할 수 있습니다. 예를 들어, GoogleService-Info.plist 파일의 PROJECT_ID에 Firebase 프로젝트 이름이 저장되어 있습니다. 취약점 존재 여부를 확인하기 위해 프로젝트 이름을 확인하여 URL을 직접 접근하거나 자동화 도구 Firebase Scanner를 사용할 수 있습니다.

python FirebaseScanner.py -f <ommaSeparatedFirebaseProjectNames>