Androidで脆弱性のないアプリを作るにはどうすればよい?!~担当講師が語る「Androidのセキュリティ事情」~

  • テクノロジー

みなさん、こんにちは。私はスマートデバイス(スマートフォンやタブレット端末)で動くモバイルアプリケーション開発のAndroidアプリケーション開発の講師を担当しています。

最近はスマートデバイス(スマートフォンやタブレット端末)をお持ちの方が大変増えてきました。
プライベートでの利用だけでなく、個人所有のスマートデバイスを業務でも活用する「BYOD(Bring Your Own Device)」といった応用例もあります。

スマートデバイスを利用することで、いつでもどこでも好きな情報にアクセスできることは、とても便利ですが、その一方で、個人情報の流出など、セキュリティに関する問題も聞かれるようになってきました。

そこで今回は、Androidのセキュリティ事情についてお話をしたいと思います。

セキュリティ対策にはコストが掛かりすぎる?

アプリのセキュリティ上の欠陥のことを脆弱性といいます。
アプリのバグや、開発者が予想していなかった操作方法などが原因で発生し、コンピュータウイルスに感染したり、情報漏えいなどの被害の元となることがあります。

アプリをリリースするベンダ―は、脆弱性を排除しようとさまざまな取り組みをされていることと思いますが、脆弱性対策というと、要求される技術が多すぎる、工数が掛かりすぎるということで対応に苦労されている方も多くみられます。

脆弱性対策が困難な理由として、脆弱性を悪用する攻撃側と対策をとる防御側の非対称性が挙げられます。防御側のほうが、技術や費用の点で負担が大きいのです。

玄関やベランダの戸締りをしていても、小さな窓の鍵がひとつ開いていれば泥棒は入ってきます。すべての鍵をきちんと閉めても、家の前で鍵を落としてしまえば台無しです。

つまり、攻撃側は脆弱性が一か所あれば、それを悪用できるのに対し、防御側はアプリケーション全体で対策をとらねばならず、負担が大きくなるのです。

それでは、Androidで脆弱性のないアプリを作るにはどうすればいいのでしょう?アプリケーション全体にもれなく気を配る必要があるのでしょうか?

20150604_1.png

Androidアプリの脆弱性情報

セキュリティ対策方法のお話をする前に、Androidではどのような脆弱性問題が発生しているか、ご紹介したいと思います。

IPA(独立行政法人 情報処理推進機構)とJPCERT/CC(JPCERTコーディネーションセンター)が共同運営するJVN(Japan Vulnerability Notes)が、日本で使用されているソフトウェアなどの脆弱性関連情報とその対策情報を提供しています。

JVNは四半期ごとにレポートしています。例えば、2014年第4四半期のレポートは以下のリンクから見ることができます。

脆弱性対策情報データベースJVN iPediaの登録状況 [2014年第4四半期(10月~12月)]:IPA 独立行政法人 情報処理推進機構

Androidアプリだけでも、1,200件超の脆弱性が報告されています。数の多さに、驚かれた方もいらっしゃるのではないでしょうか?

今回、これだけ多くの脆弱性が報告されたのは、レポートにもある通り「複数の Android アプリに SSL 証明書を適切に検証しない脆弱性(JVNDB-2014-004043)」という、同一の脆弱性を持つアプリが多数見つかったためです。

いったい、どうしてこれだけ多数の、脆弱性を持つアプリがリリースされてしまったのでしょうか?

脆弱性情報から考えられるセキュリティ対策

1アプリだけの脆弱性であれば、アプリをリリースしたベンダー固有の問題であることも考えられます。しかし、これだけ多数のアプリに同様の脆弱性が発見されたということは、特定の会社の問題ではなく、どの会社でも同様の問題を起こす可能性がある、と考えたほうがよさそうです。

実は、「同じような脆弱性が多数のアプリで見つかる」という事例は今回が初めてではありません。

IPAテクニカルウォッチ 「Android アプリの脆弱性 」

先ほどのレポートより少し前のものになりますが、こちらのレポートには「届け出られた脆弱性は、アクセス制限の 不備に関するものが 7割以上 であった 。」と報告されています。このようにAndroidアプリで発見される脆弱性に、ある傾向がみられることがあります。

脆弱性に傾向がみられるのであれば、傾向を分析することで、比較的容易に対策をとることができます。

Androidは比較的新しいプラットフォームであり、セキュリティに関しても十分考慮がなされています。スマートデバイスに登録された個人情報やアプリ固有の情報を、アクセス許可のないアプリが容易に読み取ることを防ぐための仕組みが、あらかじめ備わっています。

これまで発見されている脆弱性のほとんどは、アプリ側で取らなければならない対策が十分とられていないことに原因があります。
脆弱性のない安全なアプリを作るためには、 Androidプラットフォームの保護が及ぶ範囲と、プラットフォームの保護が及ばないためにアプリ側で対策を取らなければならない範囲を理解することが重要になってきます。

コース紹介

具体的な対策など、Androidアプリでの安全なアプリ開発について、より詳しくは次のコースで取り扱っております。ご興味のある方は、ぜひコース概要をご確認ください。

その他、モバイルアプリケーションにおいて必要となる知識や技術について、研修コースをご提供しています。こちらもご参考にしてください。

モバイルアプリケーション関連コースマップ

みなさまと講習会でお会いできるのを楽しみにしています!!

(2015/06/04)