JSSEC AndroidセキュアコーディングガイドにおけるAndroidManifest.xmlの書き方
概要
一般社団法人日本スマートフォンセキュリティ協会(JSSEC)発行の「Androidアプリのセキュア設計・セキュアコーディングガイド」を基準に、
セキュリティ調査する機会があったため、記事にしてみました。
今回はまず見るであろう、
AndroidManifest.xmlに焦点を絞っていきたいと思います。
お題目としては、以下の様になります。
- 各コンポーネントの公開設定
- 使用権限の定義
想定している対象者
- Androidの基本コンポーネント・権限については理解したので、これからセキュリティ観点についても理解を深めていきたい方
本題
各コンポーネントの公開設定
新しくコンポーネントを増やす場合は、以下に注意。
- 追加したコンポーネントごとにexported属性が明示的に指定する
- 非公開となっているコンポーネントに、intent-filterを定義しない
AndroidManifest.xmlによっては、
「非公開のつもりだったけど、公開で別アプリから起動出来る状態になっていた」ということがありえるので、
書き方には、十分気をつける必要があります。
セキュアコーディングガイドでいうと、こちらの内容となります。
使用権限の定義
新しく権限を追加する場合、
これから新しく使用する製品には、以下の様な対策をすると良いと思いました。
- xml上でのなぜ追加したか、コメントを記載
- git blameで管理出来る様に、コメントで利用用途を追える様にしておく。
歴史の長い製品なんかだと、かなり昔に宣言されたものの実際は使用していないなんてことはよくあると思います・・
(自分も今回チケット、コミットログを掘り続けることになりました・・)
個人的には、git logが伸びてくると追うのが辛いので、コメントで管理しておくのがベストかなと思います。
権限については、実装上でも注意点多いので、セキュアコーディングガイドでいうと、こちらや公式資料をよく見ておく必要があると思います。
まとめ
慣れない内は、定期的に上記コーディングガイドを定期的に見直す習慣をつけると良さそうと思いました。
今回は本当に触りについてしか触れていないので、他の内容については、また触れたいと思います。