叡智の三猿

~情報セキュリティで森羅万象を捉える~

SQLインジェクションとは

攻撃者(ブラックハッカー)はネットに存在する個人情報を狙うでしょう。そして、会社のCRMシステムは顧客情報を扱っていることから、攻撃者のターゲットになりやすいと思います。

個人情報を狙う方法はいろいろですが、入力値を用いてSQL文を組み立てるアプリケーションの脆弱性を突いた攻撃をSQLインジェクションと言います。

SQLインジェクションはデータベースにある情報を一気に盗む方法です。

正常なログインで実行されるSQL文を確認します。下図では顧客テーブルに格納された情報から、指定した名前とパスワードに合致する顧客情報をすべて返す構文です。*(アスタリスク)は該当するすべての情報を表します。また、鈴木と123456は、'鈴木' や'123456'という風に、文字列をシングルクォーテーションで囲います。この結果として、鈴木さんの顧客情報が返ってきます。

f:id:slowtrain2013:20210502231239p:plain
通常のSQL

次にSQLインジェクションの構文は下図です。ここで、名前の検索条件を見ると、''(シングルクォーテーション)がふたつ入ります。これは、名前が空ということになります。続いてor(もしくは)が入ります。そして、次に 1=1 が入ります。これを合わせると、名前の検索条件は、「空もしくは1=1」となります。1=1は当たり前です。そのあとに続く、--はコメントと認識され、後の条件は無視されます。したがって、このSQL文はすべての顧客情報を選択することとなります。

f:id:slowtrain2013:20210503010459p:plain
SQLインジェクション

アプリケーションに脆弱性があると、Webサイトの検索欄を使って、SQLインジェクションが成功してしまう可能性があります。実際にSQLインジェクションの被害例は多く、Webアプリケーションを狙う攻撃の半分はSQLインジェクションともいわれます。

企業が導入しているCRMの肝となる顧客情報がネットのなかで、危険な状態にさらされている可能性があります。

企業は顧客情報を有効活用して、CRMによる経営革新を成功させたいと考えています。それと同時に顧客情報を扱う企業は、大切な個人情報を適切に扱う必要があります。個人情報保護法は、個人の権利として、個人情報を取り扱う事業者が、個人情報の利用目的を通知すること。本人からの求めに応じて、個人情報の開示・訂正・利用停止を行うことを定めています。

個人情報保護の原則となったガイドラインが、1980年にOECD経済協力開発機構)から公表された「プライバシー保護と個人データの国際流通についてのガイドラインに関するOECD理事会勧告(通称、OECD8原則)」です。

OECD8原則

  1. 収集制限の原則:個人データは、適法・公正な手段により、かつ情報主体に通知または同意を得て収集されるべきである。
  2. データ内容の原則:収集するデータは、利用目的に沿ったもので、かつ、正確・完全・最新であるべきである。
  3. 目的明確化の原則:収集目的を明確にし、データ利用は収集目的に合致するべきである。
  4. 利用制限の原則:データ主体の同意がある場合や法律の規定による場合を除いて、収集したデータを目的以外に利用してはならない。
  5. 安全保護の原則:合理的安全保護措置により、紛失・破壊・使用・修正・開示等から保護するべきである。
  6. 公開の原則:データ収集の実施方針等を公開し、データの所在、利用目的、管理者等を明示するべきである。
  7. 個人参加の原則:データ主体に対して、自己に関するデータの所在及び内容を確認させ、または異議申立を保証するべきである。
  8. 責任の原則:データの管理者は諸原則実施の責任を有する。

OECD8原則の要点を認識しておくことは、自分の個人情報を事業者が適正に扱っているかを評価する上で、意味あることです。