[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [update] security/undated/1ldso.wml (1.6 -> 1.7)



久保田です。

From: SUGIYAMA Tomoaki <tomos@xxxxxxxxxxxxxxxx>
Subject: [update] security/undated/1ldso.wml (1.6 -> 1.7)
Date: Tue, 3 Feb 2004 01:27:01 +0900

> +Linux においては、共有ライブラリに対してリンクしたプログラムが、/lib/ld.so
> +(a.out バイナリ用) あるいは /lib/ld-linux.so (ELF バイナリ用) に含まれて
> +いたあるコードを実行します。それは共有ライブラリをロードし、シンボルを
> +すべて拘束します。エラーがこの段階中に生じる場合、エラーメッセージが
> +印刷され、プログラムは終了します。この段階で使用される printf 置換は、
> +バッファオーバランから保護されません。

「Linux においては、共有ライブラリにリンクされたプログラムは、
/lib/ld.so (a.out バイナリの場合) または /lib/ld-linux.so
(ELF バイナリの場合) に含まれるコードを実行し、このコードが
共有ライブラリをロードしてすべてのシンボルを結び付けます。
この段階でエラーが起きた場合には、エラーメッセージが表示され、
プログラムが終了します。この段階で使用される printf 代用品は、
バッファオーバーランから保護されません。」


かなあ。bind をどう訳すかが難しいところです。イメージとしては、
プログラムから共有ライブラリ中の関数(など)を呼び出した際、
呼び出し側と呼び出され側とをつなげる、ということだと思うのですが。
専門用語で決まった言い方がありそうな気がします。

print は、この場合は(たいていの場合は)印刷ではなくて(画面への)
表示です。もしかしたらログファイルへの書き込みかもしれませんが。

replacement が意味するところは、通常の printf() 関数はそれそのものが
共有ライブラリ (libc) 中の関数なので、共有ライブラリ呼び出し過程で
エラーが生じた場合は通常の printf() が使えないので代用品を用意して
ある、ということだと思います。その代用 printf() に脆弱性があった
ということでしょう。

---
久保田智広 Tomohiro KUBOTA <kubota@debian.org>
http://www.debian.or.jp/~kubota/