ATS Exception No Forward Secrecy
ID |
swift.ats_exception_no_forward_secrecy |
Severity |
low |
Remediation Complexity |
trivial |
Remediation Risk |
medium |
Remediation Effort |
medium |
Resource |
Information Leak |
Language |
Swift |
Tags |
ASVS50:v12.2.1, ASVS50:v12.3.1, ASVS50:v12.3.3, ASVS50:v4.4.1, ASVS50:v4.4.4, CWE:319, MASVS:MSTG-NETWORK-2 |
Description
Setting NSExceptionRequiresForwardSecrecy to false in a
NSAppTransportSecurity.NSExceptionDomains entry allows the named host
to negotiate cipher suites that do not provide forward secrecy (typically
RSA key-exchange suites).
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>legacy.example.com</key> <!-- FLAW -->
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
Rationale
Without forward secrecy, an attacker who later compromises the server’s private key (e.g. via subpoena, breach, or hardware seizure) can decrypt every TLS session ever recorded on the wire. Modern ATS requires forward secrecy by default; opting out should be reserved for hosts that genuinely cannot be upgraded.
Remediation
Remove the NSExceptionRequiresForwardSecrecy entry to restore the
default (true). Upgrade the upstream server to support ECDHE / DHE
key-exchange cipher suites.
References
-
CWE-319: Cleartext Transmission of Sensitive Information.