メインメージ

アプリケーションとは?

様々なデバイスのアプリケーション

私たちは、パソコン、スマートフォン、タブレットなど様々なデバイスを利用し、仕事や生活でアプリケーションを利用しています

アプリケーションとは、コンピュータにインストールされている利用者(ユーザ)の業務や目的に応じて作成されたプログラムのことです。私たちはインターネットを通じて様々なサービスを利用していますが、実態は、Webアプリケーションや、モバイルアプリケーションです。ビジネスで利用するWebアプリケーションは、Webブラウザ上で動作するものが一般的で、メールやカレンダー、ドキュメント作成ツール、勤怠管理、顧客管理、経費精算、人事考課、採用管理、各種申請支援ツール、など数多く存在します。モバイルアプリも同様ことを、スマートフォンにアプリをインストールし利用できるものも存在します。モバイルアプリの個人向けサービスでは、スマホ決済、銀行アプリ、ポイント管理、投信などお金の管理や、メッセンジャーアプリなどのコミュニケーションを目的としたアプリ、遠隔医療など問診をしたり、日々の健康管理のためのヘルスケアなど健康に関するアプリ、各種スマートフォンゲームなど無数に存在します。

アプリケーションの意味

アプリケーション(Application)の意味は、「応用」「適用」と「申請」「応募」に大別できます。コンピュータにインストールさているプログラムは、ユーザが利用するために「応用」「適用」されたもの言えます。コンピュータにインストールされているアプリケーションには、クライアントサイド(パソコンやスマートフォン)にインストールされているアプリケーションと、サーバサイド(サーバを中心としたシステム)にインストールされているアプリケーションが存在します。また、ユーザがWebブラウザなどを通じてインターネット経由で利用するアプリケーションには、ソフトウェアを提供するクラウドサービス(SaaS(読み方:サース))と呼ばれるWebアプリケーションが存在します。

Webアプリケーションとは?

Webアプリケーションとはインターネットを経由でWebブラウザを通じて利用するアプリケーションソフトウェアです。例えば、私たちがよく利用するGoogleでは「YouTube」や「Google検索」「Gmail」「Googleマップ」など、業務で利用する営業支援ツールの「Salseforce」やメールやカレンダー機能の「Microsoft Office Outlook」など、Webブラウザで利用できるものも存在します。ホームページとの違いは閲覧するに留まらずに、Webを通じて特有の機能を利用するものをWebアプリケーションと呼び、サーバにアクセスをして利用することからサーバサイドで提供されているサービスとしてSaaSと呼ばれます。パソコンやスマートフォンをインターネットに接続をすれば誰でもクラウドサービスの利用する事ができ、使いたいときに使いたい機能を利用できることがSaaSの特徴です。

ビジネス向けWebアプリケーションを利用したSaaS提供例

ネイティブアプリとは?
(モバイルアプリケーション/スマートフォンアプリケーション)

ネイティブアプリとはスマートフォンOSに対してアプリケーションストア経由でインストールをしユーザが利用するアプリケーションのことです。一般的には、モバイルアプリケーション(モバイルアプリ)やスマートフォンアプリケーション(スマホアプリ)などと呼ばれます。ネイティブアプリはスマートフォンにインストールするアプリで多種多様なものが存在し、ソフトウェア配布型であるため「GooglePlay」や「AppStore」からダウンロードするような仕組みからクラウドサービスであるため、SaaSと呼ばれます。ネイティブアプリはOSにインストールをするので、インターネット環境に依存しなく、動作や読み込みスピードが早いことが特徴です。アプリ内課金が容易にできることも大きな特徴で、ユーザはアプリケーションストアにクレジットカード情報を登録しておけば、簡単に支払いを実行できる点も大きなメリットです。しかし一方で、ユーザ獲得が難しいことやリリースアップデートの際にストア審査が必要である点がデメリットです。Webサイトで集客をしネイティブアプリでアプリ内課金をスムーズに行えることから有料コンテンツを配信するなど、サービスを提供する事業者もユーザ獲得に工夫をして運営しているサービスも存在します。

スマートフォン向けサービスの集客から会員獲得までの一例

アプリケーションとソフトウェアの違いや
サーバーとの関連性

アプリケーションはクライアントサイドにインストールして稼働するものと、サーバーサイド(サーバサイド)で稼働するものに大別できます。クライアントサイドで動作するアプリケーションにはパソコンで動作し、業務で利用するワードやエクセル、チャットで連絡するメッセージアプリ、メーラやカレンダー、Webサイトを閲覧するときのWebブラウザなどが存在します。サーバサイドは「Webアプリケーション」やスマートフォンに配布される「ネイティブアプリ」が代表例で、インターネット経由でアクセスをしブラウザを通じて利用したり、ダウンロードすることが特徴です。様々なアプリケーションが存在し、ユーザに多種多様な目的に応じて利用されることから、存在する形態や機能により分別されます。またクラウドサービスが多くの人に利用されている背景から、近年はサーバサイドで稼働するアプリケーションが主流になっています。クラウドサービスで提供されている、サーバサイドアプリケーションの仕組みについて具体的に見ていきましょう。

アプリケーションの種類

アプリケーションの種類は提供されるサービスによって以下のように分類されます。その中でクラウドサービス型のWebアプリケーションはSaaSの代表例です。

種類 サービス 具体例
ソフトウェア配布型 ・パソコンにインストールする「ソフトウェア」
・スマートフォンにインストールする「ネイティブアプリ」
・パソコン:オフィス系ソフト、
  デザイン系ソフト、Webブラウザなど
・スマートフォン:各種サービスアプリ、スマホゲームなど
クラウドサービス型 ・インターネット経由で利用する「Webアプリケーション」
・インターネット経由で利用する「Webサイト」
・業務や目的に応じて利用するSaaSなど
・企業やサービスのWebサイトなど

アプリケーションとプログラム機能

アプリケーションはプログラムの集合体で作られています。プログラムはWebアプリケーションを例に説明すると図のような位置で機能しています。

Webアプリケーションとプログラムの位置関係

アプリケーションとソフトウェアの違い

アプリケーションとソフトウェアの違いは、アプリケーションがユーザが目的に応じて利用する機能に対して、ソフトウェアはサーバサイドやクライアントサイドで稼働するカーネルやOS、アプリケーション全てを包括する意味を持ちます。従ってアプリケーションは、OS上で稼働するソフトウェアのことを指します。

アプリケーションとソフトウェアの違いとサーバとシステムの関係図

アプリケーションとソフトウェアの違いと、アプリケーションがインストールされているサーバとシステムの仕組み

アプリケーションサーバーとは?

アプリケーションサーバー(Application Server)とは、アプリケーションを実行するためのサーバーです。主に、Webアプリケーションサーバー、Webサーバーが存在し、3層構造、2層構造などと呼ばれます。一般的に、3層構造は「Webサーバ(フロントエンド)」「Webアプリケーションサーバ(バックエンド)」「データベース」の構造になっており、2層構造は「Webサーバ(フロントエンド兼バックエンド)」「データベース」の構造になっています。

アプリケーションとプラットフォームの違い

アプリケーションが固有の機能を提供するソフトウェアに対し、プラットフォームはOSやミドルウェアの土台となる部分を示します。サーバサイドのプラットフォームはWindowsやLinux、各種ゲームプラットフォームなどがわかり易い例になります。また、異なるプラットフォームで提供されているサービスは「クロスプラットフォーム」と呼ばれますが、1つのプログラムで対応しているのではなく、個々のプラットフォームに対応したサービスがクロスプラットフォームと呼ばれることです。サーバサイドのクロスプラットフォームで利用される共通のものはネットワークです。私たちはインターネットを中心にネットワークを通じて、様々なプラットフォーム上のサービスを利用しています。

コンピュータネットワークのアプリケーション層

コンピュータネットワークにはネットワークアーキテクチャが存在します。ネットワークアーキテクチャには層に別れており、代表的なものは「TCP/IP」や「OSI参照モデル」です。アプリケーション層とは、TCP/IPやOSI参照モデルの該当する層を意味します。

アプリケーションエンジニアが意識する
開発・保守・管理とセキュリティ対策の考え方

最近のアプリケーション開発は、アジャイルソフトウェア開発を用いる企業が増えており、次の様な特徴があります。「プロセスやツールよりも個人と対話」「包括的なドキュメントよりも動くソフトウェア」「契約交渉よりも顧客との協調」「計画に従うことよりも変化への対応」の4項目です。目的は「顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供すること」と、ASDE(Agile Software Development Ecosystems)の定義において提言しています。ASDEの定義は、2001年2月11日〜13日に、アメリカで17人のAgile Software Developmentの推進者により宣言され世界に広まりました。現在のソフトウェア開発ライフサイクルでは、開発プロセスの中に、セキュリティタスクを組み込むことを提唱しており、これを「DevSecOps」と言います。理由は、開発・保守・管理とセキュリティを別々に考えると、機敏性(Agility)が損なわれ、本来のゴールであるビジネスの成長や成功への足かせとなってしまうからです。従って、アジャイル開発プロセスにセキュリティタスクを組み込むことにより、価値のあるソフトウェアを早く継続的に提供できます。「DevSecOps」は顧客の満足度が高く、安全に利用できるソフトウェアを継続的に提供できる有効的な方法です。

DevSecOpsの開発サイクル

DevSecOpsはアジャイル開発の中で短期的にサイクルを回します。
運用と開発が一体となることで、安全に利用できるアプリケーションを通じて、継続的に顧客満足度を向上させる有効的な方法です

アプリケーションエンジニアとは?

アプリケーションエンジニアとは、アプリケーション(ネイティブアプリ、Webアプリケーション、モバイルアプリケーションなど)の開発・保守・管理を主業務とするエンジニアです。アプリケーションエンジニアの業務は、保守・管理も業務範囲にあることから、アプリケーションのセキュリティ対策も担当になります。アプリケーションにおける脆弱性は、多くがアプリケーションのバグ(非機能)に起因しております。アプリケーションのセキュリティ対策がアプリケーションエンジニアの課題である理由は、包括的にアプリケーションに関する業務を担当している為、業務範囲が広く対応が後回しになりがちになってしまう為です。

アプリケーション開発

アプリケーションの開発は、ウォータフォール(Vモデル)アジャイル開発が存在します。ウォータフォールとは一つ一つの開発工程を完了させて進めていく方法です。開発サイドの工程は「要求分析」「要件定義」「基本設計」「詳細設計」に分けられます。テストサイドは「単体テスト」「結合テスト」「システムテスト」「受入テスト」に分けられます。V字モデルと呼ばれるのは、図のように開発サイドとテストサイドの工程が連動しているためです。対するアジャイル開発は、「反復」と呼ばれる短いサイクルを、開発工程の「計画」「設計」「実装」「テスト」で繰り返しながら、ローンチ後にリリースを繰り返して進めていく方法です。従って、アジャイル開発の方が開発工程を一通りクリアする期間が短いことが特徴です。

アプリケーションを開発手法別で分類

種類 意味 具体例
ウォーターフォール 上流工程から下流工程を順番に一連の流れに沿って進行してローンチし運用すること。
別名、水が上から下に流れるようなフローチャートを描くことから「Vモデル」と呼ばれる。
大規模アプリケーション開発で
利用される手法
アジャイル 機能別に短期間で「企画」「設計」「実装」「テスト」などのサイクルを回すこと。
運用フェーズに入っても新機能追加などのバージョンアップの際も同様のサイクルを回すことで
素早くローンチをし継続的にアップデートを続けサービス拡充を意識しながら運用できる。
最初はスモールスタートで
徐々にサービスの規模を
大きくする際に利用される手法
ウォーターフォール開発の図解

ウォータフォール開発は予め大規模なプロジェクトが存在し、
規模の大きいシステムとアプリケーション開発に取り組む際に、開発サイドとテストサイドに別れて、それぞれのフェーズで連携をして進めていく方法です。

アジャイル開発の図解

アジャイル開発は必要最小限の機能を開発するために短いサイクルで回し、ローンチからリリースを繰り返していく方法です。
スモールスタートで開始した後にサービスの規模をアップデート共に大きくなっていくような流れで実施していきます。

アジャイル開発の手法

手法 内容 解決例
スクラム アジャイル開発の一種で、チームコミュニケーションを重視した方法。
運用のサポートに責任を持つ「スクラムマスター」とアプリケーション(プロダクト)に
責任を持つ「プロダクトオーナー」が連携をして開発を進めていく。
携わるすべての人に
プロジェクトの透明性を
高めることを重視し
計画的かつ確実に遂行する
DevOps デベロップメント(開発:Development)と
オペレーションズ(運用:Operations)の文字を取った略語。
開発チームと運用チームが連携し開発要件に
素早く対応できるような組織でアプリケーション開発に取り組む手法。
DevOpsにセキュリティ対策が加わった手法を「DevSecOps」と呼ぶ。
運用と開発の一体感を重視することで
ユーザからのフィードバックを
素早く対応でき、サービスを通じて
顧客満足度の向上を目指すことが期待できる

アプリケーションの保守・管理

アプリケーションは、開発しリリースすればは終わりではなく、バグの修正、機能追加など継続的に開発して、アプリケーションの価値向上が求められます。アプリケーションの開発はアジャイルソフトウェア開発手法(アジャイル開発)を用いる企業やエンジニアが急速に増えおり、昨今のビジネス環境に最も適した開発手法と言えます。

アプリケーションセキュリティとは?

アプリケーションセキュリティとは、安全なアプリケーションの提供し続けるために求められる、セキュリティ対策の取組みのことです。その範囲は「要件分析」「デザイン」「導入」「検証」「保守」とアプリケーション開発のライフサイクル全体が含まれます。
DX時代において、アプリケーションそのものがビジネス価値を示すケースが増えており利用者にとって価値のあるアプリケーションは、攻撃側(サイバー攻撃や標的型攻撃などを実行する犯人)にとっても価値のあるアプリケーションだと私たちは考えています。アプリケーション開発者は、機能強化と共にセキュリティ対しても留意する必要性があります。

アジャイル開発の保守とアップデートの流れ

アジャイル開発では短いサイクルを回してアップデートリリースを繰り返します。短いサイクルの中の検証フェーズでセキュリティ対策を実施し、
開発サイクルの一部とすることで継続的に安全なアプリケーションを提供し続けることができます。

アプリケーションセキュリティとプライバシーの関連性

プライバシーとは、個人の私生活に関する情報を公開されない自由および私事に属する領域への他人の侵入を受けない自由という意味があります。アプリケーションセキュリティが侵害されると、利用者のプライバシーにも危険が及ぶリスクが高まります。
アプリケーションの利用者(ユーザ)の価値を守ることは、アプリケーションセキュリティの一側面を言い表していると言えます。Apple社の利用者保護(プライバシー※Appleサイトに移動します)への取組みは、その一例かと考えます。
アプリケーション開発者は、アプリケーションの機能拡張や改善を行う際に、アプリケーションのセキュリティも考慮する必要があります。理由は、アプリケーション開発者は、機能拡張とセキュリティの両方に対し責任を負い、対応することが求められているからです。今回は、アプリケーション開発者の方向けに、アプリケーションセキュリティ(AppSec)の"いろは"をまずはお伝えしたいと思います。

エンジニアが提供するアプリケーションの流れ

アプリケーションセキュリティは機能拡充と伴にエンジニアに委ねられています

アプリケーションセキュリティの三原則(予防/検知/防御)

アプリケーションセキュリティには三原則に基づいて各フェーズ毎に実施すること、即ちソフトウェア開発サイクルに組み込む方法が有効的な方法です。現在、主流になりつつあるアジャイル開発において、DevSecOpsが提唱する方法は、ソフトウェア開発サイクルの中に必要なタスクを組み込むことです。理由は、セキュリティを別タスクと考えて実行すると、考え方が硬直的になり解決策の自由度に制限が生じ、結果的に開発およびビジネスの機敏性(Agility)が損なわれてしまうからです。しかしDevSecOpsの考え方は現在の主流の意見であり、同時に実行するのは理にかなった方法です。
従ってアプリケーションセキュリティは、アプリケーション開発プロセスの中でアプリケーションセキュリティ対策の三原則(予防/検知/防御を実践)に沿って実施することが重要です。予防/検知/防御の三原則は、アプリケーションセキュリティに限ったことではなく、広く一般的なセキュリティや防災、安全保障でも共有の原則です。

予防とは?

アプリケーションセキュリティに置いて予防とは、想定される脅威に対し、予め対策を講じることです。予防は、この対策だけ実施すれば良いというものではなく、設計/構築/試験の各フェーズで実施します。

実施例 内容
設計(Design) どんな脅威が想定されるかをモデル化する取組み(Threat Modeling)
構築(Build) セキュアコーディング、コードレビュー(SAST)
コンポーネントレベルの検査(SCA)
試験(test) 脆弱性診断やペネトレーションテスト

検知/防御とは?

アプリケーションセキュリティにおいて、検知/防御とは、想定される脅威に対し、異常を検知し保護することです。しかし、この対策だけ実施すれば良いというものではなく、展開(Deployment)/実装(Implementation)/監視、記録(Monitoring, Logging)の各フェーズで実施されます。

実施例 内容
展開(Deployment) 展開(Deployment)、パッチ管理(Patch Management)の確立
実装(Implementation) アプリケーション/インフラストラクチャの強化(Application/Infrastructure Hardening)
監視(Monitoring)/記録(Logging) 脅威や脆弱性、異常の検知

アプリケーションセキュリティの「い・ろ・は」

現在、ソフトウェア開発の主流になりつつあるアジャイル(Agile)やリーン(Lean)は、TPS(TOYOTA Production System)より多くの影響を受けています。アプリケーションセキュリティは、いかにしてソフトウェア開発プロセスの中にセキュリティ対策に必要なプロセスを組み込むかが重要です。そのためには、シフトレフトが重要で、以下の取組みが重要になると考えます。以下の"い・ろ・は"において、バリュー・ストリーム・マップ(Value Stream Map)を確立出来れば、より生産性向上が期待できます。

い・ろ・は 内容
アプリケーションの脅威を理解する。(Threat Modeling)
セキュアなアプリケーションを作る。(セキュアコーディング/コードレビュー/SAST/SCA)
アプリケーションのセキュリティを検査する。(脆弱性診断/ペネトレーションテスト)

近年のWebアプリケーション脅威の傾向

サイバー攻撃を仕掛けるハッカーのイメージ

攻撃者は企業が提供しているサービスのWebサイトやWebアプリケーションの脆弱性を悪用します。企業が保有している資産を売却し金銭を獲得することや、諜報といった秘密情報を探るスパイ行為などの為に実行します。

近年のサイバー攻撃は複雑化・巧妙化によりあらゆる企業が被害に合う可能性のある脅威です。特にビジネスシーンでもクラウドサービスの普及によりWebサイト、Webアプリケーションを保有しサービスを提供している企業は格段に増加しました。社会的にITの普及とクラウドの普及により、ネットワーク外部性の増加(消費者の増加によるサービスから得られる便益が増加する現象)により、提供しているサービス規模も大きくなってきていることも特徴です。WebサイトやWebアプリケーションは、サイバー攻撃の玄関口と言われれおり、ハッキング行為における主要な攻撃パスとなります。他の攻撃パスと比較して、少ない攻撃ステップで侵害されるという特徴が、Verizon調査レポートで報告されています。(【参考】The Verizon 2021 Data Breach Investigation Report)

Webアプリケーションへの攻撃の特徴

  • 脅威アクター:外部(100%)
  • モチベーション:金銭(89%)、その他(11%)
  • 攻撃方法:ハッキング(100%)
  • ハッキング手法:入手した認証情報の利用(80%)、ブルートフォースアタック(Brute force attack)(10%)、脆弱性の攻撃(10%)

Webアプリケーションが関連するデータ漏えい/侵害の割合は50%

他のエンドポイントやランサムウェアによる攻撃より、Webアプリケーションは明らかに攻撃がしやすいことは特徴です。Webアプリケーションが半分を占めていることは正直驚きですが、攻撃のしやすさから考えてもデータ漏えい/侵害の割合が多いことから頷ける内容かと思います。

企業規模による差が無くなる

中小企業と大企業とで、差が見られなくなっています。中小企業も大企業と同じくらいの脅威にさらされており、主要な特徴と比較すると差がほとんど見られなくなっているようです。

モダンなWebアプリケーションテクノロジーに対する新たな脅威の登場

技術の進化は早く、新しいテクノロジーが色々と登場しています。Webアプリケーションテクノロジーにでも、フロントエンドフレームワーク(Front-end Frameworks)、バックエンドフレームワーク(Backend-Frameworks)、REST/GraphQL APIなど大きな変化が見られますが、これらの新しいテクノロジーには新しい脅威が潜んでいるのも事実です。新しいテクノロジーを利用する際には、セキュリティにも気を付ける必要があります。

アプリケーションの脅威を理解する(Threat Modeling)

脅威、資産、脆弱性の相関関係とリスクの顕在化

セキュリティリスクの顕在化は、写真のように「脅威(Threat)」「資産(Asset)」「脆弱性(Vulnerability)」の3要素が合わさった箇所に現れます。セキュリティ対策を実施する場合に、まずは「脅威」を理解する必要があります。アプリケーションセキュリティにも同様のことが当てはまり、アプリケーションの脅威を理解するのに役立つ方法が、脅威モデリング(Threat Modeling)になります。Application Threat Modeling(アプリケーション脅威モデリング)とは、アプリケーションのセキュリティに影響を与えるすべての情報を構造化するための手法です。どんな脅威が、どのようにして発生するのかを理解でき、アプリケーションの設計に潜む弱点を明らかにします。実践している開発者は、まだまだ限られるかと思いますが、汎用的なテクニックが公開されており、開発者が脅威を理解するのに役に立つツールです。

最も有名な方法は「STRIDE」

Microsoft社2名のエンジニアが開発した脅威をモデル化する方法です。元々は、コンピュータセキュリティの脅威を認識するために開発されたものですが汎用性が高くWeb/モバイルなどのアプリケーションにも適用可能です。STRIDEとは「Spoofing」「Tampering」「Repudiation」「Information disclosure」「Denial of service」「Elevation of privilege」の6つ脅威の頭文字からとった造語で「ストライド」と読みます。

英語 日本語 脅威例
Spoofing なりすまし 攻撃者がユーザのID/パスワードを悪用
Tampering 改ざん WebサイトやECサイトを改ざん
※XSS(クロスサイトスクリプティング)
Repudiation 否認 ログ消去に伴う証拠隠滅
Information disclosure 情報漏えい 個人情報(クレジットカードや連絡先)などの流出
Denial of service サービス拒否 システム(サーバやネットワーク機器)に対して過剰な負荷をかける
Elevation of privilege 特権の昇格 攻撃者に管理者権限が取得されてしまう

また、Microsoft社からは専門のドキュメントからツールまで提供されています。
【参考】Microsoft Threat Modeling Tool の脅威
【参考】Microsoft Threat Modeling Tool

その他のThreat Modeling

PASTA

PASTA(The Process for Attack Simulation and Threat Analysis)(読み方:パスタ)はリスク中心の脅威モデリングフレームワーク(Threat Modeling Framwork)です。PASTAは、7つのステージから構成され、ビジネスに対する潜在的な脅威を特定、評価、および軽減するプロセスです。

LINDDUN

LINDDUN(linkability, identifiability, nonrepudiation, detectability,disclosure of information, unawareness, noncompliance)(読み方:リンダン)は、プライバシーとデータセキュリティにフォーカスした手法です。
【参考】LINDDUN privacy engineering

CVSS

CVSS(The Common Vulnerability Scoring System)(読み方:シー・ヴィ・エス・エス)とは、「共通脆弱性評価システム」と呼ばれるものです。CVSSは、NIST社が開発した「基本評価基準」「現状評価基準」「環境評価基準」の3基準で、IT製品やアプリケーションソフトウェアのセキュリティ脆弱性の深刻さを評価する共通の手法です。
【参考】共通脆弱性評価システムCVSS v3概説:独立行政法人情報処理推進機構(IPA)

Attack Trees

Attack Trees(攻撃ツリー)とは、アセットまたはターゲットがどのように攻撃されるかを示すツリー形式の概念図です。IT分野では、システムへの脅威と攻撃に関する説明のために利用されます。

アプリケーションのセキュリティを検査する
(脆弱性診断/ペネトレーションテスト)

アプリケーションのセキュリティを検査すると言っても色々ある選択肢の中から「何が適正な検査のか」「どのように判断すれば良いのか分からない」という話を良く伺います。以下に、アプリケーションのセキュリティ検査の考え方を紹介し、お客様の懸念に少しでもお役に立てる情報を記載したいと思います。

アプリケーションセキュリティの検査とは

アプリケーションセキュリティ検査とは、アプリケーションが悪用された場合に、ビジネスに及ぼす負の影響(テクニカル・リスク)を検査(診断)することを目的としたものです。しかし、現在のところどんな検査を選択するのが適切なのかを示す、一般的なガイドラインは存在しませんが、ソフトウェアやWebアプリケーションセキュリティ分野のガイドラインとしてOWASP(Web/Mobileアプリケーションの開発者とセキュリティ担当者向けの専門情報)が存在します。また、これまでの経験から唯一明確なガイドランと言えるのがPCI DSSだと考えています。セキュリティの検査とは、ビジネスに及ぼす負の影響(テクニカル・リスク)を検査することを目的としたものであり、改修してはじめてセキュリティ対策(予防)となります。セキュリティ対策は「予防/検知/保護」の三原則を実践することが重要です。

セキュリティ検査は「脆弱性診断」「ペネトレーションテスト」の2種類が存在する

セキュリティ検査には「脆弱性診断」と「ペネトレーションテスト」の2種類があり脆弱性診断はツールと手動に大別されます。それから検査する箇所もテクニカル・リスクが生じる場所から大別され、レイヤーとしてネットワーク層/プラットフォーム層/アプリケーション層があり、加えサーバサイド/クライアントサイドの両サイドにリスク・ポイントが存在します。

適正な検査とは

適正な検査とは費用対効果の経済性が成り立つものと当社は定義しています。例えば、金融系アプリケーションは、悪用された場合の負の影響が多いため、十分に費用をかけて診断が行われています。従って「想定される負の影響に見合った診断=適正な診断」と考えています。そこで、当社ではNISTのリスクモデルを参考に、当社独自の評価モデルを利用して適正な検査方法(診断の標準化)を提案する取組みを行っています。

リスク評価 対象サイト例

レベル 定義
5 決済やPHIデータを直接処理するサイト 決済サービス、ECサイト、医療系データを処理するサイト
4 レベル5に該当しないBtoBやBtoC向けサービスサイト、直接収益あり ポータルサイト、動画サイトなど有料コンテンツを配信するサイト
3 情報提供サイトで顧客管理機能あり、直接収益なし 無料で利用できるが会員制でログインが必要で
個人情報を取り扱っているサイトなど
1-2 情報提供サイトで顧客管理機能なし、直接収益なし コーポレートサイトや小規模のキャンペーンページなど
ログイン機能がないサイト

アプリケーション脆弱性診断

脆弱性(バルネラビリティ(Vulnerability)とは、Webアプリケーション、OS、ミドルウェア、ネットワークに潜む、セキュリティ上の弱点のことです。悪意のある攻撃者は、サイバー攻撃によって脆弱性を狙って、企業のIT資産を金銭目的で窃取します。脆弱性は放置せずに定期的に診断を実施し、発見された脆弱性対策を実施することで、継続的なセキュリティ対策が実現できます。アプリケーションのセキュリティを検査するために、脆弱性診断でセキュリティ対策を始めてみませんか?

Webアプリケーション脆弱性診断

WebSiteScan

Webアプリケーション脆弱性診断のWebSiteScanは、お客さまのWebサイトをリモートで診断を行うサービスです。SaaS型サービスなので、お客さまはソフトウェアやハードをご購入いただく必要はございません。オンデマンドによるご提供となっているため、お客さまのご利用されたいタイミングに合わせてスケジュール設定も可能、診断終了後に即時診断レポートを発行いたします。 「コーポレートサイトを費用を抑えて診断したい」「開発時に手早く検査したい」などのお客さまにおすすめです。

アプリケーションセキュリティの課題・目的

アプリケーションエンジニアがアプリケーションセキュリティに取り組む目的は、アプリケーションに潜む脆弱性を攻撃者が悪用し、アプリケーション内に保管されている情報資産を窃取することを防止するためです。