
evaluateServerTrustメソッド(AFSecurityPolicy.mファイル)で、SSL証明書検証ロジックが発生します。
- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain { NSMutableArray *policies = [NSMutableArray array]; if (self.validatesDomainName) { [policies addObject:(__bridge_transfer id)SecPolicyCreateSSL(true, (__bridge CFStringRef)domain)]; } else { [policies addObject:(__bridge_transfer id)SecPolicyCreateBasicX509()]; } SecTrustSetPolicies(serverTrust, (__bridge CFArrayRef)policies); if (self.SSLPinningMode != AFSSLPinningModeNone && !AFServerTrustIsValid(serverTrust) && !self.allowInvalidCertificates) { return NO; } NSArray *serverCertificates = AFCertificateTrustChainForServerTrust(serverTrust); switch (self.SSLPinningMode) { case AFSSLPinningModeNone: return YES;
デフォルトでは、SSLPinningModeはAFSSLPinningModeNoneに設定されており、証明書の検証が完全に無効になっています。 これにより、 SSL MITMが可能になります。
このフレームワークは非常に人気があります。 Pinterest、Heroku、Citrix OpenVoice Audio Conferencing、Alibabaなどのアプリケーションで使用されています。
脆弱性の詳細が公開された後、AppleStoreの他のアプリケーションのチェックが実行されました。 結果は残念です。 1,500のアプリケーションがAFNetworkingのリークバージョンによって実行されました。
次に、アプリケーションで脆弱性をチェックするサービスが開始されました: searchlight.sourcedna.com/lookup
バージョン2.5.2では、バグは部分的にクローズされていますが、ホストの検証がないため、証明書検証のバイパスが残っています。
関連リンク:
AFNetworking 2.5.1のSSL MiTM攻撃-本番環境では使用しないでください!
1,500のiOSアプリにはHTTPSのバグがあります。 それらの1つがデバイスにありますか?
HabréでのAFNetworking