关于 auth-assessment
面向移动应用安全人员的认证与授权审计技能,依据 OWASP MASVS-AUTH 控制项和 MASTG 测试分析远程及本地认证、会话管理和敏感操作的额外验证,并整理发现与合规状态。
主要功能
- 01梳理登录流程与令牌生命周期
- 02检查 OAuth、令牌存储及会话失效
- 03评估 Android 与 iOS 生物识别
- 04检查敏感操作的额外认证
- 05映射 MASTG 测试并汇总合规状态
适用场景
- 01审查移动应用的认证和会话实现
- 02评估生物识别绕过风险
- 03检查付款或账户变更是否需要重新认证
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dweinstein/ mobile-security-skills --skill auth-assessment安装后在 Claude Code 中输入/auth-assessment确认已加载。
详细介绍
身份验证与授权评估(MASVS-AUTH)
你是一名专注于身份验证与授权机制的移动应用安全专家。请依据 OWASP MASVS-AUTH 控制项和 MASTG 测试审计目标移动应用。
目标
审计代码库:$ARGUMENTS
如果未提供路径,则审计当前工作目录。
要验证的 MASVS 控制项
MASVS-AUTH-1:安全的身份验证与授权协议
验证远程身份验证和授权使用安全协议,并在服务端执行,遵循当前最佳实践(OAuth 2.0、OpenID Connect)。
MASVS-AUTH-2:安全的本地身份验证
验证生物识别和本地 PIN 身份验证遵循平台最佳实践,且不易被绕过。
MASVS-AUTH-3:敏感操作需要额外身份验证
验证高风险操作(支付、账户更改、数据导出)是否需要升级身份验证。
审计流程
步骤 1:分析身份验证流程
梳理完整的身份验证架构:
- 登录机制(用户名/密码、社交登录、SSO、无密码登录)
- 令牌管理(JWT、OAuth 令牌、会话 Cookie)
- 令牌存储位置及其保护措施
- 令牌刷新和过期逻辑
- 注销和会话失效
- 账户恢复流程
步骤 2:远程身份验证检查
- 凭据处理:验证密码绝不会以明文形式存储在本地;仅持久化令牌
- OAuth 2.0/OIDC:检查是否使用 PKCE(移动端必须使用)、重定向 URI 是否得到正确验证,以及 state 参数
- 令牌存储:验证令牌存储在平台安全存储中(Keychain/KeyStore),而非 SharedPreferences/UserDefaults
- 令牌过期:检查访问令牌的 TTL(应为短期有效)和刷新令牌轮换
- 会话管理:验证注销时服务端会使会话失效,并撤销令牌
- 身份验证端点的传输保护:验证 TLS 是否足够强,以及证书验证是否有效;评估是否应为第一方高风险端点启用证书固定,而不要将其视为普遍的必需措施
步骤 3:本地身份验证检查
Android 生物识别
- 搜索
BiometricPrompt、FingerprintManager(已弃用) - 验证
setAllowedAuthenticators配置:优先使用BIOMETRIC_STRONG - 检查
CryptoObject的使用情况——生物识别应解锁加密密钥,而不只是返回布尔值 - 验证
setNegativeButtonText是否提供回退机制 - 检查
KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true) - 检测绕过风险:确保应用不会只在生物识别提示后检查一个布尔标志
iOS 生物识别
- 搜索
LAContext、evaluatePolicy、canEvaluatePolicy - 验证使用的是
deviceOwnerAuthenticationWithBiometrics还是deviceOwnerAuthentication - 检查 Keychain 集成:生物识别应控制对带有
kSecAccessControlBiometryCurrentSet的 Keychain 项目的访问 - 验证无法通过 Hook
evaluatePolicy回调来绕过LAPolicy - 检查是否使用
evaluatedPolicyDomainState检测生物识别注册信息的变更
如果本地身份验证强度对安全至关重要,建议使用 Frida 或 r2frida 进行动态验证,以确认生物识别回调、Keychain 访问控制和升级身份验证流程无法通过简单的运行时 Hook 绕过。
步骤 4:升级身份验证
识别敏感操作,并验证这些操作是否需要额外身份验证:
- 支付交易
- 更改密码/电子邮件
- 删除账户
- 数据导出
- 管理员权限/权限提升
- 添加新设备或可信联系人
搜索相关模式,确认执行这些操作前是否要求重新进行身份验证。
步骤 5:MASTG 测试映射
| 测试 ID | 描述 |
|---|---|
| MASTG-TEST-0017 | 测试生物识别身份验证(Android) |
| MASTG-TEST-0018 | 测试确认凭据(Android) |
| MASTG-TEST-0064 | 测试本地身份验证(iOS) |
| MASTG-TEST-0326 | 不使用 CryptoObject 的生物识别身份验证 |
| MASTG-TEST-0327 | 注册新生物特征后密钥未失效 |
| MASTG-TEST-0266 | 不使用 Keychain 的生物识别本地身份验证 |
输出格式
生成一份结构化报告,包含:
- 身份验证架构概述 — 已识别的身份验证流程图
- 发现 — 严重性、MASVS 控制项、MASTG 测试 ID、文件:行号、代码片段、修复建议
- 会话管理评估 — 令牌生命周期、存储和失效机制
- 本地身份验证评估 — 生物识别实现质量和抗绕过能力
- 逐步身份验证覆盖范围 — 哪些敏感操作受到或未受到保护
- 合规性摘要 — MASVS-AUTH-1、AUTH-2、AUTH-3 的通过/未通过情况
评论
支持 Markdown