SQLインジェクション攻撃
概要
SQLインジェクションとは、ウェブサイト上のデータベースに対して不正な操作を行い、データベース内の情報を改ざんしたり、入手したりする攻撃を指す。一般的にSQLと呼ばれるデータベース用の言語を用いて、検索、追加、削除などの操作を行い、データベース内の情報が利用される。
多数の企業や組織のウェブサイトでは、データベースを利用したウェブアプリケーションが使われており、たとえばECサイト(ウェブサイト上で商品やサービスの販売を行うサイト)では、商品や顧客情報の管理はデータベースを用いたシステムで行われている。ウェブサイトを構築し、管理する上で、SQLインジェクションへの対策は必要不可欠と言われている。
SQLは、Structured Query Languageの略称であり、インジェクションは(不正な操作を)「注入する」という意味がある。
シーン
SQLインジェクションは古くから存在する攻撃手法だが、SQLインジェクションによる個人情報の漏えいが後を絶たない。
SQLインジェクションへの対策が行われていないウェブサイトでは、例として特定の会員専用の画面にログインするため、ログイン画面でパスワードの欄に不正なデータベース命令を実行するための文字列を入力することで、パスワードを知らない攻撃者が正当な利用者としてログインし、クレジットカード名義人名、住所、カード番号、有効期限、セキュリティコード等の個人情報を入手されるケースがある。
また、SQLインジェクションによって、ウェブサーバ上のファイルを書き換えることで、ウェブサイトが改ざんされてしまうケースもある。書き換えられたウェブサイトでは、サイトの訪問者には一見分からないような状態で、利用者を悪質なウェブサイトに誘導したり、ウイルスに感染させたりすることが多い。
気を付けるべきポイント
SQLインジェクションの対策を行ったとしても、ウェブアプリケーションで新たな脆弱性が攻撃者に発見された場合、攻撃の対象とされる可能性がある。そもそも、脆弱性を持つウェブサイトかどうかを、自社で管理、把握することは難しいとされる。
セキュリティに対するサービスを行う企業では、ウェブサイトの脆弱性診断を提供しているので、定期的に脆弱性の有無を診断しながら、必要な対策を講じる必要がある。また、ウェブサイトそのものへの対策だけではなく、WAF(Web Application Firewall)と呼ばれる、ウェブアプリケーションの通信を把握、管理することで、不正侵入を検知、防御する仕組みを持つ機器を導入することも有効な対策である。