「未対策なら1分でできる」 スマホアプリの改ざんを防ぐには?:「不正ユーザーの95%が利用する手法」を解説(2/2 ページ)
スマートフォン向けアプリケーションを開発する際にもセキュリティ対策は欠かせない。DeNAの舟久保氏は内製ツールと自作アプリを利用して模擬的に改ざん行為を行い、アプリ開発時にどういった対策が有効になるかを解説した。
ファイル改ざんによる手法
続いて紹介したのが「ファイル改ざん」だ。例えばゲームアプリの場合、アプリがクラッシュしても、再起動した時にクラッシュ直前の状態に復帰できるよう、アプリフォルダ内にステータスなどの情報を保存していることがある。
ほとんどのファイルは暗号化されているが、逆コンパイルを用いてアプリのアーカイブファイル(apkやipa形式)からソースコードを復号し、暗号化に利用しているアルゴリズムや秘密鍵を特定することで、保存されているファイルを復号してコードを書き換えて不正行為を行う。いわゆる「リバースエンジニアリング」(参考記事)の手口だ。
講演では、Java、C#(Unity Mono)、C/C++(Android NDK / cocos2d-x)で構築したサンプルアプリを逆コンパイルした。その結果、言語や開発環境にかかわらず、共通鍵暗号アルゴリズム「AES-CBC」(128bit)を利用していること、16バイトの鍵が特定できることを確認した。
舟久保氏はこうしたファイル改ざんの対策には「コードを解析されないような仕組みの導入が必要だ」と述べる。
「関数名や文字列は解析ツールで逆コンパイルすると把握できてしまう。例えば『encrypt』という関数があれば、簡単に見つかってしまう可能性が高い。従って、シンボル情報(関数名、変数名)を削除したり、文字列はXORなどを用いて暗号化したりする方法を採るのがよいだろう。また、例に挙げた『AES』は、よく知られている暗号化手法なので、独自暗号を利用するのも一つの手だ。さらに、ダミーコードやループを追加して処理の流れを追跡されにくい形にすることで、どういう暗号アルゴリズムを用いているのか、解析されにくい構成になる」
パケット改ざんによる手法
最後に紹介したのが「パケット改ざん」だ。ファイル改ざんと同様、逆コンパイルで暗号化手法と秘密鍵を把握しておき、スマートフォンアプリとサーバが通信するパケットを専用ツールで傍受する。そして、パケットごとに「データの復号」「コードの書き換え」「再暗号化」の処理を挟んでアプリサーバに送信することで改ざんするという手法だ。
「パケット改ざんの対策は、SSL通信を利用して証明書の検証(Pinning)を行うことだ。また、Pinningの処理が解析され、コードを書き換えられないよう、ファイル改ざん対策で挙げたシンボル情報の削除や難読化、独自暗号の利用、コード難読化、改ざん検知を実施すべきだろう」
舟久保氏は3つの手法の対策についてまとめ、講演を締めくくった。
「クライアント側にデータやロジックを保存させると、改ざんされやすい。また、サーバ側にデータやロジックを保存したり、今回紹介した対策方法を適用したりしても、完全に改ざんを防ぐのは不可能だ。改ざん手法を知り、さまざまな対策を多層的に行って、時間をかけても改ざんされにくいアプリを設計、開発することが求められるだろう」
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 経営層、管理層がセキュリティ人材に装備を与え、経験値をためさせるためにすべきこと
40〜50代の経営者や管理職に向けて、RPGを題材にセキュリティについて理解を深めてもらう連載。初回は「レベルアップ」編として、セキュリティ人材が装備を整える難しさ、そして人材育成の難しさについて、RPGスタート時の主人公の育成に例えてお話しする。 - セキュリティは「技術力+α」で決まる――組織間の距離を縮める大切さが分かった
Webサイトが攻撃されたとき、いかに被害の広がりを抑え、企業の信用を保つことができるか。大企業では部門間の壁があだとなり、スムーズな対応ができない場合がある。ヤフーの実践演習「Yahoo! JAPAN Hardening 2017」からは、顧客に寄り添う対応がいかに難しいのかが分かったという。インシデント対応のツボとは? - 不正アクセスを教訓に GMOペパボが500台超のサーバに導入したオープンソースのセキュリティ監査基盤「Wazuh」とは
ホスティングサービスなどを提供するGMOペパボは、セキュリティインシデントを教訓に、OSSのセキュリティ監査基盤「Wazuh」を導入。Wazuhを選択した理由やWazuhの導入後に起きた3つの運用課題を解決した方法について語った。