セキュリティ例外の無視

本シナリオでの学習内容

ここでは、セキュリティ例外の無視によって生じる脆弱性について学習します。
脆弱性の原因と対策について実際にソースコードを参照しながら学習します。

セキュリティ例外の無視とは

「セキュリティ例外の無視」とはどのような問題でしょうか。ここで概要について理解しておきましょう。
SSL通信では、サーバの正当性を確認するために、通信開始時にサーバから送られてくるサーバ証明書に対して次のような検証が行われます。
  • 第三者認証局により署名された正当なサーバ証明書であるかどうか
  • サーバ証明書が有効(期限切れでない)であるかどうか
  • サーバ証明書のCN(FQDN)と、接続先サーバのホスト名が一致しているかどうか
これらの検証に失敗すると、例外(SSLException)が発生します。またサーバ証明書に不備がある場合や、中間者攻撃を受けている場合にもこの例外が発生します。
例外を検出した場合、アプリは通信を切断するなどのアプリの仕様に応じた適切な処理を行うことによって、偽装されたサーバへの接続や、中間者攻撃による被害を未然に防ぐことができます。
例外(SSLException)を適切に処理すれば
盗聴・改ざん、偽装のサーバへの接続などの被害を受けない。


しかし、例外を無視した場合はサーバの偽装や、通信データの改ざんを検知できないため、接続すべきでないサーバに接続したり、中間者攻撃を受けたりする可能性があります。
例外を無視すると、
盗聴・改ざん、偽装のサーバへの接続を検知できない。


SSL通信時に発生する例外を無視する事で、通信データの盗聴・改ざん、偽装のサーバへの接続などを検知できないことが「セキュリティ例外の無視」による問題です。

学習用アプリについて

このシナリオでは、脆弱性の体験を行いません。
サンプルアプリのソースコードを参照しながら問題について解説します。
どのような実装がこの問題につながるのか次のページで学習していきましょう。