В методе 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.
Следом был запущен сервис для проверки приложений на наличие уязвимости: http://ift.tt/1Jo80jg
В версии 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 на Хабре
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий