本研究所では、日本と海外のIT技術およびその利用方法を比較し、両者の間にある格差について考えている。今回のテーマはセキュリティ、なかでもSQLインジェクションに注目してみたい。セキュリティに絶対はないという意識が日本には低すぎると思うからだ。

 個人がPCを利用する際に考慮すべきセキュリティ対策に関しては、「何らかのセキュリティソフトをインストールしておく」ということが世の中に浸透しつつある。しかし、これがおかしなもので、セキュリティソフトをインストールしておけば絶対大丈夫というわけではないのに、人々は安心してしまっている。セキュリティに“絶対はない”のだから、常に危険にさらされていることに代わりはない。

 セキュリティが破られる、といっても色々なケースが考えられる。暗号が破られたり、盗聴されたり、あるいはPCに侵入されてしまう場合もある。あなたもPCの中に勝手に侵入され、大事な写真やデータを盗まれては困るだろう。ましてや、企業であれば、自社が取り扱う情報に関して、もっと危機感を持ったほうが良いと感じることが少なくない。

 セキュリティソフトを入れておけば万全と思っている企業と、セキュリティソフトが入っていても危険だと思っている企業では、情報収集量と質に大きな格差が生まれるであろう。“絶対はない”ということを肝に銘じ、システムを構築・運用したいものである。

システム発注者は対策内容までチェックしない

 過日も、芸能事務所アミューズのECサイトがSQLインジェクションにより攻撃され、顧客のカード情報が漏洩したことがニュースになった。これは何が問題だったのか?

図1●SQLインジェクションについて説明するマイクロソフトのページ
[画像のクリックで拡大表示]

 最初に断っておくが、SQLインジェクションを仕掛けること自体、悪意がある行為であり、決してやってはならない(筆者は法律の専門家ではないので、法的なコメントは控える)。顧客情報を違法に入手し、ECサイトなどで他人のカード情報を使って購買するなど言語道断である。

 まずSQLインジェクション関して少し調べてみよう。例えば、マイクロソフトも、SQLインジェクションに関しては、サイトを設けている(図1)。

 Wikipediaでは次のように説明されている。

SQLインジェクション(英:SQL Injection)とは、アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。また、その攻撃を可能とする脆弱性のこと。SQLに別のSQL文を「注入 (inject)」されることから、「ダイレクトSQLコマンドインジェクション」とも呼ばれる。

 簡単に言えば、動くはずのない命令が、ある特殊な値を投げられると、命令情報が動いてしまう仕掛けである。値を投げつける方法は色々ある。だが、問題はシステムを構築する側が、その攻撃に対する危機感をどの程度持っているかということである。

 新規に構築されたシステムの運用を開始する前に、SQLインジェクションへの対策が十分かどうかについて、システムの発注側がチェックすることは、まず有り得ない。従って、システムの構築側が十分な知識をもって開発にあたり、十分に検査する必要がある。