回答編集履歴

1

誤記訂正

2016/11/28 01:45

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  例に挙げられた関数はいずれもバッファーオーバーランを起こす可能性がありますね。このような関数はどのくらいあるかというと「無数にある」というのが自分の認識です。自分の考えは「どの関数が危険か覚える」のは有効な手段でなく、「自分が使う全ての関数の動作と仕様を正確に知る」姿勢と実践が有効だと思います。バッファーオーバーランの脆弱性についてはよくおわかりだと思いますが、ポインターを用いる関数はその仕様をきちんとおさえていない限り全て脆弱性を持つ実装になり得ると考えても過言ではないと思いませんか?
12
12
 
13
- ポインターを直接扱えるというC,C++の特徴は効率上の大きな利点ですがバグで簡単にメモリーを破壊できてしまう点およびどのように破壊されるかが予想できる点(C/C++のランタイムはブラックボックスではない)が脆弱性に繋がりやすくなることから諸刃の剣といえると思います。これはどの関数が危険かというより「全てのポインターを用いる実装において不当なアドレスを参照しないように作られなければならない」ぐらいに認識しておくべきのことだと自分は思います。脆弱性に繋がるかどうかの前の段階の話(バグを無くすという話)ですが。
13
+ ポインターを直接扱えるというC,C++の特徴は効率上の大きな利点ですがバグで簡単にメモリーを破壊できてしまう点およびどのように破壊されるかが予想できる点(C/C++のランタイムはブラックボックスではない)が脆弱性に繋がりやすくなることから諸刃の剣といえると思います。これはどの関数が危険かというより「全てのポインターを用いる実装において不当なアドレスを参照しないように作られなければならない」ぐらいに認識しておくべきのことだと自分は思います。脆弱性に繋がるかどうかの前の段階の話(バグを無くすという話)ですが。
14
14
 
15
15
 
16
16