セキュリティ用語:SQLインジェクションとは?

「セキュリティに対する重要性は理解したけれど、用語が難しくて」という声を聞くことがよくあります。そんな方にセキュリティの頻出用語を解説します。
今回は、「SQLインジェクション」についてです。

SQLインジェクションは、Webアプリケーションに対する攻撃手法の1つです。

20160824_fotolia_110478242_subscr_2

SQLインジェクションのSQL(エスキューエル。欧米ではシークェルと発音することが多い)とは、リレーショナルデータベースに対して、データを追加、削除するなどの操作を行うための言語です。リレーショナルデータベースで著名なオラクルデータベース、MS SQL Server、MySQL、PostgreSQLなどを操作するためには、SQLを利用します。インジェクションとは、英語ではInjectionであり、「注入」という意味です。 

SQLインジェクションとは、データを不正に取得するなど悪意を持ったSQL文を注入され(埋め込まれて)、データベースを不正に操作されることをいいます。

インターネット上でWebサイトを利用したサービスの提供が一般的になっています。一般消費者向けサイトでは、例えば、ログインID、パスワード、クレジットカード情報など重要な個人情報が入力、保存していることが多くあります。また、企業向けのシステムにおいても、受発注情報などのビジネス上大切な情報が保存されていることも珍しくありません。

これらの情報は、通常データベースに保存されており、ウェブからの命令によって適切な情報が引き出されたり、あるいは修正されたりします。このとき、WebアプリケーションはSQLを利用します。

SQLインジェクションでは、このSQLを利用することを利用して、不正なSQL文を実行させることで個人情報などを入手します。また、SQLのストアドプロシージャ等を利用してOS コマンドの実行することで、システムの乗っ取りを図ったり、別のシステムへの攻撃に踏み台にすることも可能になります。

SQLインジェクション攻撃に対応するためには、アプリケーション開発の段階でSQLに特別な意味を持つ記号文字(「’」「;」など)に対して、素通しにさせないなどの「エスケープ処理」を実施するなど、安全なウェブサイトの構築が必要です。

独立行政法人 情報処理推進機構では、知見をまとめたガイドを公開しています。

[レポート]クラウド環境の現状レポートと今後 ~クラウドの安全性の状況と実用的ガイダンス

 マカフィーでは、1,400人のIT担当者に年次アンケートを実施し、クラウド採用状況やセキュリティについて調査しました。
 調査の結果、クラウドの採用とリスク管理への投資を増やしている組織がある一方で、クラウドの採用に慎重なアプローチをしている組織が多いことがわかりました。
 本調査では、クラウドサービスの利用状況を分類し、短期投資の確認、変化速度の予測、重要なプライバシーおよびセキュリティ上の障害物への対応方法の概要を示しています。

 本レポートでは、クラウドの現状把握と今後の方向性、クラウド対応の課題やポイントを理解することができます。

<掲載内容>
■ 主要調査結果
■ 調査結果から言える方向性
■ 課題への対応
■ 変化への対応力
■ 考慮すべき点:安全なクラウドの採用で事業を加速