水と安全はタダではない!? SSP編
Aug 29, 2017 · 2 min read
ウイルスなどがプログラム実行時の制御を不正に奪う手段の一つとして,メモリ(内部状態)を上書きする行為があります.いわゆるバッファーオーバーフロー攻撃です.
その対策技術はいくつかありますが,Stack Smashing Protector,いわゆるSSP が有名です.現在は,GCCコンパイラのバージョン 4.1 以降では標準機能とされています.
GCC のSSPは,コンパイル時に,スタック領域上に配置されるリターンアドレス,フレームポインタ,関数の引数,ローカル変数,及び,ポインタを保護する機能のコードを,オリジナルプログラムに追加します.
SSPの追加コードによって,どの程度「.text 領域」(オリジナルコード部分)が増加するのかを,以前,研究室で確認したところ,Apache の場合,約14.3%増えていました.
こういう数字がどういう意味を持つかは状況にもよりますが,安全装置も「色々とてんこ盛り」にすれば,それなりにそれなりです.セキュリティ対策もタダというわけにはいかないのですねぇ
計測環境:
Ubuntu 14.04 LTS 32bit
Linux Kernel 3.13.0–29-generic
GCC 4.9.1
Apache httpd-2.4.9
備考:-fstack-protector-allと非適用時の比較
2017/08/30 st
