#author("2018-06-13T12:16:29+00:00","","")
#topicpath

//////////////////////////////////////////////////////////////////////////////
* 目次 [#d012f75f]
#contents();


//////////////////////////////////////////////////////////////////////////////
* -D_FORTIFY_SOURCE で検出する [#a8b72f7f]
- GCC の "Automatic Fortification" 機能を使って、バッファオーバーフローを起こしやすいとされている関数(gets, strcpy, memcpy など)の誤使用をコンパイル時・実行時に検出する
//============================================================================
** 使い方 [#pd1bf5d5]
- 下記のオプションを付加してコンパイルする:
 -O1 以上
 -D_FORTIFY_SOURCE=1
- これにより、次の2つのタイミングでバッファオーバーフローの検出が行われる:
|~チェックするタイミング |~チェック内容 |
|コンパイル時            |コンパイル時にチェック可能な明らかなバッファオーバーフロー |
|実行時                  |上記以外のバッファオーバーフロー |

- チェックの強化
 -D_FORTIFY_SOURCE=1
を
 -D_FORTIFY_SOURCE=2
にすると、より厳しくチェエクされるようになる。
-- 一例として、format-string bug がランタイムに検出されるようになる。
--- printf, vfprintf, syslog などの関数が "%n" を含むフォーマット文字列を引数に取って呼ばれると abort する。

//============================================================================
** チェックされる関数の一覧 [#v8699aa6]
- 下記コマンドで一覧を取得出来る:
 $ grep -r "_chk" /usr/include/ | sed 's/.*\(__.*chk\).*/\1/' | sort | uniq

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS