き~わ~ど: SQL インジェクション , 挿入 , 差し替え 攻撃
ネタもと:日経BP IT Pro 教訓はなぜ生かされなかったのか
不正アクセスに使用されたのは,SQL文を外部から送り込む「SQLインジェクション」と呼ばれる手口だ。
(略)
(システムは)2000年8月にカットオーバーした。
(略)
(不正アクセスを受けたシステムの、もとになったシステムは)2005年10月初めにバージョンアップし,SQLインジェクションに対応した。
(略)
「Webアプリケーションの検査,修正は多くの人手,コストがかかる。事件以前は,こういった問題に対する認識が十分でなく,人とコストをかける体制になっていなかった」(NECネクサソリューションズ 代表取締役 執行役員専務 多田昌弘氏)とする。
「SQLインジェクションは仕様で規定されていない問題であり,瑕疵ではないと考えている」と,NECネクサソリューションズ 多田氏は言う。
「開発した2000年8月当時,SQLインジェクションは広く知られた脅威ではなかった。建物に例えるなら,建築当時はあまり知られていなかったサムターン回しという手口による侵入が頻発するようになったようなもの。日々新しいセキュリティ・ホールが発見されている。あらゆるケースをすべて網羅して穴をふさぐことはできない」(NECネクサソリューションズ 多田氏)
Windows 95 が発売されたのが 1995 年。この頃はまだ、パソコン通信の勢いも衰えていなかったし、Win.95 には MSN がバンドルされ、マイクロソフトもパソコン通信の方を見ていたので、インターネットを使った脅威というものは、それほどなかったと思います。Windows 2000、少なくとも Windows 98 SE の頃には、インターネットは一般化し、マイクロソフトも通信の主力として注力し出しています。Web アプリケーションも、この頃から広がったのではないでしょうか。
この、多田氏が言われるように、SQL Injection は広く知られた脅威ではなかったでしょう。
記事執筆者は、次のように続けています。
2000年の12月に発行された日経オープンシステム(4月から日経SYSTEMSとして新創刊)という雑誌で,Webアプリケーションのセキュリティに関する特集記事を執筆したことがある。この特集でSQL文を外部から入力される危険性について紹介している。取材の際,多くのセキュリティ専門家がこの問題を「基本的な問題」と指摘していた。
“脅威”として知られていたかどうか、確かにそれは疑問の余地があります。しかし、「基本的な問題」として、開発者には知られていたはずです。
私が働き始めたのが 1990 年。1993 年 9 月まで、地図を使った緊急向けシステムを担当していました。地図上に様々な情報を貼り付け、他のシステムからの町名や貼り付けた情報をもとにした指示により、該当する付近の地図を表示します。このシステムのデータベースに、Oracle を使用していました。このときからすでに、「シングルクォーテーションは気をつけてよ」と言われていました。このシステムでは、「シングルクォーテーションは入力しない」という、運用で逃げていました。初期データは開発元で登録するため、登録ツールで削除しました。途中入力データは、エンドユーザにはキーボードを使わせず、ソフトウェアキーボードから入力するため、非常に簡単に制限できたのです。
1998 年頃に担当した別のシステムでは、やはり運用系で逃げてもらおうとしたのですが、品質担当部門より「どんな入力をされようが、制御されていない(システムが出すままの)エラーを出したらあかん」と言われ、対応しました(対応内容は忘れました)。
任意の SQL 文を挿入して、様々な情報を引き出す…そういう“脅威”としては、認識されていなかったかもしれません。しかし、C 言語や Java における、文字列中のバックスラッシュ(円マーク)、ダブルクォーテーションのように、「特殊な文字」としての認識はあったはずです。それを、設計からテストまで、「脅威としての認識」がないとしても、まったくスルーパスだったのは、アプリケーションの品質問題として、瑕疵ではないでしょうか。
いくつかのブログやブログに対するコメントで、「新しい脅威だから、それ以前の人が知らなくても仕方がない」というご意見を見ます。「脅威」としては新しいかもしれません。しかし、「認識」としては古くからあるものです。決して「対応されてなくても仕方がない脅威」ではありません。
ひとつ、「対応されてなくても仕方がない」派を養護するとするなら、Web アプリケーションでなければ、「脅威」となり得ない、ということがあるでしょうか。Web サービスや Web アプリケーションでないということは、ローカルな環境で使うということです。攻撃する人と、攻撃されてダメージを受ける人は同じだった、ということです。誰も自分の評価を下げるようなことはしないでしょう。ということは、それが「特殊文字」だとしても、それを使って何かをする、ということまでは考えず、ただ「エラーになる」程度にしか考えなかったでしょう。それであっても、「エラーになる」のだから、対応はしてあってしかるべき、だと思いますが。
投稿日時 : 2006年2月20日 20:29