脆弱性が悪用される前に
Webアプリの入力検証不備──4つの実例とその対策
Webアプリケーションの入力検証に不備があると、セキュリティ上の深刻な弱点になる恐れがある。しかもこうした不備は、問題が起こるまで気付かれないことが多いものだ。
Webアプリケーションの入力検証に不備があると、セキュリティ上の深刻な弱点になる恐れがある。しかし、こうした不備は、得てして問題が起こるまで気付かれない。本稿では、わたしがWebアプリケーションのセキュリティ評価を行った際に見つかった入力検証の不備の例を幾つか紹介しよう。
ログインIDが含まれたURL
これまでで最も興味深い入力検証の問題を見つけたのは、自分のさまざまな機密情報を保存していたWebサイトだった。ある日、そのサイトを眺めていて、自分専用のログインIDがURLに含まれていることに気付いた。これはWebサイトの最も基本的な、しかし危険な欠陥の1つだ。わたしは「彼らは分かっていないに違いない」と考えた。そこでサイトの管理者に電話で連絡を取り、問題を報告した。彼女は最初は平然としていた。彼女の態度が変わったのは、彼女がそのシステムの自分専用のIDをわたしに教えた後で、わたしが彼女の住所、誕生日、子どもたちの社会保障番号などの個人情報を次々に挙げてからだ。沈黙の後、彼女は「どうして分かったんですか」と尋ねてきた。わたしは、とても簡単なことだと話し、システムのどのユーザーも、アプリケーションへの入力を操作するだけで、ほかのユーザーの機密情報を見ることができる状態になっていることを説明した。彼女はあぜんとしたが、問題が悪用される前に見つかって感謝していると話した。「悪用される前」であったと願いたいものだ。
教訓
ユーザーセッションを追跡し、ユーザーの再認証を経なければ、変数を変更するだけの入力操作を許さないこと。もっと良いのは、システム変数をURLに一切入れないことだ。
不正なURLの受け付け
上の例のように、Webアプリケーションが不正なURLを受け付けて処理してしまう問題は、ほかにも見掛けたことがある。これは厄介なトラブルに直結しかねない問題だ。例えば、ユーザーが以下のようなリクエストにより、ローカルOSのコマンドをURLの一部として指定すると、ディレクトリの一覧を入手したり、UNIXやLinuxのパスワードファイルなど、機密情報を含むOSファイルをダウンロードしたり、URLやサイトをリダイレクトしたりできてしまう場合がある。
- www.example.com/folder/?D=|dir
- www.example.com/folder/whatever.cgi?I=/../..//..//etc/passwd
- www.example.com/exit.asp?URL=http://www.example.net
こうした不正なURLが処理された場合、結果はご想像の通り。ビジネスにダメージを与えてしまう。
教訓
URLパラメータを含めて入力が適切に検証、フィルタリングされ、アプリケーションが想定内の入力のみを受け付けるようにすること。
連絡フォームの不備
Webでの入力検証のよく見掛けるもう1つの欠陥は、連絡フォームに関連している。前述の問題とは異なり、この欠陥は、アプリケーションに関連する機密情報を脅かしはしない。しかし、アプリケーションやサーバ、電子メールボックスに対するサービス妨害(DoS)攻撃を招いてしまう恐れがある。わたしが評価を行うサイトやアプリケーションの9割に対しては、自動化されたWeb脆弱性スキャナを使って、連絡フォームによる問い合わせを膨大に送信できるだろう。送信されたフォームには通常、でたらめな内容と電子メールアドレスが記入されており、しかもこれらのフォームのために、システムログファイルが満杯になってしまう。こんなことはあなたの環境で起こってほしくないだろう。
教訓
提出されるフォームをフィルタリングするか、あるいは絞り込むこと。セッション管理やWAFなどによりそうする方法はいろいろある。シンプルさを優先するのであれば、この課題は、CAPTCHAを利用して解決するのが一番簡単だ。
クロスサイトスクリプティングとSQLインジェクション
最後に、入力検証について考える上で外せないクロスサイトスクリプティングとSQLインジェクションについて見よう。
攻撃者がクロスサイトスクリプティングの欠陥を悪用するには、入力データをフィルタリングしないフォームが使われている必要がある。Webセキュリティ評価プロジェクトで、こうしたフォームを含む幾つかのページを発見しないことはほとんどない。わたしの経験では、これらの欠陥は、コードに関連しているものもあれば、Webサーバ側の仕掛けに由来するものもある。後者の欠陥が特に目立つWebサーバが「Apache」だ。欠陥が悪用される場合、基本的に、ユーザーは攻撃者に誘導され、攻撃者が作ったスクリプトコードを含むリクエストを、欠陥のあるWebアプリケーションに送る。アプリケーションはリクエストを処理し、このスクリプトコードを含んだHTMLをユーザーのブラウザに返す。ブラウザはこれを実行してしまう。こうしてクロスサイトスクリプティングが行われる。
SQLインジェクションは、SQL文がフォームやURLに入力され、サーバがそれを処理し、抽出されたデータをユーザーに返すという点でクロスサイトスクリプティングに似ている。幸い、最近では、直接悪用可能なSQLインジェクションの脆弱性はめったに見ない。だが残念ながら、SQLインジェクションはいまだに多発しており、対策が十分に進んでいない。SQLインジェクションは、固有の注意点があるものの、入力検証の問題であることに変わりはない。
クロスサイトスクリプティングとSQLインジェクションは、信頼できるWeb脆弱性スキャンツールでテストすることによってのみ、(少なくとも、現実的に)発見できるWebのセキュリティ上の重大な欠陥だ。修正するには、想定されている入力だけを受け付け、それ以外は一切受け付けないようにアプリケーションをコーディングしなければならない。簡単そうだが、アプリケーションによっては明らかに複雑な作業になる。いずれにしても、取り組んでいかなければならない。
編注:2009年11月20日
本記事に関して読者から問題があるとのご指摘をいただきました。以下のように補足いたします。
クロスサイトスクリプティング対策としては、出力時に特殊文字の置換などのエスケープ処理を行うことが有効です。必ずしも入力チェックだけで防ぐことはできません。
本稿筆者のケビン・ビーバー氏は、米アトランタにあるPrinciple Logicを経営する独立系情報セキュリティコンサルタントで、執筆、講演も手掛ける。専門は独立した立場からのセキュリティ評価。情報セキュリティに関する7冊の著書および共著書がある。ブログではIT専門家向けにセキュリティ関連の知識を提供している。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
新着ホワイトペーパー PR
-
事例
[サイボウズ株式会社] DXに必要な「Dスキル」「Xスキル」を持った人材を育成するには? -
市場調査・トレンド
[サイボウズ株式会社] データで見る、DXが「順調に進む企業」と「つまずく企業」の違い -
製品資料
[サイボウズ株式会社] 賛否が割れがちな「Notesからの移行」 新環境への移行を納得してもらうには? -
事例
[ServiceNow Japan合同会社] 農林中金に学ぶ内製開発 処理効率を約2倍に高めAI活用も加速させた方法とは? -
事例
[ServiceNow Japan合同会社] NTTグループのデジタル変革術、17万人が利用する決裁プロセス刷新の全貌
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「データストレージの活用方法」に関するアンケート
-
2
【基本情報技術者試験】「デュプレックスシステム」と「デュアルシステム」の違いは?
-
3
「AI活用を前提とした業務PCへの移行」に関するアンケート
-
4
「VMware離れ」は本当か 3000社がVCF 9にかじを切った現実的な理由
-
5
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
6
kintoneで実践 製造業のための「見積もり管理」改善のヒント
-
7
「Microsoft 365」が乗っ取られる 跡形もなくMFAを破る手口
-
8
Microsoft製品でここまで自動化できる 情シスがやめられる手作業10選
-
9
Oracle巨大ITプロジェクトはなぜつまずいたのか 8年で導入1割、追加で170億ドル
-
10
DXを阻む「動くだけ」のレガシーシステムに決別するための生成AI活用術
ホワイトペーパーランキング PR
-
1
生成AIのハルシネーションを防止 回答精度を高めるセマンティックレイヤーとは
-
2
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
3
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
4
AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
-
5
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
6
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
7
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
8
マンガで解説:「ゼロトラスト」「SASE」の必要性とメリット
-
9
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
10
情報セキュリティ対策早分かりガイド:25の自社診断で弱点と解決策を理解
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー