システムのセキュリティ脆弱性を検出する方法|セキュリティテストの基礎と実践ガイド
ソフトウェア開発業界では、適切に管理されていないオープンソースのプログラムやツールに潜む深刻なセキュリティリスクが、今や広く認識されています。それにもかかわらず、多くの企業はこうしたリスクを軽視しており、ハッカーに格好の標的を与えてしまっています。安全を確保し、ハッカーの一歩先を行くためには、システムのセキュリティ脆弱性を検出する方法と、保護のための具体的な対策を知ることが不可欠です。
セキュリティ脆弱性を検出するには、ソフトウェアテストの一種である「セキュリティテスト」を活用する必要があります。セキュリティテストは、システム、ネットワーク、アプリケーション開発におけるセキュリティ上の欠陥を特定するうえで、極めて重要な役割を果たします。
本記事では、セキュリティテストとは何か、その重要性、主な種類、セキュリティ脆弱性を引き起こす要因、脅威の分類、そしてシステムへの脅威となるソフトウェアの弱点をどのように修正すればよいのかについて、詳しく解説します。

セキュリティテストとは?
セキュリティテストとは、セキュリティ上の欠陥(脆弱性)を検出し、データがこれらの弱点を通じて悪用されるのを防ぐための対策を提案することを目的としたプロセスです。

セキュリティテストの重要性
現在において、セキュリティテストは、ソフトウェアやアプリケーションのセキュリティ脆弱性を明らかにし、対処するための確実な手段です。以下のような事態の回避に役立ちます。
- 顧客からの信頼の喪失
- ネットワーク・システム・Webサイトのダウンによる時間とコストの損失
- 攻撃からシステムやネットワークを守るために発生する追加の投資コスト
- 不十分なセキュリティ対策によって企業が直面しうる法的な問題
セキュリティテストとは何か、なぜ重要なのかが理解できたところで、次にセキュリティテストの種類と、それぞれがどのように保護に役立つのかを見ていきましょう。

セキュリティテストの7つの主要な種類
アプリケーション、ネットワーク、システムの脆弱性を検出するには、以下の7つの主要なセキュリティテスト手法を利用できます。
注意: これらの手法は手動でも実施可能で、重要なデータに対するリスクとなりうるセキュリティ脆弱性の検出に役立ちます。
1. 脆弱性スキャン(Vulnerability Scanning)
ネットワーク内のシステムに脅威をもたらす可能性のあるセキュリティ上の抜け穴を、自動的にスキャンして特定する自動化プログラムです。
2. セキュリティスキャン(Security Scanning)
システムおよびネットワークの脆弱性を特定するための、自動・手動両方の手法です。このプログラムはWebアプリケーションと通信し、ネットワーク、Webアプリケーション、OSに潜む潜在的なセキュリティ脆弱性を検出します。
3. セキュリティ監査(Security Auditing)
企業のセキュリティ体制を体系的に評価し、重要情報に対するリスクとなりうる欠陥を把握する手法です。
4. エシカルハッキング(Ethical Hacking)
企業やセキュリティ担当者が合法的に実施するハッキングで、ネットワークやコンピュータ上の潜在的な脅威を発見することを目的とします。エシカルハッカーはシステムのセキュリティを突破し、悪意ある第三者に悪用されうる脆弱性を洗い出します。
5. ペネトレーションテスト(Penetration Testing)
システムの弱点を明らかにするのに役立つセキュリティテストです。
6. セキュリティ態勢評価(Posture Assessment)
エシカルハッキング、セキュリティスキャン、リスクアセスメントを組み合わせて、組織全体のセキュリティを総合的にチェックする手法です。

7. リスクアセスメント(Risk Assessment)
想定されるセキュリティ脆弱性に伴うリスクを評価・判断するプロセスです。組織はディスカッション、インタビュー、分析を通じてリスクの度合いを特定します。
ただし、セキュリティテストの種類や定義を知っているだけでは、侵入者の分類、脅威の種類、セキュリティテストに関わる技術を十分に理解することはできません。以下でさらに詳しく見ていきましょう。
侵入者の3つの分類

悪意ある攻撃者は、通常、以下の3つに分類されます。
- マスカー(なりすまし者): システムへのアクセス権限を持たない人物。認証済みユーザーになりすますことでアクセスを獲得します。
- ディシーバー(欺瞞者): システムへの正当なアクセス権を与えられているにもかかわらず、それを悪用して重要データへアクセスする人物。
- シークレットユーザー(隠密利用者): セキュリティを回避してシステムの制御を奪おうとする人物。
脅威の分類
侵入者の分類以外にも、セキュリティ上の弱点を突くさまざまな脅威が存在します。
クロスサイトスクリプティング(XSS)
Webアプリケーションに存在するセキュリティ上の欠陥で、サイバー犯罪者がクライアント側のスクリプトをWebページに注入し、ユーザーを悪意あるURLへ誘導できるようにするものです。コードが実行されると、個人情報を盗み出されたり、ユーザーの代わりに不正な操作を実行されたりする恐れがあります。
不正データアクセス(Unauthorized Data Access)
SQLインジェクションに次いで最も一般的な攻撃タイプです。ハッカーはデータへの不正アクセスを行い、サーバー経由でデータを取得できるようにします。これには、データ取得操作によるアクセス、クライアント認証情報への違法アクセス、他者の活動を監視することによる不正なデータアクセスなどが含まれます。
なりすまし(Identity Tricking)
正規ユーザーの認証情報を入手したハッカーが、その情報を使ってネットワークに攻撃を仕掛ける手法です。
SQLインジェクション(SQL Injection)
現在最もよく使われている攻撃手法の一つで、サーバーのデータベースから重要情報を窃取することを目的とします。ハッカーはシステムの弱点を突いて、ソフトウェアやWebアプリケーションなどに悪意あるコードを注入します。
データ改ざん(Data Manipulation)
名前の通り、ハッカーがサイト上に公開されているデータを利用してサイト所有者の情報にアクセスし、攻撃的・不適切な内容に書き換える攻撃です。
権限昇格(Privilege Advancement)
攻撃者が本来誰にも付与されるべきではない高い権限レベルを得るためにアカウントを作成する攻撃です。成功すると、ハッカーはルートファイルにアクセスでき、システム全体に被害をもたらす悪意あるコードを実行できるようになります。
URL操作(URL Manipulation)
URLを改ざんすることで機密情報へのアクセスを試みる脅威です。アプリケーションがHTTPSではなくHTTPを使用してサーバーとクライアント間で情報をやり取りしている場合に発生しやすく、クエリ文字列として渡されるパラメータが書き換えられることで攻撃が成立します。
サービス拒否攻撃(Denial of Service)
サイトやサーバーをダウンさせ、ユーザーが利用できない状態にすることで、サイトへの信頼を失わせようとする攻撃です。通常、ボットネットが使用されます。

セキュリティテストの技法
以下に挙げるセキュリティ設定は、前述の脅威への対処に役立ちます。そのためには、HTTPプロトコル、SQLインジェクション、XSSに関する十分な知識が必要です。これらを理解していれば、検出されたセキュリティ脆弱性を修正し、システムを保護するために以下の技法を容易に活用できます。
クロスサイトスクリプティング(XSS)のテスト
前述の通り、クロスサイトスクリプティングは攻撃者がアクセスを獲得するために用いる手法です。そのため、テスターはWebアプリケーションにXSSの脆弱性がないかを確認する必要があります。具体的には、アプリケーションがスクリプト入力を受け付けないことを検証します。スクリプトの受け入れは最大の脅威であり、システムを危険にさらす可能性があるためです。
攻撃者はクロスサイトスクリプティングを利用して悪意あるコードを容易に実行し、データを盗み出せます。XSSテストでは、以下の記号などを使って検証を行います。
- 小なり記号(<)
- 大なり記号(>)
- アポストロフィ(')
パスワードクラッキング(Password Cracking)
システムテストにおいて最も重要な要素の一つです。ハッカーは機密情報へのアクセスを得るために、パスワードクラッキングツールを使用したり、オンラインで入手可能な一般的なパスワードやユーザー名を試したりします。したがって、テスターはWebアプリケーションが複雑なパスワードポリシーを採用していること、Cookieが暗号化されずに保存されていないことを確認する必要があります。
さらに、テスターはセキュリティテストの7つの特性とセキュリティテストの手法論を常に念頭に置く必要があります。
- 完全性(Integrity)
- 認証(Authentication)
- 可用性(Availability)
- 承認(Authorization)
- 機密性(Confidentiality)
- 耐障害性(Resilience)
- 否認防止(Non-repudiation)
セキュリティテストの手法論

- ホワイトボックステスト: テスターがすべての情報にアクセスできる状態で実施するテスト。
- ブラックボックステスト: テスターに一切の情報が与えられず、実際の運用環境に近い形でシステムをテストする方式。
- グレイボックステスト: 名前の通り、一部の情報のみがテスターに提供され、残りの情報は自ら調査・把握する必要がある方式。
これらの手法を活用することで、組織はシステムで検出されたセキュリティ脆弱性を効果的に修正できます。また、特に留意すべき点として、経験の浅い開発者によるコードの安易な採用を避けることが挙げられます。そうしたコードにはセキュリティ上の弱点が含まれていることが多く、厳密なテストを実施しない限り、発見も修正も困難だからです。
本記事が参考となり、皆様のシステムに潜むセキュリティ上の抜け穴を修正する一助となれば幸いです。
-
インターネットセキュリティはOSに依存するのか?本当の鍵はユーザーの意識にあり
終わりなきOS戦争とセキュリティ論争コンピュータの世界では、オペレーティングシステム(OS)をめぐる競争が絶えることがありません。かつては多種多様なOSが存在し、シェア争いも細分化されていました。しかし現在、主流となっているのはWindows、macOS(OS X)、Linuxの「ビッグスリー」です。もちろん他にも多くのOSがありますが、今日一般的に使われているのは主にこの3つです。そして現代のOSをめぐる最大の議論テーマが「どのOSが最も安全か」という問題です。各陣営は自らのブランドを死守すべく、自社システムこそが最も安全だと主張し合います。しかし、今の時代に本当に問題となっているのは、OS
-
PCのパフォーマンスとセキュリティスキャンを実行する方法【Advanced System Optimizer活用ガイド】
パソコンは現代における「人間の最良の友」とも言える存在であり、特にコロナ禍においては、PCなしの生活は想像しがたいほど不便なものになりました。しかし、PCユーザーとオンライン活動が急増するにつれ、サイバー犯罪者(脅威アクター)の数も増加し、かつてない多様性を持つサイバー犯罪が蔓延していることをご存じでしょうか。そのため、今こそPCを安全に保つことがこれまで以上に重要になっています。在宅勤務でPCを使う機会が多い方にとっては、セキュリティだけでなくパフォーマンス(動作速度)も重要なポイントです。 本記事では、「Advanced System Optimizer(ASO)」を使用して、PCのパフォ