用途:当请求涉及 Android 安全评审、Android 应用密钥处理、导出组件安全时使用本技能,目标是围绕密钥、存储、网络信任、导出组件和最小权限应用 Android 应用安全指导。需要攻击面清单或存储/网络/组件决策矩阵时阅读 references/patterns.md;需要清单、备份、WebView 和发布加固审查路径时阅读 references/scenarios.md。范围扩大时可交接给 android-modernization-upgrade、android-ci-cd-release-playstore。
工作流:先盘点攻击面,包括导出组件、intent/深链入口、文件共享、WebView 使用、本地存储、日志、备份和网络信任配置;再优先消除可避免风险,倾向平台选择器、内部存储、服务端签发的短期令牌和最小权限,而非广泛访问或长期密钥;随后用 android:exported、组件权限、FileProvider、networkSecurityConfig、仅调试信任锚和不可变 PendingIntent 明确锁定剩余边界;接着审查易回退的敏感面,如 WebView JavaScript 桥、备份/数据提取规则、明文例外、日志脱敏和同开发者 IPC 假设;最后用可复现检查验证发布姿态,记录残余风险及后端强制或 Play Integrity 是建议性还是阻断性。
护栏:客户端密钥应视为攻击者可恢复,信任决策和特权 API 访问尽量移到服务端;仅在有真实外部调用方时导出组件,私有契约用权限或签名保护;用网络安全配置限定调试信任锚或明文例外,而非宽泛清单开关;默认脱敏日志、审查备份、避免敏感数据进入共享外部存储。
反模式:把 API 密钥藏在资源、NDK 或混淆中并视为安全;在可启动或 IPC 组件上留下含糊的 android:exported 或 intent filter;用原始文件路径或过宽存储权限共享文件而非 FileProvider 与系统界面;无轮换与回退方案就固定证书。
审查重点:导出 activity、service、receiver、provider 的归属与调用方预期;密钥、令牌与后端信任假设;网络信任、调试覆盖、明文使用与证书处理;文件共享、备份、日志与用户数据泄露路径;Play Integrity 等滥用信号仅作分层防御,绝不作为唯一授权模型。
示例命令: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。
完成清单:每个外部可达组件都有明确暴露与调用方约束;密钥、令牌和信任决策不依赖客户端混淆;网络、备份、日志和共享行为有明确的发布安全默认值;残余风险与后端依赖有文档和后续工作。官方参考见 developer.android.com 的 security-best-practices、security-tips、unsafe-exported-components、access-control-to-exported-components、security-config、minimize-permission-requests 和 Play Integrity 概览。