AFNetworking 2.5.2 以下の脆弱性について
<s>mitmproxy cnコピーするかどうかの処理が変わっていたので最新版だと検証できていなかった。</s>
mitmproxyでの検証手順、transparent proxyとして設定してやらないと host == example.com 等になって正しいCNを返してしまうようなので、
CN検証不備を行うには有効な別サーバ向けの証明書を --cert で指定するか下記のように書き換える
diff --git a/libmproxy/proxy/server.py b/libmproxy/proxy/server.py
index a72f9ab..d390cea 100644
--- a/libmproxy/proxy/server.py
+++ b/libmproxy/proxy/server.py
@@ -257,9 +257,10 @@ class ConnectionHandler:
if self.config.certforward and self.server_conn.ssl_established:
return self.server_conn.cert, self.config.certstore.gen_pkey(self.server_conn.cert), None
else:
- host = self.server_conn.address.host
+ host = "mitmproxy"
sans = []
if self.server_conn.ssl_established and (not self.config.no_upstream_cert):
+ host = self.server_conn.address.host
upstream_cert = self.server_conn.cert
sans.extend(upstream_cert.altnames)
if upstream_cert.cn:
未修正のアプリが数多く残っている状態なので、パブリックな場所での言及には注意して下さい
未修正のアプリが数多く残っている状況ですが、すでに広く情報が公開されており、2.5.2で修正されたという情報が広まると混乱が生じるため広く周知する次第です。
AFNetworking 2.5.1 にMITM攻撃を許す脆弱性があり、2.5.2で修正された、 と報道されていますが、これは誤りです。
2.5.2では問題が修正されていません。また、2.5.1だけではなく、他の 2.x 系列のバージョンにも脆弱性があります。次のリリースで問題が修正される見込みです
別のサーバー用に発行された証明書でも、エラーを起こさずに正常に通信が成立するという状態です。 過去にも問題が指摘されていましたが、修正されないままリリースされており、2.5.2でも修正されませんでした。
httpsキャプチャ機能を備えたデバッグ用のproxyサーバーで、差し替える証明書の情報をいじってください。(そのようなオプションがあります)
2015-03-30
2015-04-20
2015-03-30
未修正のアプリが多くあり、またAppleの審査によって修正バージョンのリリースが遅れることが予想されるため、 この問題についてしばらくパブリックには言及しません。(影響を受けそうなアプリ製作者に個別に連絡しています)
Minded Security に記事の訂正を要求していますが、いつごろになるかはわかりません。
2015-04-22
https://github.com/AFNetworking/AFNetworking/releases/tag/2.5.3
Alamofire 1.2.0 以下にも証明書検証不備があります