インドネシアのPT.AQ Business Consulting IndonesiaでFlutterのエンジニア兼アドバイザーをしております菊池と申します。
本記事はZennで出版しておりますflutter chipsのchapter2-1の内容の一部になります。(本記事が2,000字程度、Zenn記事が50,000字程度)
センシティブな情報とは
センシティブな情報とは、具体的に、、
- Amazon Web Services(AWS)APIキー
- Facebookトークン
- GitHubトークン
- Google APIキー
- Twitter OAuthトークン
- PayPal APIキー
- Twilio APIキー
- Slack Webフック
- Heroku APIキー
- MailChimpキー
- IPアドレス
- 暗号化鍵
などが考えられます。みなさんハードコーディングしてしまっていませんか。
センシティブな情報をハードコーディングすることの危険性
パスワードやIPアドレス、暗号化鍵等センシティブな情報をハードコードすると、それらの情報を攻撃者に晒してしまう可能性がある。クラスファイルにアクセスできる者であれば誰でも、クラスファイルを逆コンパイルし、センシティブな情報を取り出すことができる。したがって、プログラムにセンシティブな情報をハードコードしてはならない。
参考: MSC03-J. センシティブな情報をハードコードしない
過去に実際に発生したインシデント/事例
- Androidアプリに大手サービスの「鍵」をハードコード、AWSアカウントにアクセスも
- 1000本以上のAndroidアプリが認証情報を無防備な状態で保存、Comparitechが調査
- JVN#00414047 スマートフォンアプリ「Studyplus(スタディプラス)」に外部サービスの API キーがハードコードされている問題
実際に覗いてみた
githubで”aws_accesskey”で検索すると確かにちょいちょい出てきました。
Flutter製アプリで懸念すべきこと
Flutter製のアプリで懸念すべきことは主に以下の2点になると思います。
- git上にセンシティブな情報をあげない
- 逆コンパイルされても、センシティブな情報が見つからないようにする/見つかりにくくする。
APKファイルの逆コンパイルの方法
APKの逆コンパイルはとても簡単に実行できます。
-
'apktool'をインストール
Macであれば、Homebrewを使ってインストールできます。
brew install apktool
- 'apktool d {対象のAPK}.apk'で逆コンパイルされます。
apktool d test.apk
対処法
対策は購入者限定の記事となります。
下記よりアクセス可能です。
flutter chips