ソニーデジタルネットワークアプリケーションズ(SDNA)製の脆弱性検査ツール「Secure Coding Checker」を用いてITmediaが開発したAndroidアプリ「ONETOPI ヘッドライン」を実際に検査し、どんな脆弱性が見つかりどう修正したかを「実録」風にお届けします。
「張り切って開発したAndroidアプリの公開後に脆弱性が指摘されてしまった。いったいどう修正すればいいのだろうか」「概念として、『安全なアプリ』がいいことは百も承知だが、具体的にどうコードに落とし込んでいけばいいのだろうか」――こんな悩みを抱えているAndroidアプリの開発者は、少なくないのではないでしょうか。
本記事では、そうした悩みを解決する手助けとなるツールと手法を、実際に公開しているアプリを例に取って紹介していきます。
今回例として登場するのは、ソニーデジタルネットワークアプリケーションズ(SDNA)製の脆弱性検査ツール「Secure Coding Checker」と、ITmediaが開発したAndroidアプリ「ONETOPI ヘッドライン」です。Secure Coding Checkerを用いてONETOPI ヘッドラインを実際に検査し、そこで検出された脆弱性について解説を加えながら、安全なコードに修正していく様子を「実録形式」でご紹介したいと思います。SDNAのメンバーによる脆弱性の解説と修正方法のアドバイスを踏まえ、ITmediaのONETOPI開発メンバーが脆弱性を修正していく様子をご覧ください。
Androidアプリの開発では、Android Frameworkの特性を十分考慮に入れたセキュリティ対策が必要となります。しかし、アプリの開発競争が激化する中、開発スピードの向上と低コスト化への要求はますます高まっており、開発現場においては、セキュリティを考慮して設計・実装を継続的に行うことは簡単なことではありません。
現に、情報処理推進機構(IPA)が運用している脆弱性対策情報データベース「JVN iPedia」へのスマートフォン用ソフトウェアの脆弱性報告は2012年を境に急増しており、中でもAndroidアプリに関する報告件数の増加には目を見張るものがあります。
このような現状を踏まえ、一般社団法人日本スマートフォンセキュリティ協会(JSSEC)は、2012年6月に『Androidアプリのセキュア設計・セキュアコーディングガイド』(以下、「セキュアコーディングガイド」)を無償公開しました。
このガイドはAndroidアプリのセキュリティを考慮した設計・開発のノウハウを集めた文書であり、セキュアなサンプルコードがふんだんに盛り込まれています。2013年10月現在、ガイドは2回の改訂を経ており、「常にβ版」として、随時パブリックコメントを募集しています。
一方、Androidアプリの脆弱性を検査するツールは、研究用・商用含めいくつか公開されています。例えば、ネットエージェントの「Secroid」は、迷惑アプリの検出に役立つツールですし、日本IBMの「IBM Security AppScan」は、(高額ですが)C言語で書かれたJNI層まで検査したい時に役立ちます。今回検査に利用したSaaS型商用ツール「Secure Coding Checker」は、対象アプリが、「JSSECのセキュアコーディングガイドに即したセキュアな作りになっているか」という観点で検査することが特徴です。見つかった脆弱性ごとにセキュアコーディングガイドの該当個所へのリンクが表示され、その修正方法を確認できます。
Secure Coding Checkerを利用すれば、セキュアコーディングを理解していないエンジニアでも安全にAndroidアプリを実装できますし、リンク表示により、検査したアプリに必要な部分のセキュアコーディングガイドを読み進めることができるため、効率的にセキュアコーディングを学習できます。
イチから始める! Androidセキュリティ 連載インデックス
http://www.atmarkit.co.jp/fsecurity/index/index_androbasic.html
コピペ歓迎! JSSECがセキュアなAndroidアプリ開発ガイドラインの新版
http://www.atmarkit.co.jp/ait/articles/1304/23/news089.html
今回、検査を行ったAndroidアプリは、アイティメディアが開発した「ONETOPIヘッドライン」です。1万人を超える「情報通」が、ポータルサイトや新聞、Webメディア、ブログ、2chまとめサイトなどからピックアップしたコンテンツを、56種類のカテゴリに分類してお届けするという、情報収集用のニュースアプリです。
さまざまなサイトから情報を収集してきて、カテゴリ別に分類し、表示するというアプリの機能から考えると、それほど深刻な脆弱性があるようには思われません。しかし、開発の途中でチェックしてみると意外なところに問題が見つかりました。
それではONETOPIヘッドラインのエンジニアが、どのように脆弱性を発見し、どのように解決していったのかを、具体的に見ていきましょう。なお、ONETOPIヘッドラインは、これらの脆弱性をすべて解決し、9月24日にGoogle Playで公開をしています。
アイティメディアでONETOPIヘッドラインを開発しているエンジニアである高間さん(仮名)は、昨今のAndroidアプリ脆弱性事情を目にしていることもあり、開発中のONETOPIヘッドラインのセキュリティが気になっていました。そこでJSSECセキュアコーディングガイドを入手したものの、最新の2013年4月発行版は全部で365ページもあります。開発を進めながら、その合間にセキュアコーディング学習、実践に取り組むのはなかなか難しい状況でした。
そこで、Secure Coding Checkerの開発元であるSDNAの協力を得て、ONETOPIヘッドラインの脆弱性をSecure Coding Checkerで検査してみました。なお、Secure Coding Checkerには、登録なしで誰でも使える無料の「お試し版」(https://scc-mini.sonydna.com/)もありますが、今回は製品版 Secure Coding Checkerを利用して検査しています。
Secure Coding Checkerにログインし、検査ボタンを選択すると、上のような画面が表示されます。参照ボタンから、ONETOPIアプリ(apkファイル)を選択し、検査ボタンを押すとアプリの検査が開始され、ほどなく結果サマリが表示されました。
高間:アプリを検査するには、apkファイルだけがあればよいのですね。
SDNA:はい、その通りです。Secure Coding Checkerはapkファイルを分析して、セキュアコーディングガイドに準拠しているかどうかを確認します。apkファイルがあれば検査できるため、アプリ開発者はもちろん、アプリ開発を委託していて手元にapkファイルしかない(つまりソースコードがない)場合でも、アプリを検査できます。
Secure Coding Checker検査結果サマリ画面では、対象アプリのセキュアコーディングガイドに対する違反項目の数をグラフ表示で確認できます。画面2は、ONETOPIヘッドラインの検査結果サマリ画面です。
高間:検査結果を確認すると、「違反」の項目が多くてビックリしました。このままリリースしていたら危なかったですね。
SDNA:実は、ほかの多くのAndroidアプリも、同じようなセキュリティ対策状況にあるようです。SDNAでいくつかのAndroidアプリを調査したところ、違反項目のないアプリはほとんどありませんでした。
Secure Coding Checkerは検査対象のアプリをセキュアコーディングガイドに照らし合わせ、セキュアコーディングガイドの項目ごとに(例:「Activityを作る」)、コーディングルールに違反した個所がないかを検査します。
Secure Coding Checkerでは、検査結果を以下のような分類で表示します。
上記の検査結果以外にも、以下のような補助情報が表示されます。
これらの情報を基に、ONETOPIヘッドラインで見つかった脆弱性を確認していきます。
Copyright © ITmedia, Inc. All Rights Reserved.