「バッファオーバーフロー攻撃」を知る【後編】
いまさら聞けない「バッファオーバーフロー攻撃」とは? 仕組みと対策を解説
「バッファオーバーフロー攻撃」はシステムの一時的な記憶領域を狙った攻撃だ。その具体的な攻撃手法と対策を紹介する。
前編「知っておきたい『バッファオーバーフロー攻撃』とは? 主要な4種を紹介」は、一時的な記憶領域の「バッファ」を溢れさせて、プログラムの制御やクラッシュ、変更を可能にする「バッファオーバーフロー攻撃」の主要な4種類を解説した。後編は、バッファオーバーフロー攻撃の概要と、その対策方法を紹介する。
バッファオーバーフロー攻撃の仕組み
バッファオーバーフロー攻撃で最も一般的なのは、関数呼び出しに利用する記憶領域「スタック」を狙った攻撃だ。通常、関数の集合体であるプログラムがユーザー名やパスワードなどの入力をユーザーに要求するまで、スタックは空の状態になっている。入力を受け付けた時点で、プログラムは戻り先のアドレスをスタックに書き込み、ユーザーの入力をその上に格納する。スタック内に格納されたコマンドを実行すると、プログラムが指定した戻り先のアドレスにユーザーの入力を送る。
スタックのサイズは有限だ。開発者は、具体的な大きさを指定してスタック用の領域を確保しなければならない。ユーザーの入力が、入力用に確保したスタック領域の大きさを上回った場合、その入力が適切かどうかをプログラムが確認しなければ、スタックはオーバーフローする。それ自体はそれほど大きな問題ではないが、悪意のある入力と組み合わさると非常に大きなセキュリティホールになる。
続いて攻撃者は、悪意のあるプログラム内の関数が出すコマンドを格納するアドレスを、戻り先のアドレスとして指定する。スタックがオーバーフローして部分的に破壊されたプログラムは、戻り先のアドレスに帰ってプログラムを回復しようと試みる。このとき意図したコマンドをシステムに実行させるよう、攻撃者は戻り先のアドレスを変更する。そのために攻撃者は悪意のあるコマンドが配置されるアドレスを把握しなければならない。実アドレスを特定しなくていいようにするために、攻撃者は「NOP」(何もしない)コマンドを悪意のあるコマンドの前後に挿入する。これは正確なメモリ範囲が分からないときに使われる手法だ。そうすることで、攻撃者が指定したアドレスがNOPコマンドで埋めた範囲のどこかにあれば、その悪意のあるコマンドが実行されるようになる。
最後は、実行可能なプログラムの権限を回避する。たいていのOSには、現在ログインしているユーザーのアクセスレベルを制御する仕組みがある。通常、プログラムの実行には高度な権限が必要なため、これらのプログラムは上位の権限を持つ「カーネルモード」で実行されることが一般的だ。
スタックベースのバッファオーバーフロー攻撃により、新たな戻り先のアドレスにあるコマンドが実行されると、プログラムは自身の実行が続いていると誤認識する。攻撃者がコマンドによってシステムを不正に操作するため、標的のアプリケーションを通じて立ち上げたコマンド実行ウィンドウは、侵害されたアプリケーションと同じ権限を持ったまま実行される。一般に、この状態は「攻撃者がOSを完全に制御した」ことを意味する場合が多い。
バッファオーバーフロー攻撃からの防御方法
バッファオーバーフロー攻撃からシステムを防御する方法は、以下のようなものがある。
- ベンダーが発行するパッチとソフトウェアアップデートを使って、システムを最新状態に保つ
- アプリケーション実行に先立ってマルウェアを検出する「ランタイムアプリケーション自己保護」(RASP)を有効にする
- アドレスの配置をランダムにする
- 「Windows」のセキュリティ機能「データ実行防止」(DEP)を使用して、不適切なメモリ領域からプログラムが実行されるのを防ぐ
- バッファオーバーフロー攻撃を手動でテストする
- バッファオーバーフロー攻撃を許さない開発手段を使用する
- 例として、プログラミング言語「Java」「Python」や、アプリケーション開発環境「.NET」など
Copyright © ITmedia, Inc. All Rights Reserved.
「バッファオーバーフロー攻撃」を知る
「バッファオーバーフロー攻撃」を受けると、プログラムやプロセスの制御を攻撃者に奪われる恐れがある。本連載はバッファオーバーフロー攻撃の仕組みと対策について説明する。
この記事の著者
関連記事
新着ホワイトペーパー PR
-
技術文書・技術解説
[Jamf Japan 合同会社] MDMだけでモバイルセキュリティは十分? 不足する対策を16項目でチェック -
製品資料
[株式会社ウェーブスプリッタ・ジャパン] 100Gbps対応の光トランシーバーはどう選ぶ? 10分で分かる選定のポイント -
製品資料
[株式会社フィックスターズ] 組み込み開発の生産性と機密性を両立、自社環境で構築する「セキュアAI」活用術 -
製品レビュー
[ServiceNow Japan合同会社] 問い合わせの約9割を自動で解決、AI主導の自律型CRMがもたらす業務変革の全貌 -
市場調査・トレンド
[ServiceNow Japan合同会社] AI活用が業務自動化で止まる理由は何か? 調査で判明した課題と変革への道筋
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
AI全部入り「Microsoft 365 E7」に企業が二の足を踏む訳 移行意向はわずか4%
-
2
【基本情報技術者試験】「デュプレックスシステム」と「デュアルシステム」の違いは?
-
3
GitHubが指摘 AIが書いた「おそらく動くコード」が招くシステム崩壊
-
4
なぜOpenAIやAnthropicのAIは「脱走」したのか 情シスが迫られるエージェント統制
-
5
Anthropicが明かす AIは入力データを「どこまで覚えているのか」
-
6
「高すぎるGPU」を捨てAI推論をCPUへ Armが示す電力とコストの現実解
-
7
「Microsoft一択」で本当にいいのか 知らぬ間にライセンス費用が膨らむ真相
-
8
【漫画付き】"RAG導入失敗3例"と処方箋 「入れても使われない」を終わらせる
-
9
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
10
レガシーコードを捨てJavaで勘定系を再定義 ソニー銀行、フルクラウド化の全容
ホワイトペーパーランキング PR
-
1
生成AIのハルシネーションを防止 回答精度を高めるセマンティックレイヤーとは
-
2
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
3
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
4
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
5
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
6
マンガで解説:「ゼロトラスト」「SASE」の必要性とメリット
-
7
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
8
情報セキュリティ対策早分かりガイド:25の自社診断で弱点と解決策を理解
-
9
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
10
AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー