おはようございます、マーシーです。
GWも終わり、めっきり暖かくなってきましたね。
私は半袖、ハーフパンツと一足お先に夏の格好を満喫しております
さて、本日は書籍の紹介です。
「C/C++セキュアコーディング (SEI SERIES・A CERT BOOK)」
int foo[10];
for( int i=0; i<=10; i++ ) {
foo[i] = i;
}
配列の要素数を超えた値にアクセスしようとする
一般的に「バッファオーバーフロー」と呼ばれる処理です。
プログラムを書いたことがある人であれば、
ほとんどの人がお目にかかったことがあると思います
そして、このソースを見たプログラマは
「やばい、すぐに直そう(直してもらおう)」
と考えるに違いありません
この本は上記のような危険なコードに対して、
それがなぜ危険なのか、下記の点から詳細に解説してくれます。
プログラムコードの中でどのような処理がされるのか?
所謂、悪意ある攻撃者が、この危険なコードにどのような攻撃を行うことができるのか?
例えば、上の「バッファオーバーフロー」ですが、
これはプログラム作成者が「意図しない」メモリを上書きしてしまいます。
もし、上書きされるのがスタックポインタであったり、フレームポインタであった場合、
そのプログラムは停止すると思われます。
しかも、悪意ある攻撃者にかかると、この上書きの特性を利用して
送り込んだウィルスプログラムをリモートで実行することすら可能になってしまいます
このような危険なコードに対する対処法もいくつか掲載されています。
いくつか抜粋して紹介します。
危険な処理を起こしやすい関数をより安全な拡張関数に変更する
プログラムを実行した際に危険なコードを検知するような仕組みを入れる
危険なコードを検知するようなライブラリを組み込む
この本を読んでいくことで、自分が如何に危険なコードを書いていたのかということがよくわかりました。
また、危険なコードを書く事を未然に防ぐためには、
それがどのように危険なのか、正しい知識が必要だとも強く感じました。
もし、危険なコードに心当たりがあり、それを予防する方法に興味を持たれた方は
是非、この本を読んで見てください
私もこれからは危険なコードを書かないよう意識して、プログラムをしていこうと思います。