セキュリティホールはプログラムの不備で生じるセキュリティ上の欠陥のことで、悪意あるユーザーによるサイバー攻撃やウイルス感染に利用されてしまう場合もあります。
セキュリティホールがある状態のまま放置すると、さまざまな被害にあう可能性があるため、正しい知識と行動を身につける必要があります。
セキュリティホールの基礎知識、セキュリティホールの例や攻撃の例、利用者とITベンダーの対策を詳しく解説します。
セキュリティホールとは
セキュリティホールとは、システムに生じるセキュリティ上の「穴」「欠陥」のことを指します。
OSやミドルウェア、アプリケーションなどの開発中に、設計やプログラミングのミスや不具合が原因で生じるものです。
「穴」に気づかれないままリリースされ、悪意ある攻撃者に発見されると、その穴を踏み台にサイバー攻撃やウイルス感染の被害にあってしまいます。
開発段階でセキュリティホールを作らないのがベストですが、人が作るものである以上、どんなに入念にテストしても100%防ぐことはできません。
セキュリティホールは発生するもの、という前提で、見つかった場合は速やかに対策をすることが大切です。
セキュリティホールと脆弱性の違い
セキュリティホールと似た意味合いの言葉に「脆弱性」がありますが、何が違うのでしょうか。
ともに「弱点」という意味合いを持ちますが、脆弱性のほうがより広い意味で使われます。
セキュリティホールは、設計やプログラミングなど開発時の不具合であるのに対して、脆弱性はそれらに加えて、システム管理体制の不備や、ITリテラシーが低い人によって引き起こされるリスクも含みます。
セキュリティに関する弱点全般を脆弱性と呼び、セキュリティホールは脆弱性のひとつということができます。
セキュリティホールの例と攻撃例
セキュリティホールの例や攻撃例にはさまざまなものがあります。
ここでは代表的な「SQLインジェクション」「クロスサイト・スクリプティング」「バッファ・オーバーフロー」「強制ブラウジング」の4つを紹介します。
SQLインジェクション
SQLインジェクションは、データベースを操作する言語であるSQLの不具合をつく攻撃です。
インジェクションとは「注入」という意味で、Web画面の入力ボックスなどからデータベース操作プログラムに対して不正な命令文を注入するため、このように呼ばれます。
データベースの情報が流出したり、データベースの内容が改ざんされたりといった被害を受けます。
開発段階で、特別な文字や記号を別の文字に置き換えるエスケープ処理や、入力ボックスに想定外の文字を入力できないようにチェックをいれることで攻撃の回避が可能です。
クロスサイト・スクリプティング
クロスサイト・スクリプティングとは、Webアプリの入力フォームの不備を狙った攻撃です。
悪意のあるユーザーが仕掛けた罠ページを介して、脆弱性のあるWebページに不正なスクリプトを埋め込み、利用者のブラウザ上で不正なスクリプトを実行します。
フィッシング詐欺などの偽ページが表示されたり、Cookieから個人情報が流出したりする被害を受けます。
開発段階で、スクリプトとして動作する文字列を無効化するエスケープ処理を組み込んだり、ユーザーが入力できる文字の種類を制限するなどの対策で攻撃の回避が可能です。
バッファ・オーバーフロー
バッファ・オーバーフローは、プログラムのメモリ操作の不具合を狙った攻撃です。
サーバーやパソコンの処理能力を超えるデータを送りつけて、システムを停止させたり、意図しない挙動をさせたりします。
システムの停止や、権限を乗っ取って情報改ざん、悪意あるコードの実行などの被害を受けます。
開発段階で、バッファ・オーバーフローを引き起こす可能性のある関数を利用しないなどの対策によって攻撃の回避が可能です。
強制ブラウジング
強制ブラウジングとは、URLを直接入力して、公開されていないWebページにアクセスする攻撃です。
開発時のファイル配置ミスや、サーバーの設定ミスなどの不備をついて、URLを類推してアクセスを試みます。
公開する予定のない情報を盗み見たり、管理者ページからサイトを改ざんしたりという被害を受けます。
Webサイト構築時に、重要情報を公開ディレクトリ配下に置かない、ファイルの権限を適切に設定するなどの対策で攻撃の回避が可能です。
セキュリティホール対策の隙をつくゼロデイ攻撃
ゼロデイ攻撃とは、セキュリティホールが発見されてから、対策されるまでの間に悪意あるユーザーが攻撃することです。
ゼロデイとは「0 Day」の意味で、セキュリティホールの修正プログラムが提供される日(Day 1)より前に攻撃することを表します。
提供元がセキュリティパッチを提供しても、適用までに時間がかかれば、その間は無防備な状態となるため、セキュリティパッチは速やかに適用しましょう。
セキュリティホールの対策:利用者
セキュリティホールに対して利用者ができる対策には、「最新のセキュリティパッチ適用」「セキュリティ対策ソフトの導入」「サポート切れ製品を使わない」などがあります。
それぞれ利用者ができるセキュリティホール対策を解説します。
最新のセキュリティパッチを適用
セキュリティホール対策でもっとも大切なのは、OSやソフトウェアの最新のセキュリティパッチを速やかに適用することです。
セキュリティホールが発見されると、OSやソフトウェアの提供元は「穴」を塞ぐための修正プログラム(セキュリティパッチ)を開発して提供します。
セキュリティパッチの公開当日がもっとも攻撃が増加する傾向にあるため、提供されたら速やかに適用することが大切です。
セキュリティ対策ソフトを導入
セキュリティ対策ソフトを導入するのも有効な対策です。
セキュリティ対策ソフトを導入することで、セキュリティホールをついて攻撃してくるマルウェアなどを発見して駆除してくれることが期待できます。
しかし、セキュリティ対策ソフトがセキュリティホールを塞いでくれるわけではありませんので、あくまで補助的な位置付けと考えましょう。
根本対策は、やはりセキュリティパッチを速やかに適用することです。
定期的な情報収集
利用者としてはサポート切れ製品を使わないことも大切です。
サポート期間が終了した製品は、セキュリティホールが発見されても、提供元からセキュリティパッチが提供されません。
古いOSやソフトウェアのセキュリティホールを狙う、サイバー攻撃やウイルス感染に無防備な状態となってしまいます。
常にサポート情報には気を配り、サポート切れ製品には事前に対策をとるようにしましょう。
セキュリティホールの対策:ITベンダー
Webサービスやソフトウェアを提供するITベンダーは、セキュリティホールを作り込まない対策や、セキュリティホールを発見した場合に被害を抑える対策をとる必要があります。
3つの対策を解説します。
WAFの導入
Webアプリケーションをサイバー攻撃から守る方法としてWAF(ワフ)の導入があります。
WAFとは、Web Application Firewallの略称で、外部に公開されているWebアプリケーションへの不正な攻撃を防ぐセキュリティ対策です。
Webアプリケーションに特化し、セキュリティホールを狙った不正アクセスを検知して遮断します。
万が一、アプリケーションにセキュリティホールが発見されても、WAFが攻撃を防いでくれている間にセキュリティパッチを開発することが可能です。
定期的な脆弱性診断
セキュリティホール対策には定期的な脆弱性診断も有効です。
一度安全に構築されたシステムが、その後もずっと安全なわけではありません。
セキュリティホールは、利用しているOSやミドルウェアの脆弱性の発見や、システムの機能追加・構成変更などにより、新たに生まれる可能性があるものです。
脆弱性診断には、短期間に安価で実施できる「ツール診断」と、専門エンジニアが高い精度の診断を行う「手動診断」があります。
Webサイトやアプリケーションで取り扱う情報の重要性や、予算などに応じて使い分けましょう。
ガイドラインに沿ったコーディング
根本的には、開発段階でセキュリティホールを作り込まないのが最善の対策です。
100%なくすのは難しいですが、可能性を減らすことはできます。
自社の過去事例や他社事例などからセキュリティホールを作り込まないためのガイドラインを作成したり、公的機関が公開しているガイドラインを活用したりして、開発時にチェックすると良いでしょう。
セキュリティホールを作ってしまった場合、発見して対策するのにはコストがかかります。頻繁に発見されれば、企業の信頼低下にもつながるでしょう。
開発段階でできるだけ作り込まないよう対策することが重要なのです。
セキュリティホール対策をしてリスクを回避しよう
セキュリティホールは100%なくすことはできないため、被害を受けない、広げないための対策が重要です。
セキュリティホールをきっかけに社内ネットワークに侵入された際に重要情報が盗まれないよう、セキュアSAMBAなどのオンラインストレージに重要情報を退避しておくのも対策といえるでしょう。
オンラインストレージなら、無料から始められるセキュアSAMBAをぜひご検討ください。