読んだのはLWNの11/4版の記事のひとつ「Another null pointer exploit」。
以下はtwitterにつぶやいたのを貼っつけただけだど・・・
LWNの「Another null pointer exploit」はこっちと関連がある。 http://lwn.net/Articles/360329/
当初は2.6.21カーネルのpipeで処理が遅いというレポート内容だったけど、よくよく調べると脆弱性で、カレントのカーネルにも存在してた。
レースコンディションがあったと。
タイミングによってはinode->i_pipeがNULLの場合がある。
ここで言ってるyet another null pointer vulnerabilityって前にLWNでも取り上げてたやつのことかな。
この脆弱性を利用するのは難しいけど(レースコンディションを発生させないといけないから)、コンピュータは処理を何度もトライするのは上手。
このバグの修正パッチはこれ。 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;
h=ad3960243e55320d74195fb85c975e0a8cc4466c
この修正は今までよりも処理を慎重に行うようになって、inode->i_pipeがNULLかどうかのチェックや、pipeのステータスをチェックしている。
このバグはカーネルコードにあるのと(比較的)簡単にとトリガーとなるので注目を浴びた。
でも、別にユニークな訳でもない。
2.6.31以降で修正されたヌルポなバグは結構ある. http://lwn.net/Articles/360341/
commitのタイトルでは分からないけど、実は修正されているNULLポインタまわりのバグもあるだろう。
ヌルポは一般的なバグだし、修正されずに残っているのもあるんじゃまいか。
多分ここの”We"はカーネル開発者。私たちは、ヌルポのバグを利用するのを長いこと防ぐことができたけど、いくつかのディストリ(一般的にエンタープライズなディストリ)はこの防御手段をデフォルトで無効にしている。驚くべきことに、いくつかのディストリはこのバグが未だに残ってる。
このようなディストリ使っているなら、vm.mmap_min_addrの値を適切な値に設定してもらったほうが良いよ。
そうしないと、将来より多くのnull pointer exploitsの被害にあうかもよ。