■バッファオーバーフローを発生させないためには
では、どのようにすればバッファオーバーフローが発生しないプログラムを作成することができるのでしょうか。C言語でプログラムを作成する際に注意することとしては以下のような点が挙げられます。
- バッファにデータを保存する際にデータサイズがバッファサイズを超えていないことを常に確認する
- 標準関数の中でstrcpyやstrcatといったバッファのサイズをチェックしないでコピーを行う関数は使用しない
これだけのことに注意するだけでほとんどのバッファオーバーフローの脆弱性は防ぐことができます。C言語の標準関数の中で危険とされている関数を使用したい場合は、strcpyであれば、strncpyを、strcatであればstrncatというように、バッファのサイズをチェックしてサイズ以上のコピーを行わない関数を使用するべきです。
それでもバッファオーバーフローによるセキュリティホールが数多く見つかるのは、プログラマが間違った形式のデータが入力されることはないだろうという思い込みや、プログラムの実行速度を早くするため余計な処理を省く過程でチェック処理を省略してしまうというようなことが考えられます。
個人で利用するために作成したプログラムならそれでも構わないかもしれませんが、広く公開し誰が使用するかは分からないプログラムの場合、プログラマの想定していない使い方をされる可能性が十分あります。そのため、想定していないデータが入力されることは確実に存在します。
このように、バッファオーバーフローを発生させないプログラムを作成するためには、プログラマが入力データの形式を信用しないことが重要です。また、プログラムをテストする際に、セキュリティホールとして利用できるかどうかという観点でテストを行うことも重要になってきます。
| Index | |
| 5分で絶対に分かるバッファオーバーフロー | |
| バッファオーバーフロー攻撃の仕組みを知ろう | |
| そもそもバッファって? | |
| なんでバッファがオーバーフローするの? | |
| バッファオーバーフローがセキュリティホールになるワケ | |
| 本当に悪意のあるコードが実行できるの? | |
| バッファオーバーフローを発生させないためには | |
| Profile |
| 石山 智祥(いしやま としあき) 株式会社フォティーンフォティ技術研究所 研究開発部 αUnit(先端技術・特殊技術研究グループ)所属のシニアソフトウエアエンジニア。セキュリティプロダクトの開発、およびさまざまなセキュリティコア技術に関する研究に従事。 マルウェア分析のスペシャリストとして、マルウェアのリバースエンジニアリング手法やダイナミックコード分析手法の研究に従事。また、脆弱性分析やPtoPシステムセキュリティに関する調査・研究にも従事。 |
| 関連記事 |
| Webサーバへの攻撃を見抜く |
| 多様化するWebアプリケーションへの攻撃 |
| 侵入攻撃の手法と対策 |
| セキュリティホールはなぜできる? |
| 緊急リポート Code Redワームの正体とその対策 |
| WAFはどのように脆弱性を防御するのか |
| 5分で絶対に分かるシリーズ |
TechTargetジャパン
Security&Trust フォーラム 新着記事
- 実録、「Hardening Zero」の舞台裏 (2012/5/25)
コラムの更新頻度を落として何をやっていたかって? 「守る技術」に焦点を当てたこんなイベントを開催しました - 複雑化、巧妙化する脅威への対策は? (2012/5/23)
データ保護や標的型攻撃対策、クラウドセキュリティ……「第9回 情報セキュリティEXPO」の会場で見つけた製品を一挙に紹介 - 仮想化がはらむ新たなリスク (2012/5/17)
仮想化に伴って生じるセキュリティやパフォーマンスへの影響を慎重に考慮し、うまく制御していく方法を紹介します - 新入生も新入社員も勉強会に寄っといで! (2012/5/14)
週末ともなれば至るところでセキュリティ系勉強会やCTFなどのイベントがあり、ツイートも盛り上がりました
|
|
@IT 新着記事
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
ソリューションFLASH

