LWN読んだまとめ

読んだのは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の被害にあうかもよ。