当前位置: 首页 > news >正文

我在Android应用中发现硬编码的Facebook和Google API密钥(以及为什么这是个坏主意)

: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: 正确做法:

  1. 将密钥存储在服务端
  2. 必须客户端使用时:
    • 通过HTTPS端点动态获取
    • 使用NDK混淆并存入Android Keystore
  3. 对于Google API密钥:
    • 按应用包名和SHA-1指纹限制
    • 仅开放必要API权限

:locked_with_key: 核心原则:只要存在于APK中的内容,就不算秘密。

👨‍💻 给漏洞赏金猎人的建议

分析APK时务必:

  • 检查strings.xml、AndroidManifest.xml和.smali文件
  • 关注AIzafacebook_client_token等特征字符串
  • 道德验证密钥有效性
  • 负责任披露并脱敏公开报告

🧠 最终思考

这类漏洞看似简单却在生产环境中异常普遍。通过负责任地披露,您正在帮助提升应用安全性。如果您是开发者——请立即轮换密钥并检查构建流程。

:raising_hands: 披露声明:已通过正规渠道通知受影响企业,本文所有数据均已脱敏处理。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

http://www.njgz.com.cn/news/634.html

相关文章:

  • img convert
  • PPT_1 Word 内容 转 PPT
  • ACCESS 导出附件
  • 第二周假期进度报告(7.20 - 7.26)
  • CVE-2020-11981 Apache Airflow Celery 消息中间件命令执行漏洞 (复现)
  • nlogn分解质因数 - SPF(目前以学习最快分解质因数)
  • 在express中使用sqlite数据库的方法
  • 7.27
  • [ROI 2023] 峰值 (Day 1)
  • ASP.NET Core MVC 使用 EF Core 实现实体属性驼峰转下划线
  • C++运算符重载
  • CVE-2020-11978 Airflow dag命令注入漏洞 (复现)
  • stp
  • 暑训#1补题
  • 蓝桥杯2025省赛A组游记题解
  • 打开CMD的方式
  • 关于广度优先搜索(BFS)的笔记
  • swagger2访问时报StackOverflow错误
  • 定位堆相关问题:OllyDbg2的off-by-one漏洞分析
  • 用户可控的统一风格迁移框架 - 亚马逊科学研究院
  • ARM简介 - LI,Yi
  • 板刷 ABC 计划
  • 题解:P4191 [CTSC2010] 性能优化
  • Java“class file contains wrong class”解决
  • 电脑中右键打开方式中出现已经卸载的应用程序(如,Dreamweaver)
  • 将 Windows 系统显示时间的精度修改为秒
  • 日记
  • 每日论文7.27——基于嵌入式GPU的指纹汗孔识别软件并行设计
  • XXL-SSO v1.2.0 发布|单点登录框架
  • 一、Web端UI自动化测试--环境搭建