sql-injection

SQLインジェクションとは? 攻撃の仕組みや被害例、対策方法を解説

 

現代のIT社会では、大量のデータを管理する手段としてデータベースが不可欠です。多くのWebサービスや業務システムでは、商品や顧客の情報をデータベースで扱っています。

一方で、こうしたデータベースを標的としたサイバー攻撃も増えており、代表的な脅威が「SQLインジェクション」です。Webビジネスの拡大に伴い、その危険性はさらに高まっています。

対策には、まずSQLインジェクションの基本を理解することが重要です。本記事では、攻撃の仕組みとあわせて対策方法も解説します。

 

SQLインジェクションとは?

SQLインジェクションとは、データベースを操作するための言語「SQL(Structured Query Language)」を悪用したサイバー攻撃です。攻撃者が悪意のあるSQL文をWebシステムにインジェクション(注入)することで、不正なデータベース操作を図ります。

たとえば、Webサイトの入力フォームや検索ボックスに、不正な操作を行わせるSQL文を入力・送信します。適切なセキュリティ対策が施されていない場合、このSQL文が攻撃者の狙いどおりに実行されてしまい、データの削除や窃取といった被害を招きます。

SQLインジェクションはIT黎明期から存在しますが、現在でも決して過去の脅威ではありません。IPA(情報処理推進機構)によると、2024年における脆弱性(セキュリティ上の弱み)の累計届出件数において、SQLインジェクションは2番目に多く報告されています。

(参照元:IPA「ソフトウェア等の脆弱性関連情報に関する届出状況[2024年第3四半期(7月~9月)]」)

SQLは、世界で最も広く使われているデータベース言語です。そのSQLを扱う多くのWebシステムにとって、SQLインジェクションは決して対岸の火事ではありません。

 

SQLインジェクション攻撃を受けた際のデータベース処理

SQLインジェクション攻撃がどのように成立するのか、その仕組みを通常のデータベース処理と比較しながら見ていきましょう。ここでは、SQL文を交えて手口例を紹介します。

 

通常のデータベース処理

SQLインジェクションの標的となりやすいのは、ユーザーからの入力を直接受け付けるWebサイトの入力欄です。例として、商品を検索するための検索ボックスを考えてみましょう。

多くのECサイトでは、ユーザーが検索ボックスに入力したキーワードを受け取り、それをもとにSQL文を構築して商品データを取得します。たとえば、ユーザーが「Tシャツ」と入力して検索を実行した場合、サーバー側では一例として次のようなSQL文が生成されます。

SELECT * FROM products WHERE name LIKE ‘%Tシャツ%’;

このSQL文は、商品テーブル(products)の商品名(name)に「Tシャツ」が含まれるデータを検索し、該当する商品データを取得するものです。

このように、ユーザーが通常のキーワードを入力した際には特に問題は発生しません。入力されたデータに沿ったデータベース処理が行われ、期待どおりの検索結果が表示されます。

 

攻撃を受けた場合のデータベース処理

攻撃者がSQLインジェクション攻撃を図る場合、「Tシャツ」のように単純なキーワードは使いません。SQLにおいて特別な意味を持つ文字や命令文を仕込み、サーバー側で不正なデータベース処理を実行させようとします。これがSQLインジェクション攻撃です。

たとえば、攻撃者が「商品データの削除」を狙う場合、検索ボックスには次のような文字列を入力することが考えられます。

‘; DELETE FROM products;

これは、本来のデータ取得処理(SELECT文)を意図的に中断し、別のデータ削除処理(DELETE文)を実行する構文です。先ほどと同様に、ユーザーの入力をSQL文にそのまま組み込むと、次のようなSQL文が構築されてしまいます。

SELECT * FROM products WHERE name LIKE ‘%’; DELETE FROM products; –%’;

このSQL文では、SELECT文の末尾で命令が終了するように記述されており、そのあとにDELETE文が続いています。また、「–」以降はSQLのコメント扱いとなるため処理に影響せず、構文エラーを回避したまま命令が通ってしまう仕組みです。

仮にこのSQL文が攻撃者の狙いどおりに実行されれば、productsテーブル内の全商品データが削除されかねません。適切なセキュリティ対策が施されていないWebサイトでは、たった一行の不正な入力がこうした事態を招く危険性があります

 

SQLインジェクション攻撃で起きる問題

SQLインジェクション攻撃を許すことになれば、Webシステム上でさまざまな問題が発生します。具体的に懸念される問題は、主に次の4つです。

問題①重要な情報が盗まれる

SQLインジェクションが成功すると、攻撃者が他者・他社のデータにアクセスできるため、重要な情報が盗まれる恐れがあります。たとえば、データを取得するSQL文に脆弱性がある場合、攻撃者が不正にデータの取得範囲を書き換えることで、他人の情報までも取得可能です。

その結果、顧客の氏名・住所・連絡先といった個人情報や、業務上の設計資料・契約書といった機密情報が攻撃者の手に渡る危険性があります。こうした情報は、攻撃者本人に悪用されたり、ダークウェブで売買されたりするケースも少なくありません。

 

問題②データが改ざん・削除される

SQLインジェクションが成功すると、攻撃者によってデータベースに保管されたデータが改ざん・削除される恐れがあります。たとえば、攻撃者がデータ更新のSQL文(UPDATE文など)を悪用し、商品データの価格や説明文を不正に書き換えることも可能です。

また先ほどの例のように、データ削除のDELETE文で商品テーブル自体を削除されることも考えられます。Webサイトに表示されるデータが改ざんや削除の対象となれば、Webサイトの見た目は不適切に変わってしまうでしょう。最悪の場合、業務の継続やサービス提供に重大な支障をきたしかねません。

 

問題③システム自体を乗っ取られる

SQLインジェクションの手口によっては、システム自体を乗っ取られる恐れもあります。たとえば、データベースに登録されたユーザーの権限情報が不正に書き換えられることで、攻撃者が管理者権限を取得できてしまうかもしれません。

管理者権限を奪われると、システムの設定を不適切に変更されたり、サーバー内部にバックドア(密かに侵入可能な経路)を仕掛けられたりするリスクも生じます。攻撃者にシステム全体の制御を握られる状態となり、大変危険です。

 

問題④マルウェアに感染させられる

SQLインジェクションを足がかりに、攻撃者がマルウェア(不正なソフトウェア)の拡散を図るケースもあります。たとえば、マルウェアをダウンロードさせるスクリプトをWebページに埋め込まれると、閲覧したユーザーの端末がマルウェアに感染しかねません

また、攻撃者がシステムの乗っ取りに成功した場合には、企業のサーバーを起点としてマルウェアが社内ネットワーク全体に拡散される恐れもあります。こうした攻撃はWebシステムの運営企業だけでなく、一般の訪問者にも被害を広げるため、非常に深刻です。

 

SQLインジェクション攻撃が企業にもたらす被害

SQLインジェクションは、単なるシステム障害にとどまらず、企業経営そのものに大きな被害を及ぼすリスクがあります。ここからは、SQLインジェクション攻撃が企業にもたらす被害例を見ていきましょう。

被害①企業の社会的信用の失墜

SQLインジェクション攻撃によって情報漏えいやWebサイトの改ざんが発生すると、企業の社会的信用は大きく損なわれます。サイバー攻撃を防げなかった事実が明るみに出れば、顧客からは「信頼性の低い企業」という烙印を押され、顧客離れは避けられません。

一度失った信頼は、簡単には取り戻せません。ブランドイメージに傷がつくと、既存顧客の離反に加えて、新規顧客の獲得も難しくなる恐れがあります。被害が報道やSNSを通して広まれば、さらなる評判の低下にもつながるでしょう。

 

被害②損害賠償や金銭的損失

SQLインジェクション攻撃による被害は、直接的・間接的な金銭的損失を企業にもたらします。たとえば、顧客の個人情報が流出した場合、企業に対して損害賠償を求める訴訟が起こされるケースもあります。

また、関係各所への報告・説明対応や再発防止策の検討など、事態の収束までに多大なコストを費やすことになるでしょう。システムの停止による機会損失や、流出した機密情報を悪用されることによる競争力の低下など、目に見えにくい経済的打撃も無視できません。

 

被害③不正行為への関与

SQLインジェクション攻撃によって企業のシステムが乗っ取られると、攻撃者に「踏み台」として悪用されるケースもあります。そうなれば、システムが別のサイバー攻撃に悪用され、結果として意図せず不正行為に関与してしまうでしょう。

たとえば、企業のメールサーバーから大量のスパムメールやフィッシング詐欺メールが送信されてしまうことも考えられます。こうした事態となれば、加害者ではないにもかかわらず、企業が不正行為に関与しているように見なされかねません。

 

SQLインジェクションの技術的な対策

SQLインジェクションに対しては、主に2つの技術的な対策が挙げられます。いずれも、ユーザーからの入力を安全に処理し、不正な命令の実行を防ぐための仕組みです。

対策①プレースホルダを利用する

Webサイトでは、ユーザーが入力・送信した内容を使って、SQL文を構築する場面があります。このとき「プレースホルダ」を使えば、不正な命令の埋め込みを防ぐことが可能です。

プレースホルダとは、SQL文に埋め込むデータの位置を仮の記号(「?」など)で指定し、後から安全にデータを組み込む仕組みです。たとえば、商品検索機能でユーザーがキーワードを入力した場合、プレースホルダを使うと次のようなSQL文になります。

SELECT * FROM products WHERE name LIKE ‘%?%’;

実際には、プレースホルダ「?」の部分に、ユーザーが入力したキーワードが後から安全にセットされます。このとき、SQLにおける特殊な記号は命令として解釈されず、単なる「文字列」として扱われます。そのため、悪意のある入力によってSQL文が壊されたり、意図しない命令が実行されたりするリスクを抑えられます。

プレースホルダは、データベース処理に使われるライブラリの多くでサポートされています。SQLインジェクションを防ぐ第一歩として、プレースホルダを使える仕組みの導入を検討しましょう。

 

対策②エスケープ処理を行う

プレースホルダはSQLインジェクション対策として有効ですが、すべての状況で使えるとは限りません。たとえば、文字列の連結によってSQL文を構築しなければならない場合などは、代替手段として「エスケープ処理」を検討する必要があります。

エスケープ処理とは、入力値に含まれる特殊な記号を、SQL文の構文として解釈されないように無害化する処理のことです。たとえば、シングルクォート(’)やセミコロン(;)といった記号は、SQL文では命令の区切りや文字列の終端として扱われます。これらを単なる「文字列」として扱われるよう、適切な形式に変換するのがエスケープ処理です。

プレースホルダの内部でも、入力値を正しく扱うためにエスケープ処理が自動で行われています。エスケープ処理を手軽に実装できるライブラリもあります。プレースホルダを使えない場面では、開発者自身が明示的にエスケープ処理を実装することも検討しましょう。

 

SQLインジェクションを含む脅威への総合的な予防策

SQLインジェクションをはじめとするサイバー攻撃からシステム全体を守るためには、開発段階だけでなく、運用やインフラの面からも予防策を講じることが大切です。ここでは、SQLインジェクションを含む脅威への総合的な予防策を3つ紹介します。

予防策①動作環境をすべて最新状態に保つ

Webサイトや業務システムを安全に運用するためには、動作環境を常に最新の状態に保つことが大切です。

Webシステムは、OSやWebサーバー、データベース管理システムなど、複数の要素で構成されています。こうした要素は、新たな脆弱性が見つかった際にアップデートされることが一般的です。バージョンが古いままだと最新の脆弱性に対応できません。

安全性を保つためには、これらのバージョンを定期的に確認し、必要に応じて速やかにアップデートしましょう。また、Webサイトを構築するために「WordPress」などのCMS(コンテンツ管理システム)を使っている場合は、そのアップデートも不可欠です。

WordPressのセキュリティについて、詳しくは関連記事「WordPressのセキュリティ|脆弱性を狙った攻撃事例や対策」もご覧ください。

 

予防策②脆弱性診断ツールで定期的にチェックする

サイバー攻撃は日々巧妙化し、それに伴い新たな脆弱性も次々と発見されています。開発段階であらゆる脆弱性を完全に排除するのは現実的ではないため、運用中も継続的な確認が欠かせません。そこで、脆弱性診断ツールを活用するのが効果的です。

脆弱性診断ツールは、Webシステムを自動的に検査し、SQLインジェクションをはじめとする脆弱性を洗い出してくれます。診断ツールで検出された脆弱性を速やかに修正することで、攻撃を受ける前にリスクを排除することが可能です。

 

予防策③WAFなどのセキュリティツールを導入する

サイバー攻撃の多くは、インターネットを介して行われます。ネットワーク通信の段階でそれらを検知・遮断するためには、専用のセキュリティツールを導入することが効果的です。なかでも「WAF(Web Application Firewall)」は、Webアプリに対する代表的な防御手段として注目されています。

WAFとは、Webアプリへの通信内容を常時監視し、攻撃を検出・防御するための専用セキュリティツールです。たとえば、ユーザーの入力内容に不正なSQLの命令が含まれている場合、WAFがその異常を見つけ出し、通信がWebサーバーへ届く前に遮断します。

WAFにはソフトウェア型やクラウド型など多くの種類がありますが、最新の脅威に対応しやすい点ではクラウド型がおすすめです。セキュリティ対策の「最後の砦」として、導入を検討するとよいでしょう。

 

まとめ

SQLインジェクションは、企業のWebシステムに深刻な被害をもたらすサイバー攻撃です。対策が不十分だと情報漏えいやデータの改ざん・削除といった被害を引き起こし、信頼の失墜や金銭的損失につながります。

SQLインジェクション攻撃からWebシステムを守るためには、プレースホルダやエスケープ処理による技術的な対策が不可欠です。また、動作環境の定期的なアップデートや脆弱性診断ツールによる定期的なチェック、WAFの導入といった総合的な対策も欠かせません。

クラウド型WAF「Cloudbric WAF+」は、最新の脅威に対応しながらWebシステムを保護できるセキュリティプラットフォームです。SQLインジェクションを含む幅広い攻撃への備えとして、導入を検討してみてはいかがでしょうか。

 

▼企業向けWebセキュリティ対策なら、クラウド型WAFサービス「Cloudbirc WAF+」

▼Cloudbricの製品・サービスに関するお問い合わせはこちら

 

Web攻撃と脆弱性

【必見】最新版!Web攻撃と脆弱性について10のパターンを紹介!

近年、Webサイトを対象とした悪意のある攻撃者からのサイバー攻撃が後を絶ちません。ペンタセキュリティ株式会社とクラウドブリック株式会社が共同で公開した2021年第2四半期のWeb脆弱性トレンド情報によると、Web脆弱性発生件数は上昇傾向にあり、2021年6月は70件が発生しました。Webアプリケーションの脆弱性を狙った攻撃が巧妙化し、セキュリティ対策の必要性はますます高まっています。 そのため、Webアプリケーションを利用したサービス提供をしているのなら、最新のWeb攻撃の動向や事例は、知っておくべきでしょう。

 本記事では、Webアプリケーションの脆弱性を狙ったWeb攻撃の動向や事例についてまとめました。

Web攻撃動向レポートのダウンロードはこちら

 

最新版!Web攻撃と脆弱性10選

Webアプリケーションとは、インターネット上で稼働するシステムの総称で、主に、Webサーバー上で動作し、ChromeなどのWebブラウザで操作します。それに対して、スマートフォンなどの端末やパソコンにインストールして利用するアプリケーションはネイティブアプリケーションと呼んでいます。ちなみに、これらの2つの大きな違いは、利用する際にインターネットアクセスの有無で、一般的には、Webアプリケーションはインターネットへアクセスする必要があるため、攻撃者からのサイバー攻撃に遭遇する危険性が伴います。 

それでは、最新のWebアプリケーションへ主に発生する10のWeb脆弱性について詳しく見てみましょう。

  • クロスサイトスクリプティング
  • サービス運用妨害(DoS)
  • メール不正中継
  • バッファオーバーフロー
  • 強制ブラウズ
  • ディレクトリトラバーサル
  • コマンドインジェクション
  • SQLインジェクション
  • URLパラメータの改ざん
  • ファイルアップロード

過去のWebアプリケーション脆弱性についての記事は、こちらをご覧ください。

 

クロスサイトスクリプティング(XSS攻撃)

「クロスサイトスクリプティング」とは、悪意のあるスクリプトが挿入されたWebサイト(ページ)を直接的なターゲットとしているのではなく、サイト利用者・閲覧者をターゲットとした攻撃のことです。例えば、攻撃者が悪意のあるスクリプトを埋め込み、それを利用者が閲覧し実行してしまった場合、利用者は偽サイトに移動(クロスサイト)してしまいます。

クロスサイトスクリプティングは、Webアプリケーションへ主に発生するWeb攻撃(脆弱性)の1つとされており、それに気付かずに情報を入力してしまい、フィッシング詐欺やセッションハイジャックに遭う危険性があります。

 

サービス運用妨害(DoS攻撃) 

「サービス運用妨害」とは、処理に時間のかかるアルゴリズムを採用しているなどの脆弱性を狙ったWeb攻撃です。一般的には、Webアプリケーションへ主に発生するWeb攻撃に起因することから、DoS攻撃とも呼ばれています。例えば、Webサーバーに対して通常の範囲を超えたアクセスメール送信などを行い、メモリやCPUを全稼働させて処理速度を低下させます。

 また最近、DoS攻撃の進化版でもあるDDoS攻撃(不正な方法で乗っ取った複数のマシンを使ったDoS攻撃)の攻撃・被害件数も増加傾向がみられます。

 

メール不正中継

メールサーバ(SMTP)はメールが送られてきた際、自身のドメイン宛てのメールではなかった場合、別のメールサーバに転送します。そして、この機能を利用して攻撃者が他人のサーバを使い、送信元の身元が分からない大量の迷惑メールを送信する攻撃のことを「メール不正中継」と呼びます。Webアプリケーションへ発生するWeb攻撃のポイントとしては、主に下記の2つがあります。

  • 使用している電子メール配送プログラムに、メール中継に関する制限を設定していない
  • そもそも設定がないなどの脆弱性がある

これらの脆弱性により、メール不正中継などのサイバー攻撃を受けてしまう危険性があります。

また、攻撃者から大量の迷惑メールが送られてくることで、サーバが本来必要のないメール配信処理をすることになり、提供しているWebアプリケーションを利用したサービスに影響が出ます。

 

 バッファオーバーフロー

「バッファオーバーフロー」とは、データの受け取りや保管のために用意された領域(バッファ)に想定以上の長さのデータを書き込んでしまうが原因で発生するWebアプリケーションにおけるWeb攻撃のことです。溢れたデータが隣接する領域を不正に書き換えてしまったり、それによって動作異常が発生したりします。

 バッファオーパーフローは、典型的なWebアプリケーションの脆弱性の1つで、攻撃者が外部から故意に想定よりも膨大なデータを送り込んでプログラムを異常終了させたり、攻撃用のコードを送り込んで実行させたりするということです。

 

強制ブラウズ

利用しているWebアプリケーションに、URLへのアクセスを適切に制御していない脆弱性がある場合、「強制ブラウズ」という攻撃に遭遇する危険性があります。強制ブラウズとは、Webページ上からリンクを辿るのではなく、アドレスバーからURLを直接入力して本来システム側では公開していないはずのディレクトリやファイルなどにアクセスを試みること、つまり、強制的にブラウザに表示させられてしまいます。

  • ディレクトリの配置ミス
  • ファイルの配置ミス
  • Webサーバの設定ミス

Webアプリケーションにおける矯正ブラウズの脆弱性発生の原因としては、主に、上記3つが挙げられます。

 

ディレクトリトラバーサル

「ディレクトリトラバーサル」とは、「../」のような文字列を使ってサーバのディレクトリ・パスを遡る攻撃のことです。Webサーバに置いたままにしている非公開ファイルにアクセスし、そこに保存されている情報を盗まれる危険性があります。

Webアプリケーションを利用して目的のデータを表示させるようなサービスを提供しているサイトに入力される可能性のあるデータに対する考慮不足があった場合、ディレクトリトラバーサルの被害に遭遇する危険性が伴います。

 

コマンドインジェクション

「コマンドインジェクション」とは、コマンド(コンピュータの利用者がOSのシェルに与える文字列による命令のこと)を利用し、Webアプリケーションの脆弱性を悪用する攻撃です。WebアプリケーションのコードにOSコマンドの呼び出し処理があり、ユーザーが入力したデータがコマンドの一部分を構成している場合に発生します。

  • 攻撃者がWebサーバ内に保存されているファイルを読み出す
  • システムに関係する操作、プログラムを不正に実行することが可能
  • 情報漏洩だけでなく、サーバー自体が乗っ取られてしまう危険性がある

コマンドインジェクションによって、上記のような危険性が伴います。

 

SQLインジェクション

「SQLインジェクション」とは、データベース言語(SQL)を利用して、Webアプリケーションの脆弱性を悪用する攻撃のことをいいます。コマンドインジェクションと同様に、攻撃者がWebサーバ内に保存されているファイルを読み出したり、システムに関係する操作、プログラムを不正に実行されたりします。

ユーザIDとパスワードを入力するサイトで、入力情報がアプリケーション内部でSQL文として解釈されてしまう脆弱性がある場合に、被害を受けてしまうため注意が必要です。

 

URLパラメータの改ざん

URLパラメータとは、URLにパラメータというプログラムを付け加えたシステムのことです。URL末尾に「?」が付け加えられ、「?」以降の文字列がパラメータとなります。

 このURLに付加されるパラメータ(URLパラメータ)をアドレスバーから直接改ざんして、不正アクセスを行う攻撃が「URLパラメータの改ざん」の手口で、Webサイトが改ざんされたり、Webサーバが誤動作するようにされてしまいます。

 

ファイルアップロード

「ファイルアップロード」とは、攻撃者がWebシェル(悪意のあるプログラム)をアップロードして、悪意のあるスクリプトを注入することです。Webサーバーなどに意図しない動作を引き起こさせたり、情報を抜き出されたりします。ファイルのアップロード機能のあるページの脆弱性を衝いてくる攻撃です。

 

Web攻撃による脆弱性に関する事例を紹介!

当社の「EDB/CVEレポート」で公開している通り、2021年第2四半期(4・5・6月)の脆弱性件数は合計169件でした。

ここでは、2021年第2四半期に脆弱性が観察されたWebアプリケーションの事例として、WordPress事例を紹介します。WordPressとは、Webサイトやブログを簡単に作成できるアプリケーションのことで、Webアプリケーションに起因するシステムの脆弱性により、Web攻撃を受けやすいことが特徴です。しかし、インターネット上の40.0%以上のサイト・ブログでWordPressが採用されていることを受け、WordPressの脆弱性を突いたサイバー攻撃が後を絶ちません。

2021年第2四半期で発生した、サイバー攻撃の手口といえばクロスサイトスクリプティングとSQLインジェクション。しかし、WordPressの事例では、ファイルアップロードなども確認されています。

概要について、下表にまとめました。

日付 脆弱性カテゴリ 脆弱性名
2021.5.19 クロスサイトスクリプティング WordPress Plugin Stop Spammers 2021.8 – ‘log’ Reflected Cross-site Scripting (XSS)
2021.5.24 クロスサイトスクリプティング WordPress Plugin ReDi Restaurant Reservation 21.0307– ‘Comment’ Stored Cross-Site Scripting (XSS)
2021.5.25 クロスサイトスクリプティング WordPress Plugin Cookie Law Bar 1.2.1 – ‘clb_bar_msg’ Stored Cross-Site Scripting (XSS)
2021.5.28 クロスサイトスクリプティング WordPress Plugin LifterLMS 4.21.0 – Stored Cross-Site Scripting (XSS)
2021.6.1 クロスサイトスクリプティング WordPress Plugin WP Prayer version 1.6.1 – ‘prayer_messages’ Stored Cross-Site Scripting (XSS) (Authenticated)
2021.6.7 ファイルアップロード WordPress Plugin wpDiscuz 7.0.4 – Arbitrary File Upload (Unauthenticated)
クロスサイトスクリプティング WordPress Plugin Smart Slider-3 3.5.0.8 – ‘name’ Stored Cross-Site Scripting (XSS)
2021.6.8 ファイルアップロード WordPress Plugin wpDiscuz 7.0.4 – Remote Code Execution (Unauthenticated
2021.6.9 クロスサイトスクリプティング WordPress Plugin visitors-app 0.3 – ‘user-agent’ Stored Cross-Site Scripting (XSS)
2021.6.23 SQLインジェクション WordPress Plugin Poll_ Survey_ Questionnaire and Voting system 1.5.2 – ‘date_answers’ Blind SQL Injection
クロスサイトスクリプティング WordPress Plugin WP Google Maps 8.1.11 – Stored Cross-Site Scripting (XSS)
2021.6.28 クロスサイトスクリプティング WordPress Plugin YOP Polls 6.2.7 – Stored Cross Site Scripting (XSS)

なかには、深刻度が緊急(Critical)および重要(High)の指標も存在し、悪用された場合、第3者に遠隔から任意のコードを実行される危険性(RCE)もあります。Web脆弱性が確認される度に修正はされていますが、今後も注意が必要です。

 

まとめ

今回は、Webアプリケーションへ主に発生するWeb脆弱性の種類と事例について解説してきました。攻撃者はさまざまな巧妙な手口で、Webアプリケーションへの攻撃(脆弱性)を狙ってきます。また、WordPressなどのWebアプリケーションはとても便利ですが、脆弱性については数多く報告されています。そのため、脆弱性を狙った攻撃から守るためにも、Webセキュリティは最新の状態に更新しておきましょう。

最新のWeb脆弱性の情報はこちらからご確認ください。

Web攻撃動向レポートはこちら

 

▼WAFをはじめとする多彩な機能がひとつに。企業向けWebセキュリティ対策なら「Cloudbirc WAF+」

▼製品・サービスに関するお問い合わせはこちら

securiy report

今でも続くWebアプリケーションへの攻撃!JPCERT/CCの最新レポートから読み解く攻撃手法を解析

10月15日、一般社団法人 JPCERTコーディネーションセンター(JPCERT/CC)が、2020年第2四半期のインシデント報告対応レポートを発表しました。国内外で発生するコンピューターセキュリティインシデントの報告をとりまとめたもので、今回は2020年7月1日~9月30日までの間に受け付けたインシデント報告の統計および事例について紹介されています。それによると、今期のインシデント件数は8386件で、前四半期の約1.2倍へと拡大しています。またフィッシング攻撃やWebサイトの改ざん、マルウェアサイトなどで増加が見られたということです。今回はこのレポートを基に、今危機感を持つべきWebサイトへの攻撃への高まりとは具体的に何か、その対処法はあるのかを重点においてお届けしていきたいと思います。

 

インシデント報告対応レポート統計

JPCERT/CCは、インターネット利用組織におけるインシデントの認知と対処、インシデントによる被害拡大の抑止に貢献することを目的として活動しています。今回発表されたレポートの統計についてまとめてみました。

インシデント報告関連件数

引用:JPCERT/CC

 こちらの図に示されているWebフォーム、メール、FAX等でJPCERT/CCに寄せられた報告の総件数は13,831件で、前四半期の1万416件から33%増加しています。JPCERT/CC が国内外の関連するサイトとの調整を行った件数は 4,807件で、前年比で調整件数は14%増加しました。

インシデントのカテゴリーごとの内訳

引用:JPCERT/CC

 インシデントの内訳を見ると、「フィッシングサイト」が5845件で前四半期から11%増加しています。7月は1842件、8月は1849件、9月は2154件と後半にかけて増加傾向が見られます。今期気になるのは、「サイト改ざん」と「スキャン」行為といったWebサイトを狙った攻撃の増加です。「サイト改ざん」は374件で、前四半期の291件から増加、「スキャン」行為も1380件で、前四半期の982件から拡大しています。その他「マルウェアサイト(158件)」「標的型攻撃(16件)」といった攻撃も前期を上回っています。

 

Webサイトを狙った攻撃の増加

JPCERT/CCのレポートに基づいたWebサイトを狙った攻撃の増加には主に、「サイト改ざん」と「スキャン」がありました。これらについて具体的に解説していきたいと思います。

サイト改ざん

Webサイト改ざんとは、企業などが運営する正規Webサイト内のコンテンツやシステムが、攻撃者によって意図しない状態に変更されてしまう攻撃です。攻撃者がWebサイトを改ざんする際の攻撃手法としては主に脆弱性攻撃による改ざん、管理用アカウントの乗っ取りによる改ざん、パスワードリスト攻撃の3種類があります。

1. 脆弱性攻撃による改ざん

  • Webサーバ上の脆弱性を攻撃することにより、最終的に改ざんを実現します。
  • 脆弱性の利用方法として、SQLインジェクション、Stored XSS、などの脆弱性攻撃により直接コンテンツの改ざんを行う方法と、脆弱性攻撃によりバックドアを設置するなどして遠隔操作で改ざんを行う方法の2つがあります。
  • 主に、サーバOS、Webサーバ、CMS、管理ツールなどのミドルウェアの脆弱性が狙われます。

改ざんの手口のうち、サーバーソフトウェアの脆弱性攻撃は、サーバ上で動いているCMS(コンテンツマネジメントシステム)やサービスの脆弱性を狙われるものです。例えばブログや簡易な企業サイトで使われているWordPress、Joomla!、Movable Type、XOOPSといったCMSの脆弱性がよく狙われています。

また「SQLインジェクション」攻撃もよく使われる手法です。セキュリティの対策が十分でないウェブサイトに、サイト内を任意のキーワードで検索できるフォームがあるとします。攻撃者がそのフォームへ不正な内容を盛り込んだSQL文を入力し検索を行うことで、そのSQL文の内容が実行されてしまうのです。これにより、本来は隠されているはずのデータが奪われてしまったり、ウェブサイトが改ざんされてしまったりします。攻撃者がウェブサイトに対してSQLインジェクション攻撃をしかけることで、不正なSQLの命令が実行されてしまい、ウェブサイトを利用者するユーザーのID・パスワード・クレジットカードの番号をはじめとした個人情報がすべて奪われてしまう可能性があります。

2. 管理用アカウントの乗っ取りによる改ざん

  • Webサーバにリモートアクセス可能な管理用アカウントの情報を窃取して乗っ取り、正規の方法でWebサイト操作を行って改ざんします。
  • 正規のWebサイト操作方法により改ざんが行われるため、被害に気づきにくい特徴があります。

正規のWebサイトに攻撃を仕掛け、中身を改ざんする手法ですが、その目的は、Webサイトにコンピューターウイルスを仕込んで閲覧者に感染させることです。以前は、いたずら目的でのWebサイトの改ざんが多く見られましたが、最近では、金銭が目的の被害が増えています。自社のサイトがこのような改ざん被害にあって、逆に顧客に被害を与える「加害者」になれば失墜する信頼は計り知れないものとなるでしょう。

3. パスワードリスト攻撃

  • パスワードリスト攻撃とは、攻撃対象となるWebサイトではない別のWebサイトから搾取したユーザー情報を使い、攻撃対象となるWebサイトで不正ログインを試みるサイバー攻撃です。
  • アカウントIDやパスワードをすべて別々に管理することが面倒なため、管理者PCや複数のWebサイトで同じアカウントIDやパスワードを使用しているケースがあります。

パスワードリスト攻撃とは、オンラインサービス等への不正ログインを狙った不正アクセス攻撃の一です。不正ログインのためにIDとパスワードがセットになったリストを利用することから本名称となっています。パスワードリスト攻撃を受けたとなると、Webサービスに対するユーザーからの印象が著しく低下します。「リスト型攻撃は他のウェブサービスから入手したアカウントとパスワードを使って不正アクセスする攻撃だ。ユーザーのアカウントとパスワードの管理の問題だ。」という見解の方もいらっしゃるでしょう。しかし、ユーザーの視点では「不正アクセスを許して個人情報の流出があったサービス」のように見えてしまうのです。

スキャン

スキャン攻撃とは、サイバー攻撃者が、攻撃先を探すために行うポートスキャンです。脆弱性の探索や侵入、感染の試行などを検知した件数が今回のレポートで増加し、警告されています。ポートスキャン自体は、サーバなどに対して稼働しているサービスを探り、開放されているポートを調べる行為で違法なものではありません。しかし、攻撃の事前準備として行われることが多いため、日常から適切な対処が必要となります。サイバー攻撃の手口は年々巧妙化していますが、システムの脆弱性を突くのが攻撃の基本となります。その脆弱性を見つけ出すためにポートスキャンは使われるのです。例えば、空いているポートがわかれば、そのポートを侵入経路として利用することができます。またサーバのOSやバージョンがわかれば、OSに依存する脆弱性を突くことができるのです。ポートスキャンも同様に、これ自体はサイバー攻撃ではなくても、これから被害が発生するかもしれないサイバー攻撃の予兆としてとらえることが重要です。

 

WAFで防御できること

こうした警鐘をならされているWebサービスへの攻撃の増加に対し、有効なのがWAFを用いた防御システムです。例えばWAFで防御できることには以下の様な項目があります。

  • SQLインジェクション
  • クロスサイトスクリプティング(XSS)
  • クロスサイトリクエストフォージェリ(CSRF)
  • OSコマンドインジェクション
  • ディレクトリリスティング
  • メールヘッダインジェクション
  • パス名のパラメータの未チェック/ディレクトリトラバーサル
  • 意図しないリダイレクト
  • HTTPヘッダインジェクション
  • 認証とセッション管理の不備
  • 認可制御の不備、欠落
  • クローラへの耐性

Webアプリケーションに関する脅威をブロックできるのが「WAF」です。WAFを使えばWebアプリケーションに脆弱性があったとしても安全に保護することができます。最近となっては、システムのクラウドへの移行という傾向もあり、クラウド型WAFが注目を集めています。従来のアプライアンス型WAFと比べ、専門の機器の導入やセキュリティ担当者による運用が必要ありません。そのため、リーズナブルな価格で短期間で導入できるといったメリットがあります。クラウド型セキュリティ・プラットフォーム・サービス「クラウドブリック(Cloudbric)」はWAF(Web Applicaion Firewall)サービスに加え、DDoS攻撃対策、SSL証明書、脅威情報データベースに基づく脅威IP遮断サービス、ディープラーニング(AI)エンジンによるWebトラフィック特性学習サービス、といったWebアプリケーションを守るトータル・セキュリティサービスを提供します。

Webアプリケーションを業務で利用するときは、セキュリティ上の脆弱性に注意しなくてはいけません。アプリケーションの開発者がセキュリティ対策を行っていても、人の手で作成されているため、脆弱性を完全になくすのは難しいでしょう。WAFはWebアプリケーションを保護する専用のファイアウォールのため、導入することでWebアプリケーションを安全に利用できます。
今現在、JPCERTのレポートからもわかるようにWebアプリケーションやサービスへの攻撃は劣えてはいません。それらの攻撃に備え、防御するにはWAFを導入することが望ましいといえます。
クラウド型セキュリティ・プラットフォーム・サービス「クラウドブリック(Cloudbric)」につきまして、詳しくは下記リンク先をご確認ください。

https://www.cloudbric.jp/cloudbric-security-platform/