プロフィール

prof_normal

ミアミン

ホワイトハッカーを夢みて、セキュリティアカデミーでお勉強中のミーアキャット。心配性でやさしい性格で、「みんな無事ミア?」「危険はないミア?」が口癖。ちょっとしたことですぐに「キャッ!」と動揺しがち。

icon_man

K.H.

2022年に中途で入社。主にスマートフォンアプリの診断を担当しています。趣味は楽器を演奏すること。

スマホアプリは重要情報にあふれていて心配

icon_man

K.H.さん

ミアミンさん、どうしました?スマートフォンの画面を心配そうに見つめて。

icon_aseri
ミアミン

セキュリティを勉強すればするほど、スマホが怖くなるミア。スマホは個人情報を持ち歩いているようなものだし、失くしたり、盗まれたりしたら重要な情報が漏れてしまうかも。大事な情報が危険にさらされているかもしれないと思うと、心配で夜も眠れないミア……。

icon_man

K.H.さん

そういうことを気にされるのは、いい着眼点だと思います!今日はスマホのアプリケーションに存在する脆弱性についてお話ししましょう。

スマホの情報漏えいはアプリの脆弱性が原因

icon_gimon
ミアミン

まず、セキュリティを考えるうえでのスマホとパソコンの違いを教えてミア。

icon_man

K.H.さん

ミアミンさんがさっきおっしゃっていたとおりですよ。まず、持ち運びを前提としたスマホの場合は物理的に紛失したり、盗難されたりするリスクがあります。悪意のある第三者が端末を手に入れた場合、スマホのアプリに保存されている重要な情報が盗まれてしまう恐れがあります。

また、多くのスマホアプリ内で位置情報やカメラ、連絡先などの便利な機能を紐づけて使うことができますよね。紐づけるためには各種アプリの「権限設定」(データ連携を許可する/しないの選択)が求められますが、このとき過剰に権限を与えることで、意図せず情報が漏れるリスクが生まれます。
(例)アプリ内に位置情報を使用する機能がないにもかかわらず、位置情報を「常に許可」に設定するなど

icon_aseri
ミアミン

キャッ!自分の現在地や友だちの連絡先……、他人に悪用されそうな情報がいっぱいミア。

icon_man

K.H.さん

このようなセキュリティリスクがあると、サービスを使ってくれている人の信頼を失ったり、ユーザーの金銭的な損失にもつながるかもしれません。そうならないよう、セキュリティリスクの原因である「アプリの脆弱性」を作り込まない工夫が必要なんです。

icon_gimon
ミアミン

なるほど。その欠陥からユーザーを守るために、対策できることはあるミア?

icon_man

K.H.さん

もちろん、リスクを低減する方法はあります。ここからはスマホアプリで作り込まれやすい脆弱性と、その対策を5つ説明しましょう。

【1】端末にデータを保存するなら暗号化は必須

icon_man

K.H.さん

1つ目は、データの保存方法のやり方です。ミアミンさんは普段スマホアプリにログインするときに、IDやパスワードを手入力していますか?

icon_aseri
ミアミン

ううん、SNSも会員証アプリもログイン情報が端末に保存されているから、自動で入力されるミア。あれってとっても楽だけど、アプリに保存されているデータが抜き取られる心配はないミア……?急に不安になってきた。

icon_man

K.H.さん

そこで重要なのが、データの保存方法です。まず、アプリ固有のデータを端末に保存せず、運営側のサーバに保存することが適切な対策として考えられるでしょう。データを端末に保存する場合、暗号化が必要です。暗号化されていないデータや文字列、いわゆる「平文」でログイン情報を保存していると、第三者にアカウントが乗っ取られる可能性があります。

icon_gimon
ミアミン

キャッ!それは大変……。たしか暗号にはさまざまなアルゴリズムがあると聞いたけど、暗号化するにあたって基準のようなものはあるミア?

icon_man

K.H.さん

はい、一定の強度が保証されたアルゴリズムを使用する必要があります。デジタル庁と総務省、経済産業省が評価して作成した「CRYPTREC暗号リスト」に記載されているかどうかが一つの目安になります。

icon_normal
ミアミン

「CRYPTREC暗号リスト」は政府のお墨付きということミア。

【2】アプリのログに不要な情報は出力しない

icon_man

K.H.さん

2つ目はログに関する脆弱性です。アプリから出力するログは、ツールを使用することでリアルタイムに取得できるため、適切に管理しないと情報漏えいの要因になります。ユーザーが入力したデータやセッション情報、アカウント情報などが出力されるようになっていると、これらの機微な情報が漏えいしてしまうかもしれません。

icon_aseri
ミアミン

キャッ!アプリで自分が何をしたかを他人に知られてしまうミア!

icon_man

K.H.さん

他にもデバッグ情報やエラー情報が出力されていると、それらを起点にログイン情報などが抜き取られるリスクがあります。アプリの開発中であれば問題ありませんが、リリースする際には出力するログの内容を見直さなければなりません。

icon_normal
ミアミン

入力内容やアカウント情報、デバッグ情報、エラー情報がアプリのログに出力されないようにする。これがポイントってわけですね。

icon_man

K.H.さん

そのとおり!他にも不要な情報が出力されていないか、確認する必要があります。

【3】そのソースコード、解析されても大丈夫?

icon_aseri
ミアミン

それにしてもログの解析なんて、手の込んだことをするヤツがいるミア!

icon_man

K.H.さん

他にも手の込んだ攻撃がありますよ。リバースエンジニアリングです。リバースエンジニアリングとは、第三者が既存のアプリの設計や仕組みを解析して明らかにすることです。

icon_gimon
ミアミン

料理のレシピを再現するような感じミア?

icon_man

K.H.さん

まさにそういうイメージですね。大事な情報は、アプリのソースコードや設定ファイルなどのリソースに埋め込んではいけません。例えば、暗号を解くための情報がリソースに埋め込まれていると、リバースエンジニアリングによって、暗号化されたデータが解析されてしまう恐れがあります。同様に、開発環境に関する情報が埋め込まれていると、第三者によって解析されて、開発環境へ攻撃されるリスクが高まるでしょう。重要情報や開発情報はソースコードに直接的に入力してはいけません。基本的に読み取られて困る情報はリソースに保持せず、サーバー側で管理するのが適切です。

icon_normal
ミアミン

なんだかハッカーの攻撃を防ぐために手間をかけているようで、しゃくに障るミア。

icon_man

K.H.さん

これは副次的な対策ですが、ソースコードを難読化するソフトウェアもあります。それを使用することで、リバースエンジニアリングによる解析を難しくすることができます。

icon_normal
ミアミン

まるでお城の守りを固める戦国武将みたい……!

【4】開発環境で使用するフレームワークに注意

icon_man

K.H.さん

リバースエンジニアリングによる脆弱性が潜んでいるのは、アプリのリソースだけではありません。アプリを開発する際にテンプレートのように使われるフレームワークにも注意が必要です。フレームワークは、リバースエンジニアリングによって調べることができます。そのフレームワークに脆弱性がある場合、悪用されるリスクが発生します。

icon_gimon
ミアミン

アプリ自体ではなくてフレームワークから攻撃されることもあるんですね。対策としては何ができるミア?

icon_man

K.H.さん

アプリで使っているフレームワークを把握し、適切に管理することです。特に、古いフレームワークには要注意。脆弱性が修正されずに放置されていることがあるので、常に最新のフレームワークを使いましょう。

icon_gimon
ミアミン

OK!じゃあ、開発時点で最新のフレームワークを使っていれば安心ってこと?

icon_man

K.H.さん

いいえ。現時点で最新のフレームワークには脆弱性がなくても、将来的に発見されることがあります。だからこそ、定期的にアップデートすることも重要です。

icon_aseri
ミアミン

セキュリティ対策って、いたちごっこみたい……。

【5】必要以上に多くの許可を求めるアプリはユーザーの信頼感を損なう

icon_normal
ミアミン

この前、新しいアプリをインストールしたら、位置情報の使用許可をあれこれ求められたミア。位置情報を使うような機能がないのに権限だけ求められると、見えないところで自分のデータが勝手に使われているんじゃないかと、疑ってしまうミア。

icon_man

K.H.さん

そのような不安を抱えるユーザーは多いでしょうね。アプリの開発者からすると、必要以上に多くの権限を要求するメッセージがユーザーに不信感を与えてしまうことも、リスクの一つといえますね。不要な権限は設定しないほうがいいでしょう。

「アプリが攻撃された」「情報漏えいした」とニュースになると、ユーザーからの信頼を大きく損ないます。アプリの開発者には、考えられるリスクについて一つひとつ検証して、対策を講じることが常に求められています。

icon_yorokobi
ミアミン

スマホアプリの開発者が、さまざまな角度からセキュリティ対策をしていることがよくわかりました。今日はいろいろ教えてくれてありがとミア!

詳細はこちら