Lesson6-4 脆弱性を調べる

ここまでサイバー攻撃対策について学習してきました。

このレッスンでは、
コンピューターやシステムの安全性を検査する、
セキュリティテストについて解説します。

ソフトウェアの脆弱性

ユーザーの立場からすると、
これまで正常に機能していたソフトウェアが突然脆弱性を指摘されたり、
さらに悪いことには脆弱性につけ込まれて攻撃を受け、
情報漏洩してしまったというような状況は避けたいことです。

どうしてこのようなことが起こるのでしょうか。

実はソフトウェアの脆弱性は、
開発者のミスが多いのが実情です。

しかし、脆弱性をなくすことは簡単なことではありません。

ソフトウェアはクライアントが求める仕様に沿ってプログラムされますが、
それをつくることと、脆弱性を生まないようにすることは、
全く別ものだからです。

攻撃をしかけてくる犯罪者は、
開発者が想定しない方法で侵入を試みます。

どのような攻撃をしかけてくるのかを事前に予想するのは難しいため、
どうしても脆弱性が生まれてしまうのです。

新たな脆弱性は日々発見されていますが、
攻撃者は過去の脆弱性も利用して攻撃してくるので、
過去の事例を調べて同じ攻撃を受けないようにすることが重要です。

開発に関しては、発注者と受注者の、
双方のセキュリティに対する意識の高さが必要です。

設計前からセキュリティ対策を意識し、
サービス開始前には脆弱性診断を実施し、
サイバー攻撃に対応していく姿勢が求められます。

脆弱性の検査 ペネトレーションテスト

セキュリティテストでは、
擬似的な攻撃をシステムに対して行い、
問題が発生するかを調べます。

この擬似的な攻撃を試みる検査は「ペネトレーションテスト」と言い、
「侵入テスト」とも呼ばれることがあります。

このテストでは、攻撃者の視点でネットワークに侵入してシステムに攻撃をし、
システムの脆弱性を見つけます。

例えば組織外からファイアウォールへ擬似攻撃をしたり、
インジェクション攻撃などもおこなったりします。

ペネトレーションテストを実施することで、
サイバー攻撃を実際に受けてしまった場合にどの程度まで耐えられるかを評価でき、
セキュリティ上の問題を見つけることができます。

ペネトレーションテストは攻撃者の手口を再現するため、
一定の知識を持つ技術者が行います。

そのため、一般的には専門業者に依頼することが多いでしょう。

ペネトレーションテストには主に次の種類があります。

ブラックボックステスト

「ブラックボックステスト」とは、
システムの内部構造や動作を考慮せずに、
アプリケーションの機能を調べるテストのことです。

与えたデータに対して、どのような反応をするかを調べます。

例えば顧客管理システムで、
顧客のIDを入力し、顧客情報を引き出せる仕様になっているものがあります。

そこに顧客IDを入力してみて、仕様通りの値が出力されるかを検証します。

ブラックボックステストは内部構造を知らなくても実施できるという点で、
プログラミングなどの知識は必ずしも必要ではなく、
第三者が行うテストによく用いられます。

また、データの入出力のみに着目するテストのため、
ユーザーの視点で行われるテストとも言えるでしょう。

ホワイトボックステスト

「ホワイトボックステスト」とは、内部構造や動作を考慮して行うテストで、
プログラムが仕様書どおりに動くかどうかを検証します。

各部品が正しく行うかのテストである「単体テスト」という工程において
よく用いられます。

プログラムの内部構造に重点をおいたテストなので、
主に開発者が行うテストです。

ブラックボックステストでは、
結果が正しく出てしまえば問題を確認することができないというデメリットがありますが、
ホワイトボックステストではそれを補うことができます。

つまりユーザーが使う分には問題がなくても、
開発者の視点からテストが行えるのです。

ソフトウェアのテストでは、
ブラックボックステストかホワイトボックステストのどちらか一方を使うのではなく、
ほとんどの場合は両方を組み合わせて不具合を検出し、
安全性を効率よく確かめます。


会社が運営しているシステムが
セキュリティ対策をしっかりできているのか確認することは、
顧客からの信頼を保つのに不可欠です。

実際にテストを実施する場合は、
信頼できる業者を選定して依頼しましょう。

次のレッスンでは、
サイバー攻撃されてしまった時の対応について学習します。