2007年7月12日 掲載
A社Eコマース事業部ショッピング担当N氏は、今日も日課の自社コンテンツのメンテナンス中。
A社ではユーザ情報、履歴などをデータベースに保管していました。
「お宅の会社の顧客情報がインターネットの掲示板で見られるようになっていますよ。」
「顧客情報が流出?」
「困ったな。研究所の博士に聞いてみよう。」
「どうして顧客情報が流出したんですか?」
「ウェブアプリケーションの脆弱性を悪用されたようじゃな。」
“脆弱性”=ソフトウェア等におけるセキュリティ上の弱点
「脆弱性って…
不正アクセス等への対策はサーバホスティング業者でやってくれていますよね?」
“SQL”=Structured Query Language
「SQLインジェクション?」
“インジェクション”=“挿入する(injection)”の意味
「なぜこんなことが起きてしまうんですか?」
「例えば、SQL文で文字列を囲むための記号であるシングルクォート「’」に続いて、
「個人情報を表示」といった悪意を持って細工された問合わせ命令文が、ウェブサイトに送られたとしよう。」
「個人情報を盗んでやる!」
「SQLインジェクションに対するセキュリティ実装が正しく行われている場合には、このシングルクォート「’」は、問合わせ命令文の中の普通の文字(「個」「人」・・・「示」)として処理されるんじゃな。」
「残念!」
「ただし、セキュリティ実装が正しく行われていないと、シングルクォート「’」に続く「個人情報を表示」という問合わせ命令文がそのまま、データベースへの命令として実行されてしまうんじゃよ。」
個人情報の漏洩以外の脅威も存在します。
「つまり、ここにこういう入力をしてこういうことをすると…。」
「うわ、見られた!」
自身で管理していないウェブサイトに対する攻撃は、不正アクセス禁止法などの法律に触れる可能性があります。
「対策は、IPAのウェブサイトの脆弱性ごとの対策ページを参照するのじゃ。」