Skip to content
Back to skills

Mobile Ios

ASecurity

Use this skill when the user is auditing an iOS application — directory contains `.ipa`, `Info.plist`, `*.swift`, `*.m`, `*.mm`, or an `xcodeproj`. Also activates when the conversation mentions WKWebView, NSURLSession, Keychain, App Transport Security, or any `com.apple.*` / `bundleidentifier`-style iOS package name.

  • 24 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
developmentjavascriptrustjavaswiftsecurity

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add allsmog/vuln-scout --skill mobile-ios --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mobile Ios?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mobile Ios
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/allsmog-mobile-ios/badge)](https://www.skillsdirectory.com/skills/allsmog-mobile-ios)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Mobile iOS Whitebox Audit
description: Use this skill when the user is auditing an iOS application — directory contains `.ipa`, `Info.plist`, `*.swift`, `*.m`, `*.mm`, or an `xcodeproj`. Also activates when the conversation mentions WKWebView, NSURLSession, Keychain, App Transport Security, or any `com.apple.*` / `bundleidentifier`-style iOS package name.
version: 1.0.0
---

# Mobile iOS Whitebox Audit

## When this skill applies

The user is reviewing an iOS target. Signals to look for:

- The target directory has an `Info.plist`, `*.swift`, `*.m`, `*.mm`, or `*.xcodeproj`.
- The conversation mentions WKWebView, NSURLSession, Keychain, ATS, KeychainAccess, ObjC runtime.
- A previous run produced `.claude/findings.json` entries whose `type` starts with `ios-*`.

## Triage anchors

| Type | What to verify |
|---|---|
| `ios-ats-arbitrary-loads` | The Info.plist has `NSAllowsArbitraryLoads=true`. Confirm whether any specific exempt domain is actually needed; otherwise this disables ATS for the entire app. |
| `ios-ats-partial-exemption` | `NSAllowsLocalNetworking` / `NSAllowsArbitraryLoadsForMedia` widens trust. Inventory which hosts the app actually needs over HTTP. |
| `ios-keychain-accessible-always` | `kSecAttrAccessibleAlways` / `kSecAttrAccessibleAlwaysThisDeviceOnly` lets locked-device attackers read the item. Switch to `kSecAttrAccessibleWhenUnlockedThisDeviceOnly` or `kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`. |
| `ios-trust-all-ssl` | `URLSessionDelegate.urlSession(_:didReceive:completionHandler:)` returns `.useCredential, URLCredential(trust: serverTrust)` without `SecTrustEvaluate`. Catastrophic — replace with explicit pinning. |
| `ios-uiwebview-deprecated` | UIWebView is deprecated since iOS 12 and has known issues. Migrate to WKWebView. |
| `ios-webview-html-concat` | `loadHTMLString` receives an interpolated/concatenated string. If any value originates from a network response or pasteboard, it renders attacker HTML/JS in the app origin. |
| `ios-webview-evaljs-concat` | `evaluateJavaScript` builds the JS payload via Swift interpolation. Any escape from a string literal executes attacker JS in the WebView. |

## Workflow: prefer `/vuln-scout:mobile-audit`

For iOS targets that include both source and bundle resources, point
`/vuln-scout:mobile-audit` at the project root. The driver discovers
`*/Info.plist` and Swift/ObjC sources under `src/`, `Sources/`, or
`Application/`.

If you have an extracted IPA, point the driver at the unzipped Payload
folder. The Info.plist will be at `Payload/AppName.app/Info.plist`.

## Cross-platform parallels

Many of the high-signal Android detectors have an iOS analog. When you see a
chain on Android, consider whether the iOS app has the same one:

| Android | iOS analog |
|---|---|
| `mobile-webview-js-injection` | `ios-webview-evaljs-concat` |
| `mobile-nsc-narrow-pinning` | `ios-ats-partial-exemption`, `ios-trust-all-ssl` |
| `mobile-shared-prefs-sensitive` | `ios-keychain-accessible-always`, NSUserDefaults misuse |
| `mobile-insecure-tls` | `ios-trust-all-ssl` |

See also [[mobile-android]] for the Android counterpart.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.