未修正のアプリが数多く残っている状態なので、パブリックな場所での言及には注意して下さい
未修正のアプリが数多く残っている状況ですが、すでに広く情報が公開されており、2.5.2で修正されたという情報が広まると混乱が生じるため広く周知する次第です。
AFNetworking 2.5.1 にMITM攻撃を許す脆弱性があり、2.5.2で修正された、 と報道されていますが、これは誤りです。
2.5.2では問題が修正されていません。また、2.5.1だけではなく、他の 2.x 系列のバージョンにも脆弱性があります。次のリリースで問題が修正される見込みです
-
https://github.com/AFNetworking/AFNetworking/issues/2619
-
https://github.com/AFNetworking/AFNetworking/commit/3e631b203dd95bb82dfbcc2c47a2d84b59d1eeb4
別のサーバー用に発行された証明書でも、エラーを起こさずに正常に通信が成立するという状態です。 過去にも問題が指摘されていましたが、修正されないままリリースされており、2.5.2でも修正されませんでした。
- https://github.com/AFNetworking/AFNetworking/issues/2549
- https://github.com/AFNetworking/AFNetworking/issues/2560
- AFNetworking/AFNetworking#2527
- https://github.com/AFNetworking/AFNetworking/issues/2590
httpsキャプチャ機能を備えたデバッグ用のproxyサーバーで、差し替える証明書の情報をいじってください。(そのようなオプションがあります)
- 端末のルート証明書ストアを追加した状態で、mitmproxyの --no-upstream-cert オプションを使う
- 信用できる認証局から発行された証明書であるが、接続対象のサーバー向けに発行されたものではない(ホスト名が違う) 状態になる
- ブラウザ上での通信ではエラー、AFNetworking 2.5.2 や 2.x での通信は正常に成功する、という状態になります
- https://mitmproxy.org/doc/features/upstreamcerts.html
2015-03-30
- 早急にリリースする場合は、2.5.2 ではなく、githubのmasterから最新のものを使って下さい。
- もしくは self.validatesDomainName の箇所を自前で変更して下さい
2015-04-20
- https://github.com/AFNetworking/AFNetworking/issues/2619 の修正が含まれている 2.5.3 以上のバージョンを使用する
- https://github.com/AFNetworking/AFNetworking/releases
- validatesDomainNameのデフォルト値がYESになります(デフォルト設定で安全なポリシーになります)
2015-03-30
未修正のアプリが多くあり、またAppleの審査によって修正バージョンのリリースが遅れることが予想されるため、 この問題についてしばらくパブリックには言及しません。(影響を受けそうなアプリ製作者に個別に連絡しています)
Minded Security に記事の訂正を要求していますが、いつごろになるかはわかりません。
2015-04-22
- http://sourcedna.com/blog/20150420/afnetworking-vulnerability.html
- http://www.macrumors.com/2015/04/21/security-flaws-1500-ios-apps-rootpipe/
- http://www.itmedia.co.jp/enterprise/articles/1504/22/news047.html
https://github.com/AFNetworking/AFNetworking/releases/tag/2.5.3
Alamofire 1.2.0 以下にも証明書検証不備があります