不正アクセス技法を解く(SQLインジェクション)

呉井嬢次(Johji Kurei) 2005-07-05 12:15:00

 人材派遣会社アデコは、不正アクセスによって6万1867人分の個人情報が漏えいしたことを発表した。不正アクセスが確認されたのは、今年1月18日から6月2日まで。この期間には警察の捜査に協力した時間も含まれているだろうが、カカクコムのサイトへの不正アクセス事件と比較しても、長期間気づかなかったことは明らかだ。何故、気づかなかったのか、それには幾つかの理由がある(ここでは2つ理由を挙げる)。

理由1:ログの不十分な確認

 不正アクセスを行うには非常に多くのテクニックがある。例えば、世界的に有名になったハッカーと呼ばれたケビン・ミトニックが得意としたソーシャルエンジニアリングという技法だけでも15種類以上のタイプが存在する。西暦2000年以降、不正アクセス技法として報道されるようになった「バッファーオーバーフロー攻撃」に至っては、ヒープ、スタックなど多くの種類が確認されている。他にも色々あるが、不正アクセスされたことをチェックする基本として、「ログの確認」と「保管」がある。一言にログの確認といっても、マシンやシステム毎にシステムログ、ウェブのアクセスログ、DBログなどがあり、ログの数、サイズは膨大となる。しかし、不正アクセスが行われた痕跡を見つけ出すには、ログの確認は必須だ。ログの確認と言っても、ログが存在していることを確認することではない。ログの確認とは、ログに記録されている内容まで踏み込んでチェックしなければ意味がない。このため、通常のシステムでは、ログ管理を支援する仕組みを導入している。ログを十分にチェックしていれば、5ヶ月以上も不正アクセスを放置されることは十分に防ぐことはできた筈だ。ちなみに、ログに残らない不正アクセス技法も存在するが、今回はログに残る方法を使って不正アクセスを成功させているので、別の機会で説明しよう。

理由2:不正アクセス技法の理解不足<SQLインジェクション>

 ホームページに対する不正アクセスといえば、ウェブサーバー上に存在する脆弱箇所が狙われる。OSやアプリケーションの欠陥、稼動している不要なサービスなどだ。。これらは、システム管理する上で把握すべき基本中の基本だ。しかし、ウェブサーバーから一歩離れた場所にあるマシンに対しても同様な配慮をしなければならない。例えば、ファイル転送に用いられるマシン(FTPサーバー)、コミュニケーションサーバー、DBを搭載しているサーバーなどだ。これらは各サーバー単体の脆弱性だけでなく、組み合わせた(構築上の)システムにおける脆弱箇所にも対処する必要があるので厄介だ。不正アクセスに利用される技法であるSQLインジェクションは、複数台のサーバーを使って構築時に発生する脆弱箇所を攻撃する技法の一つにあたる。SQLインジェクションとは、ブラウザから特定のURLを入力することによって、データベースにある情報を引き出す。以降に挙げるサンプルは、大手商用データベース製品を使って構築されたあるシステムからSQLインジェクションを使った例である。

SQLインジェクションの攻撃例

 下記サンプルは、不正アクセス技法であるSQLインジェクションを理解するために紹介した。よって、記述されたコードをそのまま利用しても個人情報は引き出すことはできない。もし、あなたが、実践的な不正アクセス技法を知り、社会の情報システムの防御に役立てることを希望するなら、私はお手伝いできるかもしれない。なぜなら有償で不正アクセスの攻撃対策の講座を開設している。編集部宛にEメールすれば、私にコンタクトが取れるだろう。

 サンプル1:あるシステムからSQLインジェクションを使って機密情報を引き出す技法
 http://we6s3rv3r/5cript.asp?id=0--%20%28SELECT%20*%20FROM%20table%29

 サンプル2:あるシステムからSQLインジェクションを使って機密情報を引き出す技法
 http://0r4c1e53rv3r/pls/personal_name/admin_/help/..%255Cplsql.conf
 http://0r4c1e53rv3r/pls/personal_name/owa_util.cellsprint?P_theQuery=select * from

 サンプル1及び2は、ヨーロッパの情報セキュリティ講座のテキストでも使われているが、理解するにはデータベースのSQLに関する知識が必要になる。SQLの知識とは、データベースに登録されている情報の格納方法、テーブル操作などをする上で欠かせない知識である。つまり、SQLインジェクションを使う者は、ウェブに関する知識の他に、データベースに詳しいという人物像が浮かび上がる。発生したサイバー犯罪から犯人を想定していくプロファイリングは、このような基礎データを積み重ねていくことになる。話は戻すが、SQLインジェクションを使った場合、ウェブサーバー、DBなどにログが残る。万が一脆弱箇所がシステムに潜在化していても、ログを確認すれば検知できる。

マイクロソフト製品以外でもSQLインジェクションは可能だ

 不正アクセスによって被害が表面化すると、マイクロソフト製品を使っていることが理由のように指摘する人がいる。しかし、SQLインジェクションのような不正アクセスでは、構築時に脆弱箇所が出来上がるので、オープンソースのデータベースであっても、他の商用DBでも発生する可能性がある。あのシステムはOSにウインドウズ2000、ウェブサーバーにはMicrosoft-IIS/5.0を使っていたから、と非論理的な理由で、上司や自分を納得させることは避けること、これだけは覚えておいてもらいたい。

※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。

SpecialPR