サービスに関する
お問い合わせ

緊急対応 専用窓口

セキュリティの緊急事態が発生したらご遠慮なくお問い合わせください。ご相談は無料です。

セキュリティの
学び場

SHIFT SECURITY セキュリティの学び場 ニュース解説 SQLインジェクション脆弱性を解説|サンリオWebサイトにSQLインジェクション攻撃、会員メールアドレスが流出

SQLインジェクション脆弱性を解説|サンリオWebサイトにSQLインジェクション攻撃、会員メールアドレスが流出

ニュース解説
目次
  • 今回の解説ニュース
  • SQLインジェクション脆弱性ーどのようなSQL文を挿入できてしまうのか
  • SQLインジェクションの対策

今回の解説ニュース

サンリオWebサイトにSQLインジェクション攻撃、会員メールアドレスが流出

株式会社サンリオエンターテイメントは6月5日、同社WebサイトにSQLインジェクションを利用した外部からの不正アクセスがあり、同社保有のピューロランドファンクラブ会員もしくは仮会員登録者の一部のメールアドレスが流出した可能性を確認したと発表した。(記事はこちら)


【お届けするニュースはサイバーセキュリティ専門ニュースサイト「ScanNetSecurity」の提供でお送りしています。】

Webサイトに脆弱性があり、会員情報が流出した可能性があるということです。多発するWebサイトからの個人情報漏洩について、その原因と対策について説明します。

今回、不正アクセスの原因となった脆弱性はSQLインジェクションです。SQLインジェクションとは、ユーザからの入力された文字列をSQL文の一部として処理する際に、開発者が意図したSQL文とは別の処理が行われるように、攻撃者がSQL文自体を挿入することができる脆弱性です。データベースと連携するすべてのシステムで発生する可能性があります。

流出した可能性があるのは46,421件のメールアドレスで、氏名、住所、生年月日、クレジットカード情報は含まれていないということです。直接的な被害は考えられないものの、フィッシングやリスト型攻撃などの二次被害が発生する可能性があるため、会員に対して不審なメールを受信した場合は、メールおよび添付ファイルの開封を控えるようにと呼び掛けられています。また、同社では本件に関して警視庁へ相談するとともに、Webサイトの安全性を再検証し、開発管理体制の強化を実施しているということです。

SQLインジェクション脆弱性ーどのようなSQL文を挿入できてしまうのか

先ほど、SQLインジェクションは「攻撃者がSQL文自体を挿入することができる脆弱性」と説明しました。具体的に、どのようなSQL文を挿入できるかについて説明します。

まず、まったく別のSQL文を挿入することができます。これは「複文」と呼ばれる機能で、システムで使われているデータベースの種類によって利用できる場合があります。複文が利用できる環境でSQLインジェクションが発生した場合、その被害は甚大になります。

また、SQL文が実行される条件を変更することができます。例えば「IDとパスワードが一致」という条件が満たされると「ログイン」という処理が実行されるSQL文が書かれていたとします。条件を変更できるということは「IDとパスワードが一致」を「IDとパスワードが不一致」に書き換えられるということです。つまり、SQLインジェクションによってパスワードがわからなくてもログインできてしまうことになります。

その他には、挿入するSQL文を巧妙に作りこむことによって、データベースの情報が読み取られるだけではなく、Webサイトにマルウェアを埋め込んだり、サーバで任意のコマンドが実行される可能性もあります。実際に被害が発生するには前提条件が必要ですが、SQLインジェクションが発生すると、総じて被害は甚大になることが多いと考えます。

SQLインジェクションの対策

SQLインジェクションの対策は、プレースホルダの利用とエスケープ処理が有効です。少し技術的な内容となりますが、それぞれについて説明します。

プレースホルダの利用

最も有効なSQLインジェクション対策のひとつです。プレースホルダとは、あらかじめ用意されたSQL文に対して、値を挿入する場所を確保することです。プレースホルダで確保された場所はあくまでも「値」として処理されるため、後からSQL文が挿入されることはありません。プレースホルダへ実際の値を割り当てる処理をバインドといいます。特にデータベースエンジン側で値を割り当てる「静的プレースホルダ」は原理的にSQLインジェクションの可能性がなくなるため、特に有効であるとされています。

エスケープ処理

ユーザの入力値と文字列連結させてSQL文を組み立てる必要がある場合は、特殊な意味を持つ文字列に対してエスケープ処理を行います。例えば「’(シングルクォート)」や「\(バックスラッシュ)」などが入力された場合は、SQL文の一部として処理されないように別の文字へ置き換えるなどのエスケープ処理を行います。ただし、すべてのエスケープすべき文字列をもれなく洗い出すことが難しい場合はプレースホルダの利用が推奨されています。

SQLインジェクションはWebアプリケーションだけでなく、データベースと連携するすべてのシステムで発生する可能性があります。特に、社内利用を前提とした業務アプリのクラウド化でシステムをインターネットへ公開することにより、SQLインジェクションのリスクが顕在化することがあります。コロナ禍による在宅勤務もそうですが、情報資産が移動する場合はセキュリティリスクを再分析することが必要です。

Voicyでニュース解説ラジオ配信中!

今日の10分セキュリティラジオにて毎週月・水・金にセキュリティの最新ニュースを取り上げ解説を行っています。隙間の時間の情報収集にぜひお役立てください!

この記事の著者 セキュラジチーム

話題になっているセキュリティニュースやセキュリティに関する疑問を専門家の解説と個性豊かなパーソナリティたちがお送りしています。1日10分で、気軽にセキュリティの知識を深めることができます。放送は月曜・水曜・金曜の朝7時15分。

\ 記事をシェアする /

サービスに関する
お問い合わせ