株式会社サンリオエンターテイメントは6月5日、同社WebサイトにSQLインジェクションを利用した外部からの不正アクセスがあり、同社保有のピューロランドファンクラブ会員もしくは仮会員登録者の一部のメールアドレスが流出した可能性を確認したと発表した。(記事はこちら)
Webサイトに脆弱性があり、会員情報が流出した可能性があるということです。多発するWebサイトからの個人情報漏洩について、その原因と対策について説明します。
今回、不正アクセスの原因となった脆弱性はSQLインジェクションです。SQLインジェクションとは、ユーザからの入力された文字列をSQL文の一部として処理する際に、開発者が意図したSQL文とは別の処理が行われるように、攻撃者がSQL文自体を挿入することができる脆弱性です。データベースと連携するすべてのシステムで発生する可能性があります。
流出した可能性があるのは46,421件のメールアドレスで、氏名、住所、生年月日、クレジットカード情報は含まれていないということです。直接的な被害は考えられないものの、フィッシングやリスト型攻撃などの二次被害が発生する可能性があるため、会員に対して不審なメールを受信した場合は、メールおよび添付ファイルの開封を控えるようにと呼び掛けられています。また、同社では本件に関して警視庁へ相談するとともに、Webサイトの安全性を再検証し、開発管理体制の強化を実施しているということです。
先ほど、SQLインジェクションは「攻撃者がSQL文自体を挿入することができる脆弱性」と説明しました。具体的に、どのようなSQL文を挿入できるかについて説明します。
まず、まったく別のSQL文を挿入することができます。これは「複文」と呼ばれる機能で、システムで使われているデータベースの種類によって利用できる場合があります。複文が利用できる環境でSQLインジェクションが発生した場合、その被害は甚大になります。
また、SQL文が実行される条件を変更することができます。例えば「IDとパスワードが一致」という条件が満たされると「ログイン」という処理が実行されるSQL文が書かれていたとします。条件を変更できるということは「IDとパスワードが一致」を「IDとパスワードが不一致」に書き換えられるということです。つまり、SQLインジェクションによってパスワードがわからなくてもログインできてしまうことになります。
その他には、挿入するSQL文を巧妙に作りこむことによって、データベースの情報が読み取られるだけではなく、Webサイトにマルウェアを埋め込んだり、サーバで任意のコマンドが実行される可能性もあります。実際に被害が発生するには前提条件が必要ですが、SQLインジェクションが発生すると、総じて被害は甚大になることが多いと考えます。
SQLインジェクションの対策は、プレースホルダの利用とエスケープ処理が有効です。少し技術的な内容となりますが、それぞれについて説明します。
最も有効なSQLインジェクション対策のひとつです。プレースホルダとは、あらかじめ用意されたSQL文に対して、値を挿入する場所を確保することです。プレースホルダで確保された場所はあくまでも「値」として処理されるため、後からSQL文が挿入されることはありません。プレースホルダへ実際の値を割り当てる処理をバインドといいます。特にデータベースエンジン側で値を割り当てる「静的プレースホルダ」は原理的にSQLインジェクションの可能性がなくなるため、特に有効であるとされています。
ユーザの入力値と文字列連結させてSQL文を組み立てる必要がある場合は、特殊な意味を持つ文字列に対してエスケープ処理を行います。例えば「’(シングルクォート)」や「\(バックスラッシュ)」などが入力された場合は、SQL文の一部として処理されないように別の文字へ置き換えるなどのエスケープ処理を行います。ただし、すべてのエスケープすべき文字列をもれなく洗い出すことが難しい場合はプレースホルダの利用が推奨されています。
SQLインジェクションはWebアプリケーションだけでなく、データベースと連携するすべてのシステムで発生する可能性があります。特に、社内利用を前提とした業務アプリのクラウド化でシステムをインターネットへ公開することにより、SQLインジェクションのリスクが顕在化することがあります。コロナ禍による在宅勤務もそうですが、情報資産が移動する場合はセキュリティリスクを再分析することが必要です。
今日の10分セキュリティラジオにて毎週月・水・金にセキュリティの最新ニュースを取り上げ解説を行っています。隙間の時間の情報収集にぜひお役立てください!
お見積り・ご相談など、お気軽にご相談ください
サイトTOPへ