mcpField
A
android-security-best-practices

android-security-best-practices

github.com/krutikjain安全1486 次安装31 周前更新
代码仓库

关于 android-security-best-practices

面向 Android 开发者的安全审查技能,检查应用暴露面、机密信息、存储和网络信任,并提供攻击面梳理与发布检查流程。

主要功能

  1. 01盘点导出组件和应用入口
  2. 02审查机密信息、存储、日志与备份
  3. 03检查网络信任和明文流量设置
  4. 04加固文件共享与 PendingIntent 用法
  5. 05评估 WebView 桥接和权限
  6. 06记录发布检查与剩余风险

适用场景

  1. 01审查 Android 清单和导出组件
  2. 02检查机密信息处理与数据泄漏风险
  3. 03在候选版本发布前核查安全默认设置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/krutikjain/android-agent-skills --skill android-security-best-practices

安装后在 Claude Code 中输入/android-security-best-practices确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
official-links.md
patterns.md
scenarios.md
scripts/
run_examples.sh

详细介绍

Android 安全最佳实践

适用场景

  • 当请求涉及以下内容时使用此技能:Android 安全审查、Android 应用中的机密处理、Android 导出组件安全。
  • 主要目标:应用有关机密、存储、网络信任、导出组件和最小权限的 Android 应用安全指南。
  • 需要攻击面检查清单或存储/网络/组件决策矩阵时,阅读 references/patterns.md。
  • 审查清单、备份、WebView 和发布加固流程时,阅读 references/scenarios.md。
  • 范围扩大时,转交给以下技能:
  • android-modernization-upgrade
  • android-ci-cd-release-playstore

工作流

  1. 首先盘点攻击面:导出组件、Intent/深层链接入口、文件共享、WebView 用法、本地存储、日志、备份和网络信任配置。
  2. 在细节加固之前,先消除可避免的风险:优先使用平台选择器和选择器界面、内部存储、服务器签发的短期令牌和最小权限,而不是随应用发布广泛访问权限或长期有效的机密。
  3. 使用 android:exported、组件权限、FileProvider、networkSecurityConfig、仅用于调试的信任锚以及不可变的 PendingIntent,明确锁定剩余边界。
  4. 审查 Android 应用中容易回归的敏感面:WebView JavaScript 桥接、备份/数据提取规则、明文流量例外、日志脱敏,以及对同一开发者 IPC 的假设。
  5. 通过可复现的检查验证发布安全状况,然后记录剩余风险,以及后端强制执行或 Play Integrity 属于建议措施还是阻断措施。

防护准则

  • 将客户端机密视为攻击者可以恢复的内容;尽可能将信任决策和特权 API 访问移至服务端。
  • 仅在确有外部调用方时导出组件;若契约为私有,应通过权限或签名保护组件。
  • 使用网络安全配置限制仅用于调试的信任锚或明文流量例外,而不是使用宽泛的清单开关。
  • 对日志进行脱敏、审查备份,并默认避免将敏感数据存放在共享外部存储中。

反模式

  • 将 API 密钥藏在资源、NDK 或混淆中,并称其安全。
  • 对可启动或 IPC 组件的 android:exported 或 Intent 过滤器设置含糊。
  • 通过原始文件路径或过于宽泛的存储权限共享文件,而不使用 FileProvider 和系统界面。
  • 固定证书,却没有可执行的轮换方案或备用计划。

审查重点

  • 明确所有者和调用方预期的导出活动、服务、接收器和提供程序。
  • 机密、令牌和后端信任假设。
  • 网络信任、调试覆盖设置、明文流量使用和证书处理。
  • 文件共享、备份、日志和用户数据泄露路径。
  • Play Integrity 等滥用信号只能作为分层防御,绝不能作为唯一的授权模式。

示例

正常流程
  • 场景:审计清单和共享界面,检查导出设置、权限和 FileProvider 用法是否明确。
  • 命令:rg -n "android:exported|android:permission|FileProvider|grantUriPermissions" examples
边缘情况
  • 场景:在候选版本发布前,发现不安全的备份或网络默认设置。
  • 命令:rg -n "networkSecurityConfig|usesCleartextTraffic|allowBackup|fullBackupContent|dataExtractionRules" examples
故障恢复
  • 场景:将应用加固与现代化改造或发布流水线请求区分开来。
  • 命令:python3 scripts/eval_triggers.py --skill android-security-best-practices

完成检查清单

  • 每个外部可访问的组件都有明确的暴露范围和调用方限制。
  • 机密、令牌和信任决策不依赖客户端应用中的隐蔽性。
  • 网络、备份、日志和共享行为均有明确且适合发布环境的默认设置。
  • 已记录剩余风险和任何后端依赖,并明确后续工作。

Official References

评论

支持 Markdown