ソフトとハード、2つの対策アプローチ
古くて新しいフォールトインジェクション攻撃
フォールトインジェクション攻撃の概要と種類を説明し、被害に遭わないようにするための開発のベストプラクティスを紹介する。
フォールトインジェクション攻撃には、Webと同じくらいの歴史がある。この攻撃は、Webアプリケーションを介してネットワークやコンピュータシステムへの不正アクセスを可能にする。アプリケーションの急激な進化とWeb対応の進展に伴い、インジェクション攻撃は大きな問題となっている。本稿では、フォールトインジェクション攻撃の概要と種類に加え、あなたの会社のシステムが被害に遭わないようにするための開発のベストプラクティスを紹介する。
一部のフォールトインジェクションはスクリプトベースであり、JavaScriptやPHPのような言語を使用する。新しいWeb2.0技術ではスクリプト言語が使われることから、インジェクション攻撃は発生頻度が増え、より高度化している。Web2.0技術にはXML、RSS、Ajaxなどがある。これらはいずれも、悪意あるインジェクションコードを隠すために利用することが可能だ。
インジェクション攻撃は、Webアプリケーションへの通常の方法による入力に悪意のあるコードを紛れ込ませる形で行われるため、従来のネットワーク攻撃とは違って侵入的ではなく、既存のIDSシステムやIPSシステムによるチェックをすり抜けてしまう。このため、検知プロセスはより複雑なものになる。
フォールトインジェクション攻撃の種類
開発者向けに安全なWebコーディング手法の教育を行っているOpen Web Application Security Project(OWASP)によると、インジェクション攻撃には2つの種類がある。OWASPの脆弱性トップ10では、クロスサイトスクリプティング(XSS)とインジェクションの欠陥がそれぞれ1位、2位を占めている。この2つの脆弱性のいずれかを悪用して、Webアプリケーションに悪意あるコードが挿入される。これは大抵Webブラウザを介して行われる。
この両者のうち、XSSの脆弱性を突く攻撃は、非常に多発している極めて悪質なものだ。この攻撃は通常、JavaScriptを用いて行われるが、どのスクリプト言語でも可能だ。この攻撃では、Webアプリケーションの正当なユーザーの認証資格情報が盗まれ、コンピュータシステムに不正にアクセスされる恐れがある。
インジェクションの欠陥を突く攻撃の中では、SQLインジェクション攻撃が群を抜いて最も多発している。SQLインジェクションは、WebページのフォームフィールドにSQLコマンドを挿入し、Webアプリケーションのバックエンドデータベースに不正アクセスを仕掛ける手法だ。SQLインジェクションはXSSとは異なり、ユーザーのIDやパスワードを盗むためではなく、アプリケーションのデータを不正入手するために行われる。
フォールトインジェクション対策
インジェクション攻撃対策の主なアプローチは2つある。1つは、OWASPが勧めるような安全なコーディングやプロジェクト管理の手法を取ること。もう1つは、アプリケーションレベルのファイアウォールを実現するハードウェアを導入することだ。
インジェクション攻撃を防ぐためのコーディングの第1原則は、Webアプリケーションへのすべての入力をチェックすることだ。チェック対象には、Webページのフォームや隠しフィールドから送信される、あるいはURLに付加されて送信されるすべてのものが含まれる。攻撃に使われる可能性があるのは、英数字以外の文字、例えば「!」「#」「<」「>」といったものだ。これらがWebサーバやアプリケーションサーバのバックエンドプロセスを起動させ、不正アクセスを可能にする恐れがある。
SQLインジェクションでは、アポストロフィ(')はSQL文の一部だ。アポストロフィが適当な文字とともにWebページのフォームフィールドに挿入された場合、チェックが正しく行われないと、バックエンドデータベースへのSQLクエリが実行され、データが返される。データベースがアカウント情報や顧客の機密データを保存していれば、悪意ある攻撃者にとっては宝の山になる。
これに対し、入力に「<script>」タグが含まれていた場合は、XSS攻撃が仕掛けられている大きな証拠になる。このタグに囲まれた部分は、攻撃者がWebサイトに挿入しようとしている悪意あるJavaScriptやそのほかのスクリプトコードだ。このタグをチェックして無効にすることが、XSS対策の第一歩になる。
OWASPの脆弱性トップ10ガイドには、Javaや.NET、PHPのようなよく使われる主要なコーディング言語のコード例とともに、詳しい解説が掲載されている。また、コーディングのベストプラクティスも示されている。例えば、入力チェック、ストアドプロシージャの多用、特定の出力エンコーディング、ホワイトリストのチェックなどだ。
ソフトウェア開発ライフサイクルにおけるセキュリティテスト
安全なコーディング手法は、アプリケーション開発ライフサイクルに統合しなければならない。入力チェック処理が適切にコーディングされるよう、技術仕様に処理方法を詳細に記述するとともに、開発ライフサイクルにおいて、さまざまなベンチマークでアプリケーションのセキュリティテストを行う必要がある。
XSSとSQLインジェクションをチェックできる侵入テストツールの中では、SPI Dynamics(Hewlett-Packardに最近買収された)のWebInspectと、Watchfire(IBMに最近買収された)のAppScanがよく使われている。いずれも、Webアプリケーションをスキャンしてインジェクションの欠陥を調べ、開発者がバグを追跡するのに役立つ詳細なリポートを提供する。
また、Fortify Softwareの製品のような静的コード分析ツールもある。こうした2種類のツール、つまりスキャナとコードアナライザのどちらを選択するかは、開発ニーズと利用可能なリソースに基づいて決めなければならない。
一方、ハードウェアベースのアプローチを採用し、Webアプリケーションファイアウォールによって悪意あるインジェクション攻撃の防止を図ることもできる。従来型のファイアウォールはパケットヘッダを検査し、パケットの種類や送信元に基づいてトラフィックを受け入れるか拒否する。だが、アプリケーションレベルファイアウォールはそれとは異なり、パケットの内容を検査し、インジェクション攻撃のコードを含む悪意あるコードの一般的パターンをチェックする。しかし、こうしたファイアウォール機能を提供するアプライアンスはまだ新しいため、活用には慎重に取り組まなければならない。ほかのネットワークベースアプライアンスやファイアウォールと同様に、導入前に徹底的にテストする必要がある。有名な製品としては、NetContinuum、Aladdin Knowledge Systemsといったベンダーのものがある。
なお、現在のフォールトインジェクション対策製品には、看板倒れのものもあることに注意する必要がある。一部の製品は統合セキュリティソリューションとして提供されており、IMや電子メール関連の脅威からの保護に重点が置かれていたり、URLをスキャンして、不適切なサイトへのアクセスを遮断する機能が中心となっている製品もある。だが、セキュリティ市場はダイナミックに成長しており、インジェクション攻撃の高度化とともに、対策製品もさらに改良が進むだろう。
本稿筆者のジョエル・デュビン氏はCISSP(公認情報システムセキュリティ専門家)資格を持つ独立系コンピュータセキュリティコンサルタント。Microsoft MVPに選ばれ、Web/アプリケーションセキュリティを専門とする。著書に「The Little Black Book of Computer Security」(29th Street Press)があり、シカゴのラジオ局WIITでコンピュータセキュリティの番組を担当。「IT Security Guy」ブログも運営している。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[NTTPCコミュニケーションズ株式会社] 「回線速度不足」だけが原因ではない? Web会議の遅延を解決する方法とは -
製品資料
[東京エレクトロン デバイス株式会社] 工場の可用性向上に重要な「7つの領域」と対策 OTセキュリティ強化の基礎知識 -
製品資料
[リコージャパン株式会社] 問い合わせ対応で本来の業務が進まない、総務や情シスの負担をどう減らす? -
製品資料
[リコージャパン株式会社] 自社データから高精度な回答を生成、簡単に生成AIチャットボットを構築する方法 -
技術文書・技術解説
[アトラシアン株式会社] IT運用や従業員サポートは生成AIでどう変わる? 使い方や導入の流れは?
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
全社標準Copilotに絶望? MS Copilotで問い合わせ6割減できた企業は何が違った
-
2
「Copilot」はなぜ放置される? “議事録要約止まり”を脱する処方箋
-
3
「AI活用を前提とした業務PCへの移行」に関するアンケート
-
4
「データストレージの活用方法」に関するアンケート
-
5
身代金支払いは逆効果 情シスのためのランサムウェア対策ガイド2026
-
6
多要素認証導入済みでもランサムウェア被害に 復旧費用は平均2億7000万円
-
7
DXを阻む「動くだけ」のレガシーシステムに決別するための生成AI活用術
-
8
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
9
「ITインフラとデータ保護・バックアップ対策」に関するアンケート
-
10
自社を守る「SCS評価制度」活用法 7割の企業が取引先起点の情報漏えいに直面
ホワイトペーパーランキング PR
-
1
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
2
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
3
生成AIで文書活用を進めるには? 効率化と安全性をどう両立する
-
4
Windows PCとMacの選択制で生産性向上 LINEヤフーが実践する運用管理方法とは
-
5
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
6
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
7
「スクラム」と「カンバン」の違いとは? アジャイル型開発手法を徹底比較
-
8
AI時代に成功するための「ナレッジマネジメント」ベストプラクティス
-
9
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
10
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー