LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

サービス・製品 | 

Androidアプリ脆弱性検査ツール「Secure Coding Checker®」入門

デジタルペンテストサービス部の宮崎です。

Androidアプリ開発者の皆さん、アプリのテスト環境の準備、いつも手間がかかっていませんか?今回は、皆さんにとってとても役立つサービス「Secure Coding Checker(セキュアコーディングチェッカー)」の紹介をします。

このサービスは、皆さんが開発したAndroidアプリをWebブラウザからアップロードするだけで、Androidアプリにおけるセキュリティ基準のデファクトスタンダードに100%準拠した検査を実施できるものです。簡単に言うと、準備もなく"手ぶらで検査"ができてしまうわけです。

本稿は入門用として、その背景と実際の使い勝手を紹介していきたいと思います。

セキュアコーディングガイド

Androidアプリのセキュリティを考慮した設計・開発の知見は、開発者自身の中に蓄積されていきます。しかし、その知見をチーム内で共有することは難しく、誰がコーディングを担当したかで品質が左右されることも少なくありません。

また、セキュアとされていたコーディングであっても、時代の変遷とともに、脆弱性を含む危険なコーディングになることも珍しくありません。

セキュアなコーディングの定義は日々アップデートされているのです。そして、その定義に追随するには、大変な労力を必要とします。

このような状況を改善するために、一般社団法人日本スマートフォンセキュリティ協会(JSSEC)は、2012年6月に『Androidアプリのセキュア設計・セキュアコーディングガイド』(以下、「セキュアコーディングガイド」)を無償公開しました。このガイドは、協会に参加する開発者の有志によって、Androidアプリのセキュアな設計・開発のノウハウが集められた文書で、豊富なサンプルコードとともにセキュアなコーディングを解説したものです。

そして、発行後も随時パブリックコメントを募集しながら改訂を重ね、最新版は第11版となっています。そのボリュームも全541ページに及び、通読するには相当の時間がかかります。ましてや、開発フェーズにおいて参照するのも非常に難しいのではないかと思います。

そこで今回紹介するのがSecure Coding Checkerです。

このサービスは、「セキュアコーディングガイド」に準拠する検査を自動的にやってくれる便利なものです。Webブラウザからアプリのapkファイルをアップロードするだけで、脆弱なコードが含まれていないかを検査し、含まれているのならどのように修正したらいいのかを知らせてくれます。

より詳しく知るにはこちら

2週間無料トライアルはこちら

Secure Coding Checkerは、Androidアプリの開発者、発注者それぞれのニーズに合った使いやすい機能を備えた、Webベースの脆弱性検査サービスです。

実際に使ってみよう

実際に体験するのが一番わかりやすいので早速使ってみましょう。
今回はAndroid Studio 4.0の公式サンプル「DrawableTinting」を使用し、実際の検査から、検査結果をもとに修正を行ってみます。

検査をする

図1はSecure Coding Checkerのトップページです。

Secure Coding Checkerトップページ
図1 Secure Coding Checkerトップページ

「検査」をクリックすることで、ファイル選択ダイアログが表示されますので、検査対象となるapkファイルを選択します。
apkファイルを選択すると、ファイルのアップロードと検査が自動で行われ、検査結果が表示されます。検査時間はコード量によりますが、今回使用したサンプルは1000行程度のコードサイズで、およそ20秒程度でした。

検査サマリー

図2は検査サマリーです。

検査サマリー
図2 検査サマリー

ガイドへの準拠レベルに応じ、「違反 / 注意 / 不明 / 安全 / 安全判断 / リスク受容判断」の内容でグラフ表示されます。違反となっている項目は修正必須箇所です。

この例では検査サマリー行に、「LogCatにログ出力する」そして「その他(注意すべき実装)」の2つの項目が違反項目として検出されました。

検出項目と修正方法の確認

検査サマリーの画面左側の該当行をクリックすると、詳細説明と「セキュアコーディングガイド」へのリンクが表示され、問題のある個所の詳細説明や修正方法をすぐに参照することができます。

まず最初に、図2左側の赤い三角(違反)マークがついた項目、「LogCatにログ出力する」について見てみましょう。

詳細説明には「リリース版アプリではLog#d()/v() 関数を利用してはいけません。この関数は開発ログ情報を出力するために利用するもので、リリース前には必ず該当するログ出力コードを削除する必要があります。」とありました。

次に2つ目の赤い三角(違反)マーク、「その他(注意すべき実装)」について見てみます。
詳細説明には「android:debuggableの値をtrueとしてリリース用のアプリを作成してはいけません。debuggable設定は、開発中に実機でデバッグを行うなどの場合にのみ設定してください。リリース前にはdebuggable設定を無効にしていることを確認してください。」とありました。

修正に取りかかる

マークが表示された検出された項目ごとに「セキュアコーディングガイド」へのリンクを参照し修正を行います。

まずは1つ目の検出項目「LogCatにログ出力する」についてです。

コードの中にデバッグメッセージ出力用のLog#d()/v() 関数が残っているため検出されたようです。リンク先のガイドを確認しますと、修正方法としては「ProGuardの自動削除機能を使うこと」とあります。

図3を参考に、Android Studioの[Project Structure]の設定から、[Minify Enabled]を"true"に、[ProGuard Files]に"proguard-android.txt"を設定します。

Android Studioの[Project Structure]設定画面
図3 Android Studioの[Project Structure]設定画面

次に2つ目の検出項目「その他(注意すべき実装)」についてです。

Androidアプリケーションのandroid:debuggable属性がtrueに設定されているため検出されたようです。リンク先のガイドを確認しますと、修正方法としては「明示的にfalseに設定する必要がある」とあります。

図4を参考に、Android Studioの[Build Variants]設定から[Active Build Variant]に"release"を設定します。

Android Studioの[Build Variants]設定画面
図4 Android Studioの[Build Variants]設定画面

再検査を実施する

修正を行ったAndroidアプリをリビルドし、apkファイルを再度検査します。

図5は再検査時の検査サマリーです。

再検査時の検査サマリー
図5 再検査時の検査サマリー

2つあった違反項目がいずれも検出されなくなったことが確認できました。

おわりに

Secure Coding Checkerの基本的な使い方を紹介させていただきました。

コード中に潜む脆弱性を目視でチェックするより、はるかに正確で網羅的な検査ができることが伝わりましたでしょうか?

Secure Coding Checkerは「セキュアコーディングガイド」の改訂に合わせバージョンアップを続けています。過去に制作したアプリが最新のAndroidの仕様においても問題がないかのチェックも素早く行えますし、検査履歴によりリスク管理状況を把握できるのも特徴の一つです。

2週間無料でトライアルができますので、是非一度、体験していただけますと幸いです。

より詳しく知るにはこちら

2週間無料トライアルはこちら

Secure Coding Checkerは、Androidアプリの開発者、発注者それぞれのニーズに合った使いやすい機能を備えた、Webベースの脆弱性検査サービスです。

この記事は役に立ちましたか?

はい いいえ