C/C++セキュリティ対策
スポンサードリンク
バッファオーバーフロー攻撃の標的となる代表的な言語であるCとC++について解説します。
まず、どうしてバッファオーバーフロー攻撃の標的になりやすいかというと引数のサイズをチェックしない関数が多く存在するという所に原因があります。したがって開発において第一に考慮すべき点は、引数サイズをチェックしない関数を使用していないかということと、使用している場合は、サイズチェックを行っているかという点です。
以下に引数チェックを実施しない関数例を挙げます。
gets()
strcpy()
sprintf()
scanf()
vfscanf()
vsprintf()
|
上記の例からgetsを使ってセキュリティ対策例を以下に示します。
@getsの代用関数fgetsを使う
char buf[128];
fgets(buf,sizeof(buf),stdin);
上記は標準入力が127バイト以下ならbuf変数に代入します。しかし128バイト以上なら代入しません。
A引数のサイズをチェックする
if文などを使い引数のサイズをチェックします。
|
その他の対策として、サニタイジングがあります。メタキャラクタやナル文字などの特殊文字を無効化することで不正な処理を防ぐことが出来ます。
→サニタイジングの詳細を見る
→メタキャラクタの詳細を見る
|
|
|