脆弱性が悪用される前に
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
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
2
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
5
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
6
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
7
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
10
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー