#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