All network requests use HTTPS and App Transport Security is not disabled
Why it matters
App Transport Security (ATS) is Apple's network security framework — disabling it with NSAllowsArbitraryLoads: true in Info.plist allows all HTTP traffic, exposing users to man-in-the-middle attacks (CWE-319, OWASP A02 Cryptographic Failures). Apple requires a written justification for any ATS exception, and blanket disabling is frequently rejected without a compelling reason. HTTP API calls transmit auth tokens, personal data, and session information in cleartext — on public Wi-Fi, any observer on the network can read them. On Android, android:usesCleartextTraffic="true" in AndroidManifest.xml has the same effect.
Severity rationale
Critical because `NSAllowsArbitraryLoads: true` exposes all network traffic to interception and triggers rejection unless Apple accepts a written justification — which they rarely do.
Remediation
Remove NSAllowsArbitraryLoads from Info.plist and migrate all API URLs to HTTPS.
// app.json — disable ATS exceptions
"ios": {
"infoPlist": {
"NSAppTransportSecurity": {
"NSAllowsArbitraryLoads": false
}
}
}
For Android, add res/xml/network_security_config.xml:
<network-security-config>
<base-config cleartextTrafficPermitted="false" />
</network-security-config>
If a specific third-party domain still requires HTTP (e.g., a local dev proxy), scope the exception to that domain only using NSExceptionDomains — never disable ATS globally. Update your backend's load balancer or CDN to enforce HTTPS if any production endpoint still accepts HTTP.
Detection
- ID:
ats-https-enforced - Severity:
critical - What to look for: Count all relevant instances and enumerate each. Check
ios/[AppName]/Info.plistandapp.json'sios.infoPlistsection forNSAppTransportSecurity. The presence ofNSAllowsArbitraryLoads: truemeans ALL HTTP traffic is allowed — this is a major red flag and requires a written justification for App Store approval. Also look forNSExceptionDomainsentries withNSAllowsInsecureHTTPLoads: true. Search all source files forhttp://URLs in API calls, fetch requests, and Axios base URLs (excluding localhost/development URLs). Inandroid/app/src/main/AndroidManifest.xml, check forandroid:usesCleartextTraffic="true"on the<application>tag, ornetwork_security_configallowing cleartext traffic to specific domains. - Pass criteria: No
NSAllowsArbitraryLoads: truein Info. At least 1 implementation must be verified.plist; noandroid:usesCleartextTraffic="true"in AndroidManifest.xml without a<domain-config>restriction; all production API base URLs usehttps://. - Fail criteria:
NSAllowsArbitraryLoads: truein Info.plist;android:usesCleartextTraffic="true"in AndroidManifest with no domain restriction;http://URLs in production API configuration. - Skip (N/A) when: App is Android-only (ATS is an iOS-specific requirement, though HTTPS is still required on Android).
- Detail on fail:
"Info.plist has NSAllowsArbitraryLoads=true — ATS is completely disabled"or"API base URL uses http:// in src/config/api.ts: 'http://api.example.com'"or"AndroidManifest.xml has android:usesCleartextTraffic='true' with no domain restriction" - Remediation: ATS-disabled apps are frequently rejected or required to submit a justification. Fix immediately.
- Remove
NSAllowsArbitraryLoadsfrom Info.plist entirely or set tofalse - Ensure all API endpoints use
https://— update your backend if necessary - If you need HTTP for a specific domain (e.g., local dev server), use
NSExceptionDomainsscoped to that domain — never disable globally - For Android, remove
android:usesCleartextTraffic="true"or restrict vianetwork_security_config.xml:<network-security-config> <base-config cleartextTrafficPermitted="false" /> </network-security-config> - In React Native/Expo, set in
app.json:"ios": { "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": false } } }
- Remove
External references
- cwe · CWE-319 — Cleartext Transmission of Sensitive Information
- owasp:2021 · A02 — Cryptographic Failures
- external · apple-ats-requirement — Apple App Transport Security (ATS) Requirement
Taxons
History
- 2026-04-18·v1.0.0·Initial import from app-store-review-blockers·automated