安全通告: rtld (SA-09:16.rtld)
主題: Improper environment sanitization in rtld(1)
分類: core
模組: rtld
發布時間: 2009-12-03
影響版本: FreeBSD 7.0 和之後版本.
修正版本: 2009-12-01 02:59:22 UTC (RELENG_8, 8.0-STABLE)
2009-12-03 09:18:40 UTC (RELENG_8_0, 8.0-RELEASE-p1)
2009-12-01 03:00:16 UTC (RELENG_7, 7.2-STABLE)
2009-12-03 09:18:40 UTC (RELENG_7_2, 7.2-RELEASE-p5)
2009-12-03 09:18:40 UTC (RELENG_7_1, 7.1-RELEASE-p9)
I. 相關背景資料
run-time link-editor, rtld, 連結動態且所需的函式. 亦允許使用者明確的透過various LD_ environmental 變數載入函式.
II. 問題描述
當執行setuid程式 rtld通常會移除潛在的危險變數. 依據最近FreeBSD的最近變化,一個惡意的環境可能導致unset環境變數失敗.
III. 影響
一個使用者可以執行任何setuid程式並且取得權限.在多數情況下,會取得root權限.
IV. 替代方案
無替代方案, 但系統若沒有不信任的使用者,或是沒有任何不信任的使用者可以執行code狀況,可以忽略此安全通告.
注意:"不信任的使用者"包含使用者可以上傳&執行scripts(CGI, PHP, Python, Perl 等等.)
V. 解決方案
以下擇一即可:
1) 昇級系統至 7-STABLE 或 8-STABLE,或 RELENG_8_0, RELENG_7_2,
或 RELENG_7_1 安全修正更新日期後的版本.
2) 修補現有系統:
a)下載修補檔案 : 以下修補提供給 7.1, 7.2,和 8.0 版本.
[FreeBSD 7.x]
# fetch http://security.FreeBSD.org/patches/SA-09:16/rtld7.patch
# fetch http://security.FreeBSD.org/patches/SA-09:16/rtld7.patch.asc
[FreeBSD 8.0]
# fetch http://security.FreeBSD.org/patches/SA-09:16/rtld.patch
# fetch http://security.FreeBSD.org/patches/SA-09:16/rtld.patch.asc
b) 修補patch檔案.(root身分)
# cd /usr/src
# patch < /path/to/patch
# cd /usr/src/libexec/rtld-elf
# make obj && make depend && make && make install
補充:
在amd64平台, 上述動作將不會更新ld-elf32.so.1 函式 (i386 compatibility) .amd64需要重新make world.