バッファオーバフローについて
コンピュータウイルスやワーム、不正侵入手口などについて調べていくと、バッファオーバフローという脆弱性が目立つと感じるはずだ。実際に、SIOS( https://vdb.sios.biz/ )で「buffer overflow」をキーワード検索すると、1,000件以上ヒットすることからも、バッフ
特集
特集
今回のコラムでは、バッファオーバフロー問題について考えていく。
バッファオーバフローとは、プログラマが用意した領域に、その領域の大きさを越えたデータが入力されて起こる。この状態になると、メモリにロードされたプログラムの一部が壊れることになるが、C/C++言語の仕様では、バッファの境界値チェックは行わないので、こういう事は起きやすい。
全てバグ(プログラマのコーディングミス)である。
●仮想メモリ空間
最初に、プロセスがどのようにメモリを使用するかについて確認しておく。
プロセスが使用するメモリは、テキスト領域、データ領域、BSS領域、ヒープ領域、スタック領域と分類できる。C言語では各領域を次のように使用する(Linuxの例で説明するが、他のOSでも同じような構成)。
・テキスト領域
プログラムの実行コードが格納される。読み取り専用。複数のプロセスで共有される。
・データ領域
宣言時に値をセットしたスタティック変数やグローバル変数が格納される。
・BSS領域
宣言時に値をセットしていないスタティック変数やグローバル変数が格納される。
横河電機株式会社 SIOS調査員B
(詳しくはScan本誌をご覧ください)
http://shop.vagabond.co.jp/m-ssw01.shtml
《ScanNetSecurity》