SQLインジェクション(SQL Injection)とは、Webフォームの入力ボックスにSQL(Structured Query Language)コードを入力し、Webサーバと連動しているデータベースのリソースにアクセスしたり、データを改ざんしたりするセキュリティ攻撃である。この攻撃は、データベースに特定の処理を要求するSQLクエリを使って行われる。通常、ユーザー認証のためのWebフォームでは、ユーザーが自分の名前とパスワードをテキストボックスに入力すると、それらの値はSELECTクエリに挿入される。入力された値が正当なものであればユーザーはアクセスを許可され、値が正当なものでなければユーザーはアクセスを拒否される。だが、ほとんどのWebフォームには、名前と値以外の入力をブロックするメカニズムが用意されていない。こうした対策が講じられていないと、攻撃者は入力ボックスを使って独自の要求をデータベースに送ることができ、それによってデータベース全体をダウンロードしたり、データベースを不正に操作したりすることが可能になる恐れがある。
SQLインジェクション攻撃に見舞われるリスクは増大しており、自動化ツールがその元凶になっている。以前はこの攻撃の危険はある程度限られていた。手動で攻撃を行わなければならなかったからだ。つまり、攻撃者はテキストボックスにSQL文やその一部を打ち込まなければならなかった。しかし、今では自動SQLインジェクションプログラムが出回っており、その結果、攻撃の発生可能性と潜在的な損害は非常に大きくなっている。SPI Dynamicsのケーレブ・シマCTO(最高技術責任者)は、Security Wire Perspectivesとのインタビューで、その潜在的な危険についてこう語った。「悪い連中が公開しているこうした技術のせいで、スクリプトキディ(技術レベルが低く、他人が作成したツールを使って興味本位の攻撃を行う悪意あるハッカー)がまったく予備知識なしで特定のWebサイトを標的にし、フリーウェアツールを使ってそこからデータベースを自動的にダウンロードするようになるだろう。今より一段と重大かつ深刻な状況になると思う。SQLインジェクションの自動化技術は、SQLインジェクションワームの開発に道を開くものだ。こうしたワームが登場する可能性は非常に高い。実際、まだ登場していないのは驚きだ」。シマ氏は、動的なコンテンツを提供するWebアプリケーションの約60%が、SQLインジェクションに対して無防備だと推計している。
セキュリティの専門家によると、SQLインジェクションのほかクロスサイトスクリプティング(XSS)などさまざまな攻撃が可能となっているのは、開発段階でセキュリティが十分に重視されていないためだ。専門家は、Webサイトとアプリケーションの完全性を保護するために、開発段階で入力ボックスが受け入れる文字の種類と数を制御するなど、必要十分な対策を講じることを勧めている。
Copyright © ITmedia, Inc. All Rights Reserved.