モバイルアプリの脆弱性に要注意!アプリ開発/運用時に押さえておきたい3つの観点とは?
はじめに
近年、モバイルアプリを活用したサービスは私たちの生活に欠かせないものとなっています。SNS等の日々のコミュニケーションツール、ショッピング、キャッシュレス決済、チケット予約、ゲーム、健康管理、銀行振り込み、家電や車の操作など、消費者として使う場面は様々です。またビジネスにおいても、Web会議ツールやチャットツール、顧客との商談の記録ツール、名刺管理アプリなど、色々な場面で使われています。
モバイルアプリを消費者に提供する企業にとっては、「便利な機能をどんどん追加&リリースし、ユーザをもっと獲得したい」想いがあります。また、自社の従業員向けモバイルアプリを持っている会社では、「機能実装を通じて、生産性を向上させたい」といった考えがあります。
一方で、利便性を追い求めていく際に課題となるのがセキュリティのあり方です。
・セキュリティ専門組織を自社で両方保有している企業
・自社でモバイルアプリを開発が、セキュリティ専門組織保有していない企業
・外部の開発ベンダにすべて委託企業
など、自社のビジネスの状況に応じて、様々な形態をとっているかと思います。
新機能をどんどんリリースしたいと思いつつも、関係者間の調整に手間がかかってしまってリリース予定がずれ込むことが多い、公開アプリ審査に引っかかってやり直しとなってしまったことがある、開発ベンダ任せなのでよくわからない、といった方もいらっしゃるのではないでしょうか。
本ブログでは、モバイルアプリの開発/運用時に押さおきたい、以下の3つの観点について紹介します。
-
モバイルアプリの「開発/リリース/運用」とは?
-
モバイルアプリの「セキュリティ/コンプライアンス」とは?
-
最新の対策方法とは?
1) モバイルアプリの「開発/リリース/運用」とは?
モバイルアプリを公開/利用する際のプロセスを考えてみましょう。 Webアプリケーションを公開する際のプロセス自体は同様で「開発→リリース→運用」といった形になります。
1-1)開発
モバイルアプリに何か新しい機能を組み込もうとする場合を考えてみたいと思います。自社で全て開発する場合もあれば、他社のOSS/SDK(3rd Party OSS/SDK)を組み込むことで機能を実装することも可能です。
<自社開発の場合>
・提供サービスごとに別々の会員管理を行うのではなく、一元化し、オンラインとオフラインを融合したオムニチャネルを実現したい
→会員基盤を統合し、モバイルアプリケーションやWeb店舗からなど、共通して利用できるAPI基盤を構築
<OSSなどを利用する場合>
・ログインの認証を、ID/PasswordだけでなくSNSアカウントを使ってログインしたい
→SNSの外部APIを呼び出すことで、認証を実施
・消費者の購買履歴などをしっかりと分析して、プロモーション活動につなげたい。
→アプリ内に分析用のSDKを組み込み、ユーザの行動履歴をトラッキングしてみる
・ウェアラブル端末などと連携し、健康に関するデータを取得し活用したい
→HealthKitのAPIなどを組み込み利用
自社開発ですべてを完結するのではなく、適切なアプリケーション/APIを組み合わせてサービスを構築する機会が増えている、という点が押さおきたいポイントとなります。
1-2)リリース
開発時に気をつけなくてはいけない点としては、モバイルアプリの場合、稼働するAndroid OSやiOSのプラットフォームのバージョンが常に新しく更新されていく、ということです。新しいOSの機能が出るということは、それに併せて公開アプリ審査の要件も変化することを意味します。以下のようなガイドラインに沿って、対応していく必要があります。
・Google Play Storeリリースチェックリスト:
https://developer.android.com/distribute/best-practices/launch/launch-checklist?hl=ja
・App Store Reviewガイドライン:
https://developer.apple.com/jp/app-store/review/guidelines/
アプリのリリース時に公開審査に引っ掛かると、どのような影響があるでしょうか。ユーザの利便性の向上をもたらし、「アクティブユーザ数の増加や売り上げを増やす」ことを目的にした機能がすぐにリリースできないことを意味します。リリースが遅れた分だけ、売り上げ機会の損失につながる可能性もあります。
1-3)運用
アプリのリリース後も、利用者のニーズに合わせたメンテナンスは必要です 最新のOSへのサポートやユーザから申告のあった不具合の改修など、継続的に「開発/リリース」を行う必要があります。また、個人情報を扱うような場合には、セキュリティ/コンプライアンスの観点でも特に注意を行う必要があります。仮に重大な問題があった場合、ユーザ離れやサービスの停止などにつながる可能性があります。
自社基盤に通信をするような場合は、自社の公開APIに対するセキュリティがしっかり確保されているか、といった観点が必要となります。また、3rd Party OSS/SDKを利用する際には、どのバージョンが使われているのか、それは脆弱性を持っていないか、などの観点が必要となります。
以上、簡単にモバイルアプリの「開発/リリース/運用」について述べましたが、ポイントをまとめると以下の通りとなります。
・開発)モバイルアプリの利活用に伴い、API経由での連携先は多様化(自社/3rd Party両方)
・リリース)公開アプリ審査に引っかかると、ビジネスへの影響も懸念
・運用)継続的なセキュリティ、コンプライアンスチェックが必要
次のセクションでは、より踏み込んで「セキュリティ/コンプライアンス」に焦点を当てていきたいと思います。
2)モバイルアプリにおける 「セキュリティ/コンプライアンス」とは?
2-1)セキュリティ
モバイルアプリの脆弱性を突いた攻撃にはどのようなものがあり、その結果どのような影響をもたらす可能性があるのでしょうか。
安全なソフトウェアの設計・開発・習得・運用と、維持に関する活動を支援する非営利の団体である、OWASP(Open Web Application Security Project)がまとめた「OWASP Mobile Top 10 2016」は2017年2月にリリースされ。以下の項目がモバイルアプリケーションを開発する際に気を付けておくべきこととしてリストアップされています。
M1: Improper Platform Usage(プラットフォームの不適切な利用)
M2: Insecure Data Storage(安全でないデータストレージ)
M3: Insecure Communication(安全でない通信)
M4: Insecure Authentication(安全でない認証)
M5: Insufficient Cryptography(不十分な暗号化)
M6: Insecure Authorization(安全でない認可制御)
M7: Client Code Quality(クライアントコードの品質)
M8: Code Tampering(コード改ざん)
M9: Reverse Engineering(リバースエンジニアリング)
M10: Extraneous Functionality(余計な機能)
※参考)https://owasp.org/www-project-mobile-top-10/
具体的な例としては、以下の点となります。
仮に脆弱性を悪用された場合ですが、モバイルアプリが扱っている個人情報が外部に意図せず公開されてしまったり、ユーザが意図していない宛先に対して通信が発生したりします。常に最新のセキュリティチェックを行い、脆弱性をなくしていく姿勢が重要となります。
また、APIを利用する際には、APIのサーバやクラウド環境上のセキュリティも考慮する必要があります。API関連のニュースをまとめると、以下のように様々な事例がございます。
<従来の対策>
モバイルアプリの新規リリース時やメジャーバージョンのアップデート時に、手動で脆弱性診断を行います。自社で実施する場合もあれば、外部ベンダに委託する場合もあります。
・静的解析(※コードの中に脆弱性につながるような記述がないかを確認)
・動的解析(※モバイルアプリで実際に通信を発生させ、通信先へのアクセス内容を確認)
・自社で利用しているOSS/SDKは何かを管理するために、Software BOMを使用
<課題>
セキュリティを担保するため、何か変更があるたびに「毎回人手での診断を実施、または外部に都度委託する」ことは時間的にもコスト的にもなかなか難しいという課題があります。また、リリース当時に診断したアプリも、公開しているうちに古いものになってしまい、気が付かぬうちに脆弱性を持った状態になっている、といった可能性も考えられます。
またAPIにおいてはモバイルアプリ側だけでなくインフラ側の設定も関係します。アプリケーションを包括的にチェックしていくような姿勢が重要となります。
2-2)コンプライアンス
世の中には、GDPR(EU一般データ保護規則)やHIPPA(Health Insurance Portability and Accountability Act、医療情報関連の法律)、PCI DSS(クレジットカード業界のセキュリティ基準)など様々なコンプライアンスが存在しています。地域や業種に合わせ、適切な情報管理のために定められています。
では、具体的なモバイルアプリのコンプライアンスとは、何になるでしょうか?最近の例でお伝えすると、「App StoreでのAppのプライバシーに関する詳細情報の表示」となります
https://developer.apple.com/jp/app-store/app-privacy-details/
スーパーなどで食品を買うと、食品表示ラベルにどういう成分が含まれているか、といった点がわかりやすく明記されていると思います。同じようにモバイルアプリがどんなデータを集めているのか、といった点を利用者にわかりやすく通知することを目的に、2020年12月8日から導入されています。新しくモバイルアプリをリリースする場合や、既存のモバイルアプリに何か修正を加え公開する際に必須となっています。
https://developer.apple.com/jp/news/?id=em8fm29e
<従来の対策>
モバイルアプリを実際に動かしてどのようなデータを送信しているのか、といった観点で動的解析を行うようなことが一般的となります。
<課題>
自社基盤に対して発生する通信については、設計背景などがわかるためどのような情報を送付しているのか、明確です。一方で、3rd PartyのOSS/SDKの場合、どういった情報を集めているのかといった点をあまり意識せず、利用している恐れがあります。結果、利用者からの同意のない情報を取得し、意図せず外部の第3者に提供してしまっている、というリスクも考えられます。
以上、まとめると「日々更新されていくモバイルアプリに対して、どうやってセキュリティを担保していくのか」、「更新頻度が多くないモバイルアプリにおいても、いかに定期的にセキュリティをチェックしていくか」といった点が重要となります。
3) 最新の対策方法とは?
アプリケーションとインフラストラクチャの全体のセキュリティを、モバイルアプリの開発開始時点からリリース、運用に至るまですべての観点でチェックすることがポイントとなります。従来のモバイルアプリ開発プロセスや診断プロセスを見直し、ツールをうまく活用しつつ、リアルタイムで最新の脅威情報に対応可能な体制を構築し、よりセキュアな開発/運用プロセスを構築します。
例えば、モバイルアプリにフォーカスした診断イメージをお伝えすると以下の通りとなります。アプリ開発者やセキュリティ責任者が自社内にいる場合でも、複数の会社にまたがっているような場合でも対応可能であるか、といった点も重要なポイントとなります。
より具体的なお話について聞いてみたい、といった方がいらっしゃれば、本ブログ末尾のリンクからお気軽にお問い合わせいただければと存じます。
最後に
本ブログでは、「モバイルアプリの脆弱性に要注意!アプリ開発/運用時に押さえておきたい3つの観点とは?」についてお伝えいたしました。自社でモバイルアプリを作成されている企業や、他社に委託されている企業においても、少しでもお役に立てば幸いです。
弊社では、本ブログでお伝えしたDevSecOpsを実現するため、DataTheoremというソリューションを取り扱っています。
2週間程度の無償トライアルが可能です。ご興味のあるお客様は、ぜひ以下のリンクからお問合せください。