企業や組織の事業活動とWebサイトが密接に関わる時代を迎え、Webサイトへのサイバー攻撃は大きな脅威となっている。この記事では、サイバー攻撃の主要な手法を踏まえながら、Webサイトを運営するにあたってどのようなセキュリティ対策を講じていくべきか、関連するソリューションを挙げながら解説する。

狙われる企業のWebサイト
デジタルの進展はとどまるところを知らず、加速する一方だ。その結果、企業・組織のWebサイトはこれまで以上に、その存在感や価値が高まっている。企業・組織のサービス提供とWebサイトは密接に関わっていることもあることから、仮にWebサイトがダウンした場合の影響は、その関係性に応じて広範囲に及びかねない。
Webサイトがサイバー攻撃の被害にひとたび遭遇してしまうと、情報漏えいやランサムウェア攻撃などに伴う金銭的被害といった直接的な被害だけでなく、風評被害が生じるような場合もある。また、サイバー攻撃の影響は、企業・組織が提供するサービスのユーザーへも波及することになりかねない。加えて、ユーザーへの影響にとどまらず、取引先へ被害が連鎖する恐れもある。
皮肉なことに、こうした状況はサイバー攻撃者にとって攻撃を仕掛けるにあたって好都合であり、攻撃の動機ともなっている。すなわち、企業・組織のWebサイトは事業における存在価値が高まるほど、サイバー攻撃に狙われる宿命にあると言えるのだ。
停滞するWebサイトへのセキュリティ対策
大企業ではサイバー攻撃によるリスクを見越して対策が進展している一方で、予算や人的リソースに制約を受けやすい中小企業では、セキュリティ対策は限定的となりがちだ。こうした状況は各種調査でも明らかになっている。
IPAが2025年に公開した「2024年度 中小企業における情報セキュリティ対策に関する実態調査」報告書によると、過去3期のセキュリティ投資額については、「投資していない」が62.6%と最多の回答となっている(図1)。また、次いで多い回答は「100万円未満(20.4%)」となっており、投資している場合でも金額は相対的に低いことがわかる。
なお、同報告書では情報セキュリティ関連製品の導入状況についても明らかにしている。中でも、「ウイルス対策ソフト・サービスの導入」については80.0%となっており、最低限のセキュリティ対策は行われていることがうかがい知れる(図2)。
とはいえ、ウイルス対策ソフト・サービスの導入が有効なのはクライアント端末に限定される。また、自社でWebサーバーを運用している場合にWebサイト攻撃への保護に有効な「ファイアウォール」の導入状況については、37.3%にとどまっていることがわかる。
同様に、Webサイト攻撃への保護に有効な対策としてサーバーへのパッチ適用が挙げられる。パッチを適切に適用していくことで脆弱性を解消することはセキュリティ対策の基本とも言えるだろう。同報告書では「サーバー等へのパッチ適用」についての設問があるが、回答結果は図3のとおりだ。
「パッチを適用している」の回答は31.3%と3分の1に満たない状況となっている。同報告書はあくまで「サーバー等」へのパッチ適用を問うているため、Webサーバーに限定すればより高い回答になる可能性も考えられる。また、サーバー等へのパッチの適用はその都度、既存システムへの影響を考慮する必要があることも、こうした数字にとどまっている背景にあるものと推測される。とはいえ、セキュリティ対策の基本の1つでもあるサーバー等へのパッチの適用状況がこうした結果となっていることは看過されるべきではないだろう。
Webサイトはどのように攻撃されるのか
一般的に、ほとんどのWebサイトはインターネット上に公開されている。そのため、誰しもがアクセスできるだけでなく、Webサイトのソースコードも確認できてしまう。また、解析ツールなどを利用することで、サーバー情報や利用しているソフトウェアも判別できる場合がある。こうした特性がゆえに、Webサイトはサイバー攻撃の対象となりやすいのだ。
攻撃者がひとたびWebサイトの解析を行えば、そのサイトの脆弱性は容易に発見できてしまう。そのため、理想的には常にWebサイトの脆弱性を解消しておくことが望ましいが、実際にはそれが難しい場合が多い。特に、運用中のWebサイトでは、設計段階からセキュリティを重視した「セキュリティ・バイ・デザイン」に基づいて構築し直すことは困難なケースもあるだろう。
IPAが公表している「安全なウェブサイトの作り方」では、こうした設計段階の見直しが難しい場合に備え、以下の4つの「保険的対策」が有効であると提案している。
・攻撃される可能性を低減する
攻撃可能性を低減させるためには、攻撃のための手掛かりとなる情報を与えないことが肝要だ。例えば、URLに付与されるパラメータや、ユーザーのエラーに伴って表示されるエラーメッセージは、仕様によっては攻撃に有用な情報を含むことがある。そのような場合、見直しが必要だろう。
・攻撃された場合に、脆弱性を突かれる可能性を低減する
仮に攻撃を受けた場合でも、脆弱性を突かれる可能性を低減できれば、その分だけ被害に遭遇する可能性も低くなる。対策としては、Webサーバーのファイルやデータベースへのアクセス権限を適切に設定すること、入力文字列に対してサニタイジングを実施することなどが挙げられる。こうした対策により、悪意あるスクリプトの実行を抑制できる。
・脆弱性を突かれた場合に、被害範囲を最小化する
仮に攻撃を受けた場合でも、ファイルへのアクセス権限が適切に制御されていれば、被害範囲は限定的にとどめることができる。ラテラルムーブメントを防ぐために行われる、セグメンテーションなども有効だ。
・被害が生じた場合に、早期に知る
何かしらの異変がWebサイトに生じた場合、速やかに状況を把握して対処できれば、被害は最小限に防ぐことができる。Webサーバー上のファイルを監視して改ざんが確認された際に通知を発するサービスなどの導入も有効だ。
本来であれば、Webサイトを設計から見直して再構築することが望ましいのは言うまでもない。しかし、そうした対応が難しい場合は、暫定的にでも、早急に上記の保険的対策を講じるようにしたい。
代表的なWebサイトの脆弱性
先に取り上げた「安全なウェブサイトの作り方」でもあるように、Webサイトの保護対策は脆弱性の解消がカギを握るとも言える。改めて、Webサイトに関連する、主な脆弱性の概要と影響範囲を以下に挙げていく。
・SQLインジェクション
SQLはデータベースと連携するWebアプリケーションで多く利用されている。SQLを悪用して、データベースに不正なSQL文を送信して実行できてしまう状況がSQLインジェクションと呼ばれる。この脆弱性を突かれた場合、データベース内の個人情報などの窃取・改ざん・削除につながる恐れがある。
・クロスサイトスクリプティング(XSS)
Webサイト上でのユーザーの送信リクエストに、何かしらの方法で不正なスクリプトを埋め込み、実行させることで、ユーザーを偽サイトなどへ誘導して、Cookieに格納されたセッションIDや個人情報などを窃取・悪用することがある。
・クロスサイトリクエストフォージェリ(CSRF)
ログイン機能を提供しているWebサイトにユーザーがログインしている状況で、ユーザーに不正なリクエストを送信させるなどして、偽サイトへと誘導し、ユーザーが意図していない行動をさせる。その結果、不正な送金や意図していない商品の購入、勝手に設定が変更されてしまうといった被害が生じる。
・ディレクトリトラバーサル
WebサイトのURL設定の不備を突くことで、本来非公開であるべきディレクトリやファイルへ不正にアクセスできてしまう脆弱性だ。場合によっては、個人情報やパスワード、機密情報の漏えいにつながることもある。
・OSコマンドインジェクション
OSコマンドが使用可能で適切な対策が講じられていないWebアプリケーションにおいて、OSコマンドを含めた不正なリクエストをWebサーバーに送信されてしまうことで、情報漏えいや攻撃の踏み台として悪用される恐れがある。
・リモートファイルインクルード(RFI)
リモートファイルインクルード機能を有効にしているWebアプリケーションで、サニタイジングやファイルのパーミッションが適切に設定されていない場合、悪意あるソースコードの実行が可能となる。こうした脆弱性を突くことで、マルウェア感染や情報漏えい、システム自体の乗っ取りといった被害に至る可能性がある。
また、脆弱性には分類されないものの、ブルートフォース攻撃(総当たり攻撃)のような、ID/パスワードの組み合わせを総当たりで試行することで、不正なログインを試みる攻撃も存在する。ほかにも、セッションの管理不備が、セッション・ハイジャックと呼ばれる攻撃につながる場合もある。これらのような攻撃を許してしまう状況自体が、広義の脆弱性を抱えているとも言える。そのため、こうした脆弱性も含めて、適切に対処していく必要があるだろう。
Webサイトの脆弱性への有効な対策とは?
先に挙げた代表的な脆弱性への対応は個々で異なる。例えば、SQLインジェクションの脆弱性解消にはプレースホルダーの使用やサニタイジングなどが有効な対策となる。また、ディレクトリトラバーサルの脆弱性は、適切なアクセス権限の制御やファイルパスの正規化、といった基本的な対策で、リスクを大幅に軽減できる。
このように、Webサイトの脆弱性を1つずつ確実に解消していくことで、多くの攻撃を防ぐことが可能だ。そのためには、常にWebサイトの脆弱性を洗い出す状況を維持しておくことが重要だ。こうした対策の1つとして、脆弱性診断というサービスが挙げられる。代表的な脆弱性はもちろんのこと、「CVE(Common Vulnerabilities and Exposures:共通脆弱性識別子)」として管理されている脆弱性などを洗い出すことも可能だ。
また、すべての脆弱性に対処しようとすると、その数が膨大になりすぎることもある。そこで、優先順位をつけて対処していくことが重要だ。こうした考え方は「トリアージ」と呼ばれる。脆弱性を管理するソリューションの中には、各脆弱性に重大度(リスクスコア)が付与され、その指標をもとに優先順位を決めて対応できるものもある。
ほかにも、脆弱性を見つけ出す方法の1つとして「ペネトレーションテスト(侵入テスト)」がある。これは、高度な専門知識とスキルを持つホワイトハッカーが、攻撃者の視点に立ってさまざまな手法を用いながらWebサイトに侵入を試み、安全性を検証するサービスだ。実際の運用環境に近いWebサイトを対象とすることで、脆弱性診断では見つからなかった脆弱性を発見できることもある。
このように、脆弱性診断、ペネトレーションテストはそのどちらかを選択するというものではなく、それぞれのサービスで役割が異なることに注意して活用するようにしたい。
加えて、改めて認識しておきたいのは、Webサイトを取り巻く環境は日々変化しているということだ。サイバー攻撃の手法も進化していけば、Webサイトを運営しているサーバーやネットワーク、さらにアクセスしているユーザーの端末も常に変化している。そのため、一見万全に見えた対策でも、時間とともに脆弱性が露呈し、リスクが高まる可能性がある。
そうした状況を考慮すると、Webサイトをさまざまな攻撃から守るには、WAF(Web Application Firewall)の導入が有効だ。WAFは、「Webアプリケーションの脆弱性を悪用した攻撃」からWebサイトを保護するためのソリューションだ。Webサーバーの前段に設置することで、通信内容を解析・検査し、攻撃と判断した通信を遮断する。そのため、仮に新たな脆弱性を突かれた場合でも、通信自体が遮断されることで、未然に攻撃を防ぐことが可能となるのだ。
また、Webサイトを格納する、Webサーバーについて、脆弱性保護の観点からもWAFが有効だと言える。というのも、Webサーバーの場合、脆弱性が発覚した場合でも、既存システムへの影響範囲の調査なども必要となるため、すぐにパッチを適用することが難しい。WAFを導入することで、パッチ適用までの空白期間を埋められるのだ。
Webサイトの重要性が高まっている現状を踏まえ、対策は待ったなしの状況と言える。そのため、脆弱性の解消を目指す取り組みと、攻撃の可能性がある通信を遮断する対策の両方が、Webサイトを守るために欠かせない時代になりつつあるのではないだろうか。