パスワードを忘れた? アカウント作成
771617 submission
BSD

OpenBSD: 文字列処理のクリーンアップ

タレコミ by BSD
BSD 曰く、
OpenBSD の Theo De Raadt 関係者にあてたメールによると、 潜在的なバッファオーバーフローを防ぐために、 処理中に常時バッファ境界を計算するような変更を与えたとのことである。 彼は以下のように述べている。 文字列処理の見直しは、sprintf()、strcpy()、strcat() を一掃することにある。 替わりに、asprintf()、snprintf()、 strlcpy()、strlcat() を使用する。 その結果、約 2000 個のこれらの関数使用部分を消去した。 最終目標は、常にバッファ境界を計算して潜在的なオーバーフローをなくす ことである。そのため、それらのコードはデータのあふれの代わりに切り捨て を行う。すると、次の仕事は切り捨てを行った個所を検討して、切り捨て処理が 好ましくない個所を見つけることだった。 この作業の中であちこちに小さなバグが入った可能性がある。 しかし、それはもともとあった大きなバグに比べればずっとましなものである。 この作業は OS のオリジナル部分から始めた。GNU の部分は汚いままである。 httpd と OpenSSL の部分は完了している。 bind や sendmail は開発チームでこの方向への改善を行っていると考えている。 我々の基本的プログラムの中で問題の関数を使用しているものは、 routed、dump、restore 等、十数個ある。 また、ライブラリ中にも同じ問題がある。 そして最後に非常に対応が難しい afs、gcc、binutils 等が残っている。 もうすぐ、カーネルはこれらの関数を一掃するだろう。そして、 i386 の W^X (実行コード領域に書き込み禁止する機能)対応を待って、 より安全なものになるだろう。
typodupeerror

アレゲは一日にしてならず -- アレゲ見習い

読み込み中...