Ошибка в коде AFNetworking позволяет перехватывать HTTPS трафик пользователей
В одном из самых популярных фреймворков для работы с сетью в iOS и OS X системах была найдена критическая уявимость. Под прицелом специалистов из Minded Security оказался AFNetworking, а именно версия 2.5.1.В методе 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. Резульататы неутешительные. 1500 приложений оказались под управлением «дырявой» версии AFNetworking.Следом был запущен сервис для проверки приложений на наличие уязвимости: searchlight.sourcedna.com/lookupВ версии 2.5.2 бага частично закрыта, но по прежднему присутствует обход валидации сертификата из-за отстутсвия проверки хоста.
Ссылки по теме: SSL MiTM attack in AFNetworking 2.5.1 — Do NOT use it in production!1,500 iOS apps have HTTPS-crippling bug. Is one of them on your device? AFNetworking на Хабре