ios-security
iOSアプリのセキュリティレビュー。OWASP Mobile Top 10、App Transport Security、Keychain使用をチェック。Use when: セキュリティ、脆弱性、認証、Keychain、ATS を依頼された時。
When & Why to Use This Skill
This Claude skill provides a comprehensive security review for iOS applications, focusing on the OWASP Mobile Top 10 standards. It automates the detection of vulnerabilities in App Transport Security (ATS) configurations, Keychain implementation, and sensitive data storage, ensuring that Swift codebases adhere to industry-leading security best practices.
Use Cases
- Pre-release Security Audit: Conduct a thorough check of iOS projects before deployment to identify risks like improper platform usage or insecure data storage.
- Sensitive Data Verification: Audit the codebase to ensure that authentication tokens and passwords are encrypted in the Keychain rather than stored in UserDefaults or hardcoded in source files.
- Network Compliance Check: Verify Info.plist settings to ensure App Transport Security (ATS) is enabled and that the application enforces secure HTTPS communication with certificate pinning where necessary.
- Automated Vulnerability Scanning: Utilize specialized grep patterns to quickly locate hardcoded API keys, secrets, and accidental debug logs (print/NSLog) that could leak information in production.
| name | ios-security |
|---|---|
| description | "iOSアプリのセキュリティレビュー。OWASP Mobile Top 10、App Transport Security、Keychain使用をチェック。Use when: セキュリティ、脆弱性、認証、Keychain、ATS を依頼された時。" |
iOS セキュリティレビュー
OWASP Mobile Top 10 チェック項目
| ID | リスク | チェック内容 |
|---|---|---|
| M1 | Improper Platform Usage | Info.plist の ATS設定、権限の最小化 |
| M2 | Insecure Data Storage | Keychain使用、UserDefaults に機密情報なし |
| M3 | Insecure Communication | HTTPS強制、証明書ピンニング |
| M4 | Insecure Authentication | BiometricなしのKeychain保護、Token管理 |
Swift セキュリティパターン
機密情報の保存
- パスワード・トークンはKeychainに保存
- UserDefaultsに機密情報を保存していない
- ハードコードされたAPIキー・シークレットがない
通信セキュリティ
- Info.plistでATSが無効化されていない
- URLSessionでカスタム証明書検証を適切に実装
- デバッグ用のログに機密情報を出力していない
コード検査パターン
# ハードコード検索
grep -rn "password\|secret\|apiKey\|api_key" Sources/
# print/NSLogの確認(本番では削除推奨)
grep -rn "print(\|NSLog(" Sources/