:locked_with_key: 我在Android应用中发现硬编码的Facebook和Google API密钥(以及为什么这是个坏主意)
:hot_beverage: 逆向分析APK很有趣...直到你发现生产环境密钥就这么赤裸裸地躺在代码里。
🧠 内容提要
在分析一个公开的Android APK时,我直接在应用的strings.xml
文件中发现了硬编码的Facebook和Google API凭证。这些凭证包括Facebook App ID、Facebook Client Token、Google API Key等敏感标识符。此类暴露可能导致API调用仿冒、配额滥用等风险——仅需反编译APK即可实现。
本文将带您了解:
- :magnifying_glass_tilted_left: 发现过程
- 🧪 有效性验证
- 🔥 潜在影响
- 🛡️ 防护方案
📦 第一步:反编译APK
使用Apktool进行反编译:
java -jar apktool.jar d target.apk -o output_folder -f
该命令将应用解包为可读的目录结构,可访问资源文件、清单和smali代码。
:magnifying_glass_tilted_left: 第二步:检查strings.xml
在res/values/strings.xml
中发现以下内容:
<string name="facebook_app_id">47711************</string>
<string name="facebook_client_token">ab3495bb67f3e*******************</string>
<string name="google_api_key">AIzaSyCc6**********************</string>
<string name="google_crash_reporting_api_key">AIzaSyCc6**********************</string>
<string name="google_app_id">1:16327*******:android:d2f5************</string>
<string name="google_storage_bucket">[redacted].firebasestorage.app</string>
🧠 重要提醒:任何硬编码在strings.xml中的内容都会编译到最终APK,且可通过apktool、jadx甚至grep等工具轻松获取。
🧪 第三步:利用验证(仅限道德测试)
:check_mark_button: Facebook凭证验证
通过Graph API测试凭证有效性:
curl "https://graph.facebook.com/app?access_token=47711************|ab3495bb67f3e*******************"
返回结果证实该凭证有效,攻击者可仿冒应用发起Graph API调用。
:check_mark_button: Google API密钥验证
尝试使用该密钥调用地理编码API:
curl "https://maps.googleapis.com/maps/api/geocode/json?address=New+York&key=AIzaSyCc6**********************"
由于开发者已在Google Cloud Console设置访问限制,密钥虽暴露但未被滥用。
🛡️ 开发者防护建议
:cross_mark: 禁止做法:
<string name="facebook_client_token">ab3495bb67f3e*******************</string>
:check_mark_button: 正确做法:
- 将密钥存储在服务端
- 必须客户端使用时:
- 通过HTTPS端点动态获取
- 使用NDK混淆并存入Android Keystore
- 对于Google API密钥:
- 按应用包名和SHA-1指纹限制
- 仅开放必要API权限
:locked_with_key: 核心原则:只要存在于APK中的内容,就不算秘密。
👨💻 给漏洞赏金猎人的建议
分析APK时务必:
- 检查strings.xml、AndroidManifest.xml和.smali文件
- 关注
AIza
、facebook_client_token
等特征字符串 - 道德验证密钥有效性
- 负责任披露并脱敏公开报告
🧠 最终思考
这类漏洞看似简单却在生产环境中异常普遍。通过负责任地披露,您正在帮助提升应用安全性。如果您是开发者——请立即轮换密钥并检查构建流程。
:raising_hands: 披露声明:已通过正规渠道通知受影响企业,本文所有数据均已脱敏处理。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码