プロジェクトオーガナイザの吉田聖書です。
今日は、4月22日にITmediaが報道した内容で、Androidの人気アプリ2,500本を調べたところ、そのうち約1,000本は機密認証情報が丸見えだったというニュースを取り上げます。
あまり一般的なニュースになっていないんですが、個人的には結構すごい話だなと感じました。
念のためですが、最近よく聞く個人情報の大量流出とはまた性格が違うもので、機密認証情報と言っているのは、個人情報のことではありません。
近年は、インターネット上の様々なサービス同士が相互に連携して、一つのサービスでは実現できないような機能を実現していることがあります。例えばSNSの連携が挙げられますが、1つのサービスに投稿すれば自動的にもう1つのサービスにも自動で投稿されるという機能があります。おそらく皆さんも、意識はしていなくてもどこかではそういった機能を利用したことがあると思います。
自動で連携する場合、自分のアカウントに投稿されるようにしますよね。その時に、わざわざ連携先のサービスにいちいちログインしたりしないじゃないですか。それは一般的なIDとパスワードによる認証ではなく、連携先のサービスで認証キーを発行して、その認証キーはIDとパスワードで認証した本人の指示で発行するわけですから、その認証キーを知っているということで、その本人だということを認証します。
つまり、その認証キーを使えば成りすましができてしまうということです。場合によってはそこから、それこそ大量の個人情報にアクセスできてしまう可能性もあります。もちろんそれはその認証キーを使ってできる範囲に限られます。
これを調査したのはイギリスのコンパリテックというITサービスの比較調査会社で、「Google Playストア」で公開されているアプリ2,500本を調べたそうです。そうしたら、そのうち1,057本は、先ほど説明した認証キー情報がプログラムに定数としてハードコーディングされており、誰からもアクセス可能な状態だったということです。
※ この記事は、先日公開した以下の音声コンテンツを基に編集したものです。
これは実は心当たりがありまして、私が知る限り、そういった認証キーを定数として定義するという方法はよく行われています。それが即ち問題になるということではありません。
やりがちな背景として思いつくのが、Webアプリケーションの開発で育ったエンジニアが、デバイスネイティブなアプリケーションを開発すると起こりやすいのではないか思います。
何故かというと、Webアプリケーションはサーバーサイド・アプリケーションとも呼ばれ、プログラムはすべてサーバに配置されます。Webブラウザでアクセスすると、サーバ上でレンダリング処理した画面データがクライアントに転送されるので、基本的にはクライアントサイドにはプログラムはありません。もちろん今ではブラウザ上でスクリプトが動きますから、完全なサーバーサイドと呼べるような状況ではなくなってきてはいます。それでもサーバー上にあるプログラムの中身を一般の利用者が調べることはできません。
しかし、Androidのアプリケーションというのはクライアントサイド・アプリケーションでして、つまり利用者の手元にプログラムがあります。つまりプログラムに組み込まれた認証情報が利用者の手元に渡っているということです。
Androidのアプリケーションは、一般的にはJava言語で書かれています。デバイスに配置されているアプリケーションのファイルを逆コンパイルすれば、完全ではないにせよ、エンジニアが書いたプログラムのコードを復元できてしまします。そこに認証情報が定数として定義されていれば、一般の利用者でも(もちろん逆コンパイルすればですが)そういったカギ情報が簡単に手に入るということです。
このニュースの最後には、じゃあどうすればよいかという具体的な方法が提案されています。その中の一つに「難読化」というのがあるのですが、これは私は根本的な解決にはなっていないかなと思います。難読化というのは逆コンパイルされてもプログラムのコードを読みにくくするということなんですが、読みにくくするのであって読めなくするわけではないからです。Androidの場合は現時点ではKeyStoreを利用するというのが手堅い方式ではないでしょうか。ただ、最近はAndroidアプリの開発に携わっていないので、また状況が変わっているかもしれません。
関連記事
プロマネの右腕
プロジェクトマネジメントの支援を行っています。
新サービスの企画を任されたけど どう進めていいか悩んでいる担当者、
部下に新しい企画を任せたけど このままで大丈夫か不安な管理職の方、
以下のサイトをご参照ください。
https://www.crossidea.co.jp/services/right-hand-pmo.html
YouTubeにて動画配信中!
プロジェクトマネジメントのノウハウをYouTubeで配信しています。
ブログと併せてご活用ください。