セキュリティとの関連
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 16:40 UTC 版)
「Off-by-oneエラー」の記事における「セキュリティとの関連」の解説
off-by-oneエラーのうちセキュリティに関係したバグとなる典型的な例は、libcのstrncat関数の使用法の誤りによるものである。strncat関数に関するよくある誤解としては「連結した文字列と終端のnull文字を足した長さは引数で指定した最大長を超えることはない」というものがある。実際には、終端のnull文字を含めると、指定した最大長より1文字多く書き込みが行われる。以下のコードはこの種のバグを含んでいる。 void foo (char *s) { char buf[15]; memset(buf, 0, sizeof(buf)); strncat(buf, s, sizeof(buf)); // 最後の引数は sizeof(buf)-1 でなければならない return;} システムによっては(特にリトルエンディアンのアーキテクチャの場合)、このバグによってフレームポインタの最下位のバイトが上書きされてしまうことがある。攻撃者はこれを利用して呼び出し中のルーチンのローカル変数を書き換えられるため、このバグはセキュリティホールとなることがある。
※この「セキュリティとの関連」の解説は、「Off-by-oneエラー」の解説の一部です。
「セキュリティとの関連」を含む「Off-by-oneエラー」の記事については、「Off-by-oneエラー」の概要を参照ください。
- セキュリティとの関連のページへのリンク