「バッファオーバーフロー攻撃」を知る【後編】
いまさら聞けない「バッファオーバーフロー攻撃」とは? 仕組みと対策を解説
「バッファオーバーフロー攻撃」はシステムの一時的な記憶領域を狙った攻撃だ。その具体的な攻撃手法と対策を紹介する。
前編「知っておきたい『バッファオーバーフロー攻撃』とは? 主要な4種を紹介」は、一時的な記憶領域の「バッファ」を溢れさせて、プログラムの制御やクラッシュ、変更を可能にする「バッファオーバーフロー攻撃」の主要な4種類を解説した。後編は、バッファオーバーフロー攻撃の概要と、その対策方法を紹介する。
バッファオーバーフロー攻撃の仕組み
バッファオーバーフロー攻撃で最も一般的なのは、関数呼び出しに利用する記憶領域「スタック」を狙った攻撃だ。通常、関数の集合体であるプログラムがユーザー名やパスワードなどの入力をユーザーに要求するまで、スタックは空の状態になっている。入力を受け付けた時点で、プログラムは戻り先のアドレスをスタックに書き込み、ユーザーの入力をその上に格納する。スタック内に格納されたコマンドを実行すると、プログラムが指定した戻り先のアドレスにユーザーの入力を送る。
スタックのサイズは有限だ。開発者は、具体的な大きさを指定してスタック用の領域を確保しなければならない。ユーザーの入力が、入力用に確保したスタック領域の大きさを上回った場合、その入力が適切かどうかをプログラムが確認しなければ、スタックはオーバーフローする。それ自体はそれほど大きな問題ではないが、悪意のある入力と組み合わさると非常に大きなセキュリティホールになる。
続いて攻撃者は、悪意のあるプログラム内の関数が出すコマンドを格納するアドレスを、戻り先のアドレスとして指定する。スタックがオーバーフローして部分的に破壊されたプログラムは、戻り先のアドレスに帰ってプログラムを回復しようと試みる。このとき意図したコマンドをシステムに実行させるよう、攻撃者は戻り先のアドレスを変更する。そのために攻撃者は悪意のあるコマンドが配置されるアドレスを把握しなければならない。実アドレスを特定しなくていいようにするために、攻撃者は「NOP」(何もしない)コマンドを悪意のあるコマンドの前後に挿入する。これは正確なメモリ範囲が分からないときに使われる手法だ。そうすることで、攻撃者が指定したアドレスがNOPコマンドで埋めた範囲のどこかにあれば、その悪意のあるコマンドが実行されるようになる。
最後は、実行可能なプログラムの権限を回避する。たいていのOSには、現在ログインしているユーザーのアクセスレベルを制御する仕組みがある。通常、プログラムの実行には高度な権限が必要なため、これらのプログラムは上位の権限を持つ「カーネルモード」で実行されることが一般的だ。
スタックベースのバッファオーバーフロー攻撃により、新たな戻り先のアドレスにあるコマンドが実行されると、プログラムは自身の実行が続いていると誤認識する。攻撃者がコマンドによってシステムを不正に操作するため、標的のアプリケーションを通じて立ち上げたコマンド実行ウィンドウは、侵害されたアプリケーションと同じ権限を持ったまま実行される。一般に、この状態は「攻撃者がOSを完全に制御した」ことを意味する場合が多い。
バッファオーバーフロー攻撃からの防御方法
バッファオーバーフロー攻撃からシステムを防御する方法は、以下のようなものがある。
- ベンダーが発行するパッチとソフトウェアアップデートを使って、システムを最新状態に保つ
- アプリケーション実行に先立ってマルウェアを検出する「ランタイムアプリケーション自己保護」(RASP)を有効にする
- アドレスの配置をランダムにする
- 「Windows」のセキュリティ機能「データ実行防止」(DEP)を使用して、不適切なメモリ領域からプログラムが実行されるのを防ぐ
- バッファオーバーフロー攻撃を手動でテストする
- バッファオーバーフロー攻撃を許さない開発手段を使用する
- 例として、プログラミング言語「Java」「Python」や、アプリケーション開発環境「.NET」など
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
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
3
MS月例パッチが1000件突破 人手不足の情シスを襲う「月1回メンテ」の崩壊
-
4
サーバ約70台をAWSへ ヤナセが移行前にやった「通信要件の可視化」
-
5
脱VMwareの真実:データセンター大手がNutanixを選んだ「コスト以上の理由」
-
6
「Microsoft一択」で本当にいいのか 知らぬ間にライセンス費用が膨らむ真相
-
7
AIインフラの理想形? 「5層のケーキ」を垂直統合するための近道とは
-
8
「VMware離れ」は本当か 3000社がVCF 9にかじを切った現実的な理由
-
9
「データストレージの活用方法」に関するアンケート
-
10
Oracle巨大ITプロジェクトはなぜつまずいたのか 8年で導入1割、追加で170億ドル
ホワイトペーパーランキング 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ジャパンをフォロー