SEC-010 P1: Biometric Fallback 無失敗次數限制
Resolved 💬 2 comments Opened Mar 22, 2026 by stephen-taipei Closed Mar 25, 2026
問題描述
BiometricManager 的 authenticateWithPasscode() 使用裝置密碼作為 biometric 的 fallback,但無 App 層面的失敗次數限制,可能被暴力破解。
檔案位置
ios-swift/Connectors/Managers/BiometricManager.swift:343-354
詳細說明
private func authenticateWithPasscode(reason: String) async -> Bool {
let context = LAContext()
do {
let success = try await context.evaluatePolicy(
.deviceOwnerAuthentication, // 使用裝置密碼
localizedReason: reason
)
// 無 App 層面的失敗次數限制
}
}
iOS 系統在 6 次失敗後會強制等待,但 App 層面應提供額外的安全機制。
風險評估
- 如果使用者設備密碼簡單,容易被暴力破解
- 系統級限制可能被繞過(某些設備情景)
- 無法進行安全審計
解決方案
- 追蹤 App 層面的裝置密碼驗證失敗次數
- 失敗超過限制(如 5 次)後:
- 鎖定該設備,要求重新完整認證
- 強制簽出並清除本地會話
- 記錄所有驗證嘗試供安全審計
- 考慮實施漸進式延遲(失敗 1 次延遲 1 秒,2 次延遲 2 秒等)
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗