モバイルアプリの脆弱性診断を社内でするための3つのポイント
サイバー攻撃の脅威が増すなか、アプリケーションのセキュリティ品質向上を目指すことも重要な課題だ。サイボウズでは製品にフォーカスを当てて、セキュリティ品質向上やインシデント対応やその支援を行うチーム「PSIRT(Product Security Incident Response Team)」がある。主に脆弱性に関して取り組み、開発チームとの連携も多い。
これまで同社ではモバイルアプリの脆弱性診断を外部の専門会社を通じて実施していたため、十分に内製化できていないことが課題となっていた。内製化できなかった背景にはモバイルアプリの診断に関する知見が十分になく「そもそも何を確認すればいいか分からない」や、診断を実施する体制がなかったことが挙げられる。
そこでサイボウズ PSIRTでは、モバイルアプリの脆弱性診断の課題解決に向けて「モバイルの基礎知識を増やす」「モバイルアプリに特化した専門チームを立ち上げる」「モバイルアプリの脆弱性診断体制を構築する」の3つに取り組むことにした。
モバイルの基礎知識を増やす
まずは基礎知識を固める。AndroidとiOS、それぞれのOSがどのような仕組みで動いているのか、使用されている技術にはどのようなものがあるのか、バージョンの違いなども含めてセキュリティ機能を中心に基本的な理解を深めた。
小西氏は「基礎的なモバイル技術の理解を深め、脆弱性の仕組みや原因を理解するための土台作りをしていきました」と話す。なお理解を深めるための資料にはAndroid Developer DocumentやApple Developer Documentationなど各OSの開発者向けオフィシャルドキュメント類を参照した。
脆弱性に関しても主要なドキュメントで学習した。代表的なものとしてソフトウェアのセキュリティ技術の情報共有や普及啓発を目的としたコミュニティOWASP(Open Worldwide Application Security Project)が公開している「OWASP MASVS」がある。こちらはモバイルアプリの診断観点がまとめられている。同じくOWASPの「OWASP MASTG」は、モバイルの脆弱性や具体的なテスト方法が記されている。またJSSEC(一般社団法人日本スマートフォンセキュリティ協会)の「Androidアプリのセキュア設計・セキュアコーディングガイド」にはセキュアな実装方法について記されており、小西氏は「インテントの学習に役立ちました」と話す。
各種ドキュメントを読みこなした結果、小西氏はモバイルアプリへの攻撃パターンは主に次の3つ、アプリの機能や通信への攻撃、アプリや端末への攻撃、悪意あるアプリからの攻撃に分けることができると理解した。
アプリの機能や通信に攻撃とは、アプリに実装されている機能、例えば入力値検証不備を狙うXSS(クロスサイトスクリプティング)、あるいはアプリとシンク先の通信を盗聴することで機密情報を取得したり、改ざんしたりするものなどが該当する。
アプリ端末への攻撃とは、攻撃者が端末にダウンロードされたアプリを解析することで、(ハードコードされた)シークレットや機密データを不当に入手すること。あるいは端末に直接アクセスすることで機密情報を取得すること、広義にはショルダーハックのように背後から画面を盗み見ることも含む。
悪意あるアプリからの攻撃とは、同一端末内にある別のアプリや実行ファイルからアプリの設定や実装の不備を用いて情報を抜き取ったり、なりすましを行ったりするものとなる。
また小西氏はモバイルアプリの脆弱性を大まかに分類して示した。1点目は機密情報の漏えいで、ログ、ストレージ、内部ファイル、画面(盗み見)などから機密情報が盗まれるもの。2点目はアプリの設定不備で、本来アクセスが想定されていない画面や機能がアプリのマニフェストファイルなどの設定不備により、操作可能となってしまったことなどが該当する。3点目は入力検証不備で、外部からの入力を正しく処理しないものとなり、XSSやSQLインジェクションが含まれる。4点目は偽装系で、悪意あるアプリが正規のアプリになりすまして、ユーザーに何らかの操作を誘導するなど。他にもサーバー証明書の検証不備、脆弱な暗号など何らかの設定不備がある。
一通り、基礎知識を理解すると、次に小西氏は手を動かしながら学ぶことにした。そこで利用したのがモバイル版のやられアプリ。意図的に脆弱性を含ませておいた学習用アプリを指す。いろいろとあるなかから、基本的な脆弱性が実装されたAndroidアプリ「InsecureBankv2」を選び、脆弱性の仕組みや診断テクニックを体得していった。
最終的には最新の知見も収集するようになった。具体的には、公開されているCVE(共通脆弱性識別子:Common Vulnerabilities and Exposures)やバグバウンティングレポートなどだ。なおCVEはアメリカ国立標準技術研究所が管理しているNVDから過去3年分、JPCERT/CCとIPA(情報処理推進機構)が共同で運営しているJVNから過去6年分を収集した。
小西氏は収集した情報を分析した結果として「最近の報告を見ると、サーバー証明書の検証不備、アクセス制御の不備、機密情報の漏えいが多くありました。またインテントのパラメーターを経由してアプリでXSSなどの攻撃につなげるものや、ディレクトリトラバーサル攻撃を利用してアプリが端末に保存している機密情報を取得するなど、モバイルの特性に合わせた攻撃もありました」と話す。