HOME >> 情報セキュリティ >> 脆弱性対策 >> 「安全なSQLの呼び出し方」を公開

「安全なSQLの呼び出し方」を公開

〜深刻な被害が発生しているSQLインジェクション攻撃への具体的な対策書〜

2010年3月18日
独立行政法人 情報処理推進機構
セキュリティセンター

 IPA(独立行政法人情報処理推進機構、理事長:西垣 浩司)は、ウェブサイトを狙ったSQL(*1)インジェクション攻撃(*2)が継続していることから、ウェブアプリケーション(*3)の安全な実装方法を解説した資料「安全なSQLの呼び出し方」を2010年3月18日(木)からIPAのウェブサイトで公開しました。
 URL:http://www.ipa.go.jp/security/vuln/websecurity.html

 近年、ウェブサイトを狙った攻撃が継続しています。攻撃の実例として、IPAが無償で公開している「SQLインジェクション検出ツールiLogScanner(*4)」で、「脆弱性対策情報データベースJVN iPedia(*5)」のアクセスログを解析した事例を図1に示します。

 図1を見ると、2008年頃から急増しているSQLインジェクション攻撃が全体の45%、ウェブサーバのパスワードファイルや環境設定ファイルの情報を狙ったディレクトリ・トラバーサル攻撃が38%を占めています。

 このうち、SQLインジェクション攻撃は、攻撃が成功した場合、ウェブサイトの改ざんや不正コードの設置、ウェブサイトからの情報漏えいなど、深刻な被害が発生することから、IPAでは、SQLインジェクション攻撃への具体的な対策を解説した資料「安全なSQLの呼び出し方」を制作しました。

図1.SQLインジェクション検出ツール「iLogScanner」の解析事例

 データベースと連携したウェブアプリケーションの多くは、ウェブサイト利用者からの入力情報を基にデータベースへの命令文(SQL文)を組み立てています。このSQL文の組み立て方法に問題がある場合、攻撃によるデータベースの不正利用をまねく可能性があります(図2)。

 ここ数年の間に、オープンソースソフトウェアの活用が盛んになりましたが、そうしたソフトウェア製品の一部には、十分に安全性が検証されることなく使用されているものもあり、プログラミング言語やデータベースエンジンの種類によっては、一般的なSQLインジェクション対策を実施していても、隙を突いて攻撃されかねない場合があることがわかってきました。

 「安全なSQLの呼び出し方」では、SQLインジェクション対策が安全なものであるための要件を掘り下げて検討し、どの製品をどのように使えば安全なSQL呼び出しを実現できるのか、その考え方を整理しながら、いくつかの具体的ケースについて調査結果を示しています。

図2. SQLインジェクション攻撃

図2. SQLインジェクション攻撃

 IPAでは、ウェブサイト開発者や運営者が適切なセキュリティを考慮したウェブサイトを作成するための資料として「安全なウェブサイトの作り方」を公開しています。2010年1月20日に公開(*6)した改訂第4版は、2ヶ月間で30万件を超えるダウンロードを記録しています。「安全なSQLの呼び出し方」は、この「安全なウェブサイトの作り方」の別冊としています。本書がウェブサイトにおけるSQLインジェクション対策の一助となることを期待します。

「安全なSQLの呼び出し方」各章の内容:

 第1章では、「安全なウェブサイトの作り方」との関連を記載しています。
 第2章では、SQLインジェクションが発生する原因を説明しています。
 第3章では、アプリケーションがSQL文を組み立てる方法について説明しています。
 第4章では、安全なSQL呼び出しのためには何が必要かを説明しています。
 第5章では、5種類のプログラミング言語とデータベースの組み合わせ(JavaとOracle、PHPとPostgreSQL、PerlとMySQL、JavaとMySQL、ASP.NETとSQL Server)を取り上げ、SQLインジェクション攻撃に対して安全な実装方法を調査し、安全なソースコードの書き方を解説しています。
 付録では、文字コードに関する問題など、特定のデータベースに関する情報をまとめています。

 本資料(全40ページ)は、次のURLよりダウンロードの上、ご参照ください。
http://www.ipa.go.jp/security/vuln/websecurity.html

参考情報

謝辞

本資料の作成には次の方々にもご協力いただきました。

  • (独)産業技術総合研究所 情報セキュリティ研究センター

脚注

(*1)SQLはリレーショナルデータベースの操作やデータの定義を行うための問い合わせ言語です。

(*2)「知っていますか?脆弱性(ぜいじゃくせい)」を参照下さい。
http://www.ipa.go.jp/security/vuln/vuln_contents/sql.html

(*3)ウェブサイトで稼動するシステムです。一般に、Java, PHP, Perlなどの言語を利用して開発され、サイトを訪れた利用者に対して動的なページの提供を実現しています。

(*4)ウェブサイトの脆弱性検出ツールiLogScanner。
http://www.ipa.go.jp/security/vuln/iLogScanner/index.html

(*5)脆弱性対策情報データベースJVN iPedia(ジェイブイエヌ アイ・ペディア)は、国内で利用されているソフトウェアを対象にした脆弱性対策情報を網羅・蓄積し、公開しています。
http://jvndb.jvn.jp/

(*6)「安全なウェブサイトの作り方 改訂第4版」を公開。
http://www.ipa.go.jp/security/vuln/press/201001_websecurity.html

本件に関するお問い合わせ先

IPA セキュリティセンター
TEL:03-5978-7527 FAX:03-5978-7518 E-mail:電話番号:03-5978-7501までお問い合わせください。

更新履歴

2010年3月18日
掲載。