Web・モバイルアプリケーション脆弱性診断とは?

Web・モバイルアプリケーション脆弱性診断とは?診断の仕組みや必要性と注意すべき脆弱性を紹介!

2024.01.05

現代において、Webやモバイルアプリケーションはあらゆるサービスにおいて不可欠なツールとなりました。 普及が広がる一方で、アプリケーションサービス提供側や開発チーム内では、セキュリティ人材の不足やセキュリティチェックの確保が難しいことで対策が追いつかず、脆弱性を抱えたままのアプリケーションを狙った攻撃や不正アクセスによる情報漏えい、システム障害といったセキュリティ事故や被害が多発しています。

セキュリティ事故が発生すると、サービスの利用停止といった売上の機会損失だけでなく、企業の信頼失墜につながるなど多大な経済的損失や被害を受けることになりかねません。そこで近年、非エンジニアでも利用できるWebやモバイルアプリケーション脆弱性診断ツールというものが登場しています。

この記事では、Webアプリケーションやモバイルアプリケーションに焦点を当て、脆弱性診断とは何か、診断の種類や仕組み、過去に発生したセキュリティ事故や留意すべき脆弱性について解説していきます。

1. Web・モバイルアプリケーション脆弱性診断とは?

Web・モバイルアプリケーション脆弱性診断とは、Webアプリケーションとモバイルアプリケーションを対象に脆弱性を診断するツールやサービスのことを言います。Webアプリケーション・モバイルアプリケーションとそれぞれに特化した診断サービスやツールが多いです。

なので、「Webアプリケーション脆弱性診断」と「モバイルアプリケーション脆弱性診断」のそれぞれの特徴や一般的な診断手順・方法について解説します。

1-1. Webアプリケーション脆弱性診断とは?

Webアプリケーション脆弱性診とは、Webアプリケーションをスキャンし、セキュリティ上の問題や脆弱性を検出することです。

専門家といった人による診断とツールが診断する自動診断の2つがあります。 Webアプリケーションはクライアントサイド(ブラウザ)とサーバサイド(サーバ)の双方で構成しているため、脆弱性診断では、これらの両方の側面に焦点を当てて診断を行います。またWebアプリケーションはさまざまなブラウザで動作するため、異なるブラウザでの動作表示で生じるセキュリティ上の課題も考慮して診断されます。'

1-2. モバイルアプリケーション脆弱性診断とは?

モバイルアプリケーション脆弱性診とは、その名前の通り、AndroidやiOSアプリといったモバイルアプリケーション上の問題や脆弱性を検出することです。

主に、アプリケーション開発や運用フェーズで行われ、セキュリティ向上と脆弱性を軽減するために実施されています。こちらも手動診断(人による診断)と自動診断(ツールによる診断)の2パターンあります。

1-3. Web・モバイルアプリケーション脆弱性診断を導入するメリット

Web・モバイルアプリケーション脆弱性診断を導入することで以下のようなメリットがあります。

  • アプリケーションのセキュリティ向上

  アプリケーションを定期的に診断することで、悪意ある攻撃やデータ漏洩を防ぐことができます。

  • コンプライアンスの遵守

  企業や組織がコンプライアンスの要件を満たし、セキュリティス標準を維持するために定期的な脆弱性診断は必要です。

  • データ漏洩の防止

  脆弱性診断を使うことで情報漏えいリスクのある脆弱性を迅速に特定し被害を最小限に抑えることができます。

  • アプリケーションの耐久性向

  セキュリティの脆弱性を修復することで、アプリケーションの堅牢性と耐久性が向上し、予期せぬ攻撃に対しても強固な防御を提供できるようになります。

  • 信頼性の向上

  脆弱性診断を入れてセキュリティ対策をしっかりしていることは、その企業の対外的な信頼性向上に直結します。

上記のように、情報漏えいリスクの軽減といった予防的なセキュリティ対策やコンプライアンス遵守の一環として定期的な脆弱性診断は必要です。

1-4. 診断サービスの利用の流れ

Web・モバイルアプリケーション脆弱性診断にはツールとサービスの2種類あると書きましたが、ここでは「脆弱性診断サービス(人による診断)」の一般的な利用までの流れについて説明します。

  1. 問い合わせ・依頼
  2. ヒアリング・要件定義:お客様のWeb・モバイルアプリケーションの情報をヒアリング
  3. 脆弱性診断の計画内容決定:テスト期間や診断内容・スケジュールを決める
  4. テストの実施:計画が決定したらテストを実施
  5. レポート提出:脆弱性に関するレポートをクライアントに提出
  6. 脆弱性の修正(クライアント側):検知された脆弱性をクライアント側で修正対応をする
  7. 再テスト:修正が適切に実施されているのか、専門家による再テストを行う
  8. 再診断:指摘した脆弱性が修正されているかを確認
  9. 完了

専門家などの人による診断の場合、診断結果が出るのが数ヶ月かかるケースが多いです。また、「再診断」は追加オプションとして提供しているサービスがあります。

1-5. 診断ツールの仕組み

では、次に「脆弱性診断ツール」の場合の診断手順や仕組みについて紹介します。

一般的に脆弱性診断ツールでは、スキャンエンジンを使って対象となるアプリケーションを自動でスキャンしますが、一部のツールではユーザーが手動で操作することもあります。診断方法はWebフォームやURLパラメータなどに対して不正なSQLクエリを注入し、データベースから情報を取得することで、SQLインジェクションの脆弱性を検出しています。

大まかな流れについて説明します。

  • 1. クローリングとマッピング

   対象のアプリケーション内をクローリング(情報を取得する技術)し、アプリケーションの構造やエンドポイント(モバイルデバイス、デスクトップコンピューター、仮想マシン、組み込みデバイス、サーバーなど)を把握することで脆弱性の対象を特定します。

  • 2. セキュリティスキャン

   ツールが実際にアプリケーションを自動でスキャンし、一般的な脆弱性や攻撃ベクトル(攻撃経路)を検出します。

  • 3. ユーザーアクションの模倣

   そのアプリケーションに対して実際の攻撃やユーザーの動きを模倣してアクセスし、フォーム入力やリクエスト送信、セッション管理の仕組みなどをテストすることで不正なセッションの生成や悪用を検出します。

  • 4. ファジングテスト

   アプリケーションに異常なデータや入力を送り、挙動確認や不正入力に対してアプリケーションの応答テストを実施します。

  • 5. 静的解析(ソースコード)

   ソースコード解析をして、バックエンド(サーバー側)のコードに潜在的なセキュリティ問題がないか診断します。

  • 6. 動的解析(ダイナミック)

   アプリケーションの実行中にツールが解析を行い、ランタイム時の脆弱性やセキュリティの問題を特定します。

  • 7. 外部依存関係のチェック

   アプリケーションが外部ライブラリやフレームワークを使用している場合、それらの依存関係に対して脆弱性のチェックを行います。

  • 8. 脆弱性の報告

   検出した脆弱性に関して、改善ポイントをまとめた報告書を作成します。

このように、Web・モバイルアプリケーション脆弱性診断ツールでは、実際の攻撃手法をツールが模倣して行うことや、などツールがさまざまな手法や技術を駆使して潜在的な脆弱性を見つけています。 従来までは、人が確認していたところをツールが変わりに行うことで圧倒的に作業コストが減らすことができます。

2. Web・モバイルアプリケーション脆弱性診断が注目されている理由

ここまでは、Web・モバイルアプリケーション脆弱性診断について概要を説明してきましたが、なぜWebやモバイルアプリケーション脆弱性診断が注目されているのか「攻撃者側の変化」「開発側の変化」「環境・ニーズの変化」の3つの視点で解説します。

1. サイバー犯罪市場の変化


  • 攻撃を仕掛ける脆弱性や攻撃手法がさまざまあり、攻撃も巧妙化している。
  • Webサイトの改ざん攻撃が多発している。
  • 個人情報はマーケットでは以前高い経済価値があり犯罪が横行している。
  • 犯罪マーケット規模が巨大化している
  • 大手企業だけではなくその取引先や委託先を狙った攻撃が増えている。

2. 開発サイクルやシステムの変化


  • Web・モバイルアプリケーションはサイトごとに構成も機能も異なるため、個別の対策が必要。
  • 短期納期の中でセキュリティ対策が後回になりがちである。
  • 脆弱性が放置されたままアプリケーションを公開することに。
  • 過去に開発された機能のレビューが難しい。
  • 短期間で頻繁に更新をするWebサービスが増えセキュリティ対策が追いついていない。

3. 環境・ニーズの変化


  • Web・モバイルアプリケーションは今や必要不可欠なツールになっている。
  • 顧客のニーズが多様化しアプリケーションの更新頻度が高くなっている。
  • IT業界に限らず全体のセキュリティ対策への意識が高くなっている。
  • セキュリティ人材の不足

3. 最近起こったセキュリティ事故一覧

Web・モバイルアプリケーション上の脆弱性を放置しておくと、どんな被害が起こるのか、実際に直近2年間で起こったセキュリティ事故の一例をつかって解説します。

日付企業・組織漏洩件数漏洩原因内容
2022年4月製品メーカー5,527件SQLインジェクション攻撃製品のサポートセンターのサーバーがSQLインジェクションの攻撃を受け、海外の送信元IPアドレスより不正アクセスを受けて社員や顧客のメールアドレス1,068件が流出。WEBアプリケーションに脆弱性があり対策がされていなかったことが原因。
→約7ヶ月間サポートセンターの稼働停止
2023年4月国内の大規模研究施設1,068件SQLインジェクション攻撃サーバーがSQLインジェクションの被害に遭い、研究者のメールアドレス5,527件が流出
2023年5月オンラインショッピング事業者4万869件不正アクセス自社のオンラインショッピングで第三者による不正アクセスを受け、顧客クレジットカード情報報8,655件を含む個人情報4万869件が流出したことが判明。
→一時オンラインショッピングサービス利用を停止
2023年9月オンラインショッピング事業者1,755件不正アクセス自社のオンラインショッピングで第三者による不正アクセスによってペイメントアプリケーションの改ざんが起こり、顧客のクレジットカード情報(1,755件)が漏えい。
→該当のオンラインショッピングサイトを閉鎖

上記のようなセキュリティ事故がおこると、サービスや業務が停止し売上が減少する、対策費用や顧客への見舞金、賠償金などを支払わないといけないといった恐れがあります。また、それだけでなく企業の信頼喪失や株価の下落 など深刻な影響が生じる可能性もあります。

4. 注意すべき脆弱性一覧

3. 最近起こったセキュリティ事故一覧」で紹介したように、いつの間にか脆弱性を悪用した不正アクセスや改ざん、情報漏えいが起きていたことが顧客の申告によって判明するといったケースも多いです。

そこで、脆弱性の対策をする際に覚えておきたいWeb・モバイルアプリケーションで注意すべき有名な脆弱性とその対処法について紹介します。

4-1. Webアプリケーション上の主要な脆弱性

Webアプリケーションで注目すべき脆弱性と対処法について紹介します。

  1. SQLインジェクション
  2. クロスサイトスクリプティング(XSS)
  3. リモートファイルインクルージョン
  4. コマンドインジェクション
  5. ディレクトリトラバーサル(パストラバーサル)
  6. セッション管理の不備
  7. アクセス制御(認証制御)と認可処理の不備

(1) SQLインジェクション

SQLインジェクションとは、攻撃者が不正なSQLクエリ(データベースから情報を取得したり、データを追加・更新・削除するための命令文)を注入することによってデータベースに攻撃を行う手法です。攻撃者が不正なSQLクエリを注入できると、データベースから機密情報を抜き取ったり、データ改ざんをしたりする可能性があります。

対処法の例

  • パラメータ化されたクエリを使用する
  • データベースのアクセス権の最小化する
  • 入力データのバリデーションを入れて不正なSQLクエリを入れないようにする
  • セキュリティツールを使って定期的にチェックする

(2) クロスサイトスクリプティング(XSS)

クロスサイトスクリプティング(XSS)は、攻撃者が不正なスクリプトをユーザーのブラウザ上で実行させることができる脆弱性で、攻撃者はユーザーになりすましてセッション情報を盗み取ったり、悪意のあるアクションを実行させます。

対処法の例

  • 入力データのエスケープ処理をする
  • コンテンツセキュリティポリシーを入れて許可されたドメインからのみスクリプト実行を許可する
  • 入力データを検証して不正な入力をブロックする

(3) リモートファイルインクルージョン

リモートファイルインクルージョンとは、外部から提供されるファイルをアプリケーションに組み込むときに発生する脆弱性です。Webアプリケーションが外部からファイルを読み込む際に、攻撃者はパラメータに不正なファイルのパスを指定することで、悪意のあるコードやファイルをアプリケーションに読み込ませています。

対処法の例

  • 信頼できるファイルのみを許可して不正なアクセスを防ぐ
  • アプリケーションが制御できない外部のファイルのアップロードは許可しない
  • ホワイトリストの使用
  • 定期的なセキュリティ診断をする

(4) コマンドインジェクション

コマンドインジェクションとは、攻撃者がアプリケーション内で実行されるコマンドを不正に利用する脆弱性です。不正なコマンドを入れてしまうとシステムやデータベースに深刻な影響を与えることや機密情報の漏えいやシステムの破壊などの被害を引き起こすこ可能性があります。

対処法の例

  • ユーザー入力の検証し、不正な文字やコマンドを除き、許可されている文字だけ入力できるようにする
  • パラメータ化クエリやプレースホルダの使用する
  • 定期的なセキュリティ診断

(5) ディレクトリトラバーサル

ディレクトリトラバーサルとは、Webアプリケーションやファイルシステムで許可されていないディレクトリやファイルへのアクセスができる脆弱性です。この脆弱性を悪用することで通常は制限されているディレクトリ外のディレクトリやファイルにアクセスできるようになり、情報が漏えいするといったケースがあります。

対処法の例

  • 絶対パスを使用する
  • 不要なWebアプリケーションの実行権限を持たせない
  • 定期的なセキュリティ診断

(6) セッション管理の不備

セッション管理の不備とは、セッション情報を不適切に管理することで起こるセキュリティの脆弱性です。セッション管理が不十分だと、攻撃者がセッション情報を取得、操作、または不正利用する可能性が高まります。

対処法の例

  • ランダムで予測不可能なセッションIDにする
  • セッション内の重要なデータは暗号化する
  • 定期的なセキュリティ診断

(7) アクセス制御と認可処理の不備

アクセス制御と認可処理の不備とは、ユーザーの権限やロール(役割)に対する制御が不十分であることから発生するセキュリティ脆弱性です。

対処法の例

  • セキュアな認証手段(強力なパスワードポリシー・マルチファクタ認証・SSL/TLSの使用)を確立する
  • ユーザーごとに適切な権限を付与する
  • サーバーサイドでの適切な検証とアクセス制御をする

4-2. モバイルアプリケーション上の主要な脆弱性

次は、モバイルアプリケーションにおいて注目すべき脆弱性と対処法について紹介します。

  • クロスサイトスクリプティング(XSS)
  • クロスサイトリクエストフォージェリ(CSRF)
  • ネイティブコードの脆弱性
  • 不正なAPIアクセス
  • 不適切な権限設定
  • マルウェア感染

(1)クロスサイトスクリプティング(XSS)

モバイルアプリケーションでもHTML表示が含まれる場合があり、不正なスクリプトが挿入される可能性があります。これにより、攻撃者がユーザーに代わってアクションを実行することができます。

対処法の例

  • データを適切にエスケープし、スクリプトが実行する
  • セキュリティヘッダを使用する
  • 適切なクッキーの設定やユーザーからの入力データを取得・処理する際に、悪意のあるコードがあるのか確認し安全な形に変換する

(2)クロスサイトリクエストフォージェリ(CSRF)

クロスサイトリクエストフォージェリとは、攻撃者が被害者(企業など)に代わって意図しないリクエストをサーバーに送信する脆弱性です。攻撃者は被害者の認証情報(Cookieやセッションなど)を利用して攻撃を行います。

対処法の例

  • フォームやリクエストにサーバーサイドで生成された一意のCSRFトークンを埋め込む
  • 正当なリクエストが期待通りの経路から来ているか見るためにリファラーを確認する

(3)ネイティブコードの脆弱性

ネイティブコードの脆弱性とは、CやC++などのネイティブ言語で書かれたコードを含むモバイルアプリケーションの場合にあるセキュリティ上の問題です。脆弱性が存在すると、アプリケーション内で実行されるコードを攻撃者によって悪用されてしまう可能性があります。

対処法の例

  • コードレビューや診断ツールをつかって潜在的な脆弱性を見つけて対処する
  • 設計段階からセキュリティを考慮する
  • 最小限の権限で動くよう設計し不要な権限を減らす

(4)不正なAPIアクセス

アプリケーションが外部のAPIと通信する場合、認証情報やセッショントークンの不適切な取り扱いが脆弱性を引き起こす可能性があります。

対処法の例

  • 適切な認証と認可を行う
  • APIキーの適切な保護
  • SSL/TLSを使用して通信を暗号化する
  • APIのバージョン管理をする

(5)不適切な権限設定

不適切な権限設定とは、モバイルアプリケーションの権限を適切に管理しなかったりすることに起因するセキュリティ上の脆弱性のことです。この脆弱性が存在すると、悪意のあるアプリケーションや攻撃者が、不当なアクセスや情報漏えいなどの悪影響をもたらす可能性があります。

対処法の例

  • 権限の適切な管理
  • 開発段階からアプリケーションの権限が適切に動作しているのかテスト行う

(6)マルウェア感染

マルウェア感染とは、モバイルアプリケーションが悪意のあるソフトウェア(マルウェア)に感染することです。偽のアプリケーションをダウンロードしてしまった、開発者の知らないところでアプリケーションが改ざんされ、悪意のあるコード、不正な広告などが組み込まれ、ユーザーがクリックしたり相互作用したりすることで、マルウェアがデバイスに侵入する可能性があります。

対処法の例

  • 開発者はアプリケーション署名を行う
  • アプリケーションに不審な権限がないか確認する
  • アップデートの実施を行う

今回、紹介したような脆弱性を把握しておくだけで万一漏えいしてしまった時の原因特定に役立ちます。一般的なセキュリティ知識として覚えておきましょう。

5. Web・モバイルアプリケーション両方に特化した脆弱性診断ツール「Syhunt」

Web・モバイルアプリケーション脆弱性診断の概要や必要性、注意すべき脆弱性について解説してきました。

脆弱性診断ツールはエンジニアや専門的な知識を持ってないと利用できないイメージがありますが、そんなことはありません。Web・モバイルアプリケーション脆弱性診断ツール「Syhunt」のように、テスターやアプリケーションオーナーなど、非エンジニア部門の方も簡単に診断操作ができるツールがあります。

Syhuntの特徴について少し紹介させていただきます。

Syhuntは、2003年にブラジルで生まれたWeb・モバイルアプリケーション脆弱性診断ツールで多彩なスキャンとダークウェブチェックやフォレンジック機能も兼ね備えた包括的なセキュリティ診断が強みです。

日本ではまだ知名度はありませんが、主に海外ユーザーが多く、米国国防総省やドイツ政府・インド原子力研究機関などさまざまな企業や団体でSyhuntをご利用いただいています。 よくWebアプリケーションとモバイルアプリケーションのそれぞれを対象とした脆弱性診断サービスやツールがありますが、Syhuntは、Webアプリケーション、モバイルアプリケーションとぢらもカバーしています。

Syhuntの診断レポートサンプル

実際にSyhuntでスキャンした際のレポートサンプルがこちらになります。

  • 脆弱性概要のグラフ化

   グラフを用いることで、脆弱性の数や危険性の高い脆弱性の数や割合などが一目でわかるため、シンプルに優先対応すべき脆弱性をすぐに判断できます。

  • 国際規格に準拠しているのか一目でわかる

   Syhuntでは、「CWE/SANS トップ10 2021」「OWASP PHPトップ5」 「PCI DSS v3.2」などさまざまな規格と照らし合わせて確認することができます。

  • 検知した脆弱性の解説と解決策を報告

   検知された脆弱性の概要と該当コード、参考にした文献、CVSS2・CVSS3のスコア表示や脆弱性の解決策の提案など細かいレポートが生成されます。

Syhuntのレポートでは、Webアプリケーションとモバイルアプリケーションの開発や管理に携わるアプリケーション開発者、セキュリティエンジニア、セキュリティアナリスト、QAエンジニア、セキュリティマネージャだけでなく、非エンジニアの方でもわかるようシンプルで見やすいフォーマットを採用しています。

Androidアプリ開発言語「kotlin(コトリン)」のサポートを開始

また、今年の7月、SyhuntはJavaと並んでAndroidアプリ開発第1言語でもある「kotlin(コトリン)」のサポートもスタートしました。

2017年にGoogleががAndroidアプリ開発言語として正式に発表して以降、Netflix、Uber、Trello、Evernote、Square、Atlassianなど数多くの企業がソフトウェア開発プロセスを強化するために「Kotlin」を採用しています。プログラミング言語の人気ランキングをつけている TIOBE Index の2023年12月ランキングでは「kotlin」が15位と徐々に順位を上げているなどこれからますます需要は高くなると予測されます。

こういった背景より、Syhuntでもkotlinのサポートを開始いたしました。

kotlinサポート開始に関する情報は、 「SYHUNT 7.0.5更新情報」をご覧ください。

6. まとめ

今回は、Web・モバイルアプリケーション脆弱性診断について解説してきました。

Web・モバイルアプリケーション上の脆弱性を狙った攻撃や被害は以前変わらず増加しています。中小企業では情報セキュリティへの投資は無駄な費用と考えられがちですが、情報漏えいなどセキュリティ事故が起こると、サービスや業務の停止による売上の減少、対策費用や顧客への見舞金や賠償金などを支払わないといけないなどそのコスト以上に経済的損失を被る場合があります。

セキュリティ対策をしっかり管理できれば、経済的損害の発生リスクを減らすだけでなく、顧客や取引先からの信用向上にもつながるなど、セキュリティ対策への先行投資は決して無駄ではありません。セキュリティ対策費用を仕方なく支払う「コスト」として考えるのではなく、企業にとって将来の事業や利益を守るための「先行投資」と捉えることが重要です。

なお弊社では、脆弱性診断ツール「Syhunt」販売・サポートだけでなく、社内のセキュリティ対策でのお困りごとに対して技術的な支援や導入サポートをしております。

どんな簡単な内容やご相談でも結構です。 気軽に問い合わせフォームまでお問い合わせください。

お問い合わせ

Contact