ソフトとハード、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
-
事例
[フォーティネットジャパン合同会社] 複雑化しがちな「SASE運用」 IT・医療・金融などの事例に見る導入成功の秘訣 -
製品資料
[フォーティネットジャパン合同会社] 「SD-WAN」導入で失敗しないための5つの重要事項 -
技術文書・技術解説
[フォーティネットジャパン合同会社] VPNの代替候補「ZTNA」を理解できるようになる“3大要素”とは? -
事例
[フォーティネットジャパン合同会社] すぐ分かる「SD-WAN」選定のポイント 成功企業はどんな成果を出した? -
製品資料
[SCSK株式会社] 「Dropbox」管理・運用の困りごと解決ガイド
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
Microsoft月例パッチ1400件超で過去最多 「限界点」を迎えたパッチ管理
-
2
「エージェントを作るな、スキルを作れ?」 Anthropicが提唱するAI運用の勘所
-
3
なぜ人はいるのにDXが進まない? ライオンも直面した“老害”レガシーシステム
-
4
PHP脆弱性「PHP2Shell」で2260万件に影響 情シスの緊急チェックリスト
-
5
被害額は過去最高額 それでも「サイバー犯罪者が捕まらない」3つの理由
-
6
「Windows」の不要なファイルを安全に消して容量を空ける方法
-
7
みずほ証券が「液冷サーバ」を採用 1日3.6億件の計算を支えるための要件
-
8
Microsoft 365の「テナント統合・分離」問題 手戻りのない道を選ぶ秘訣とは?
-
9
「有線LAN環境」に関するアンケート
-
10
いまIBM iエンジニアが直面する「5つの技術的課題」とその解決策
ホワイトペーパーランキング PR
-
1
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
2
2026年のサイバーセキュリティには何が必要か? 最新データに学ぶ傾向と対策
-
3
経験豊富な即戦力人材に直接アプローチできる、「攻めの採用」への転換術
-
4
「IT史に名を残すシステム障害」8選
-
5
最速72分でデータが流出? 最新の脅威トレンドや侵入手法から分かった防衛策
-
6
AI駆動開発のスピードと安全性を両立 「品質・セキュリティ管理」の実践ガイド
-
7
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
8
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
9
「標的型攻撃メール」事例・サンプル集
-
10
Microsoft 365のメールセキュリティ、3つの“死角”と追加で検討すべき対策とは
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー