Appleの審査と格闘した話(NTP編)
Appleの審査で嵌ったので記事にしてみました。
Wi-Fiでインターネットに接続できない問題?
趣味開発のiOSアプリをAppleの審査にかけたのですが、Wi-Fi接続時にインターネットに接続不可のエラーメッセージが出るという理由で却下の判定を受けました。ここで気になるのが、アプリ起動時のGame Centerとの通信は上手くいっているのにその後の通信の方でエラーメッセージが出ていたことでした。となると、単純にインターネットに接続できないことが問題なのではないという仮説が立ちます。
犯人はNTP通信
エラーメッセージが出現した箇所ではNTP通信を行っていました。Game Centerとの通信は全てHTTPSなのでTCPの通信ですが、NTPはUDPを利用している通信です。UDPを利用している通信は、ICMPもそうですが得てしてDDoS攻撃に利用される可能性があり、NTPも例に漏れません。複数のクライアントから送信元IPアドレスを詐称したNTPリクエストを大量に送信し、NTPサーバからの応答を詐称先のホストに集中させてサービスをダウンさせるNTP Reflection攻撃など、実際に悪用されています。そのため、Apple側の社内APからインターネットに抜けていく途中のFWにてNTP通信が遮断されており、その結果NW接続不可の判定となったのではないかと考えました。そして、修正を試み、無事に審査を通過したため、この読みは当たっていたようです。
(以前の審査では普通に通過していたため、このタイミングでFWのACLが強化されたのではないでしょうか)
(そもそも、商業でNTP通信を必要とする場合は、自社内のサーバ側でNTPサーバと通信し、それをクライアント側に渡している場合がほとんどかと思います。(実際のところは不明ですが)今回は趣味開発かつNTP通信のためだけにサーバを立てたくないので、クライアント側でNTP通信をさせています)