トップページunix
1001コメント247KB

FreeBSDを語れ Part26

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2009/10/17(土) 20:37:25
FreeBSDについて語るスレです。

The FreeBSD Project
http://www.freebsd.org/ja/

前スレ
FreeBSDを語れ Part25
http://pc12.2ch.net/test/read.cgi/unix/1249379155/

関連スレ
初心者もOK! FreeBSD質問スレッド その104
http://pc12.2ch.net/test/read.cgi/unix/1252852690/
FreeBSD/amd64 part2 (and for oyster901)
http://pc12.2ch.net/test/read.cgi/unix/1171335849/
0450名無しさん@お腹いっぱい。2009/12/01(火) 15:33:50
うへぇ!これを期にFreeBSD見限るか?
0451名無しさん@お腹いっぱい。2009/12/01(火) 15:35:05
あー、setuid-root なプログラムなら、そもそも getenv("LD_hoge") すべきじゃないのでは?
ってことが言いたいんですが。
それをいまさら、って言われてしまうと、FreeBSDの人達の志ってやっぱり低いのね、
って感じになっちゃうというか。
0452名無しさん@お腹いっぱい。2009/12/01(火) 15:36:07
ごめんunsetenvに失敗することあんの?
0453名無しさん@お腹いっぱい。2009/12/01(火) 15:40:38
このパッチを見て攻撃方法が全然思い浮かばない駄目駄目管理者です。
0454名無しさん@お腹いっぱい。2009/12/01(火) 15:44:36
>>451
setuid-root なプログラムでは、getenv("LD_hoge")はしないし、
かつ unsetenv("LD_hoge")もする、という2重のコードになってるのでは?
0455名無しさん@お腹いっぱい。2009/12/01(火) 18:06:39
すでにExploit code出回ってるぜ。
LD_PRELOADでsetuidなpingに突っ込んでroot件奪取できてた。
0456名無しさん@お腹いっぱい。2009/12/01(火) 18:10:14
さくら涙目でおk?
0457名無しさん@お腹いっぱい。2009/12/01(火) 18:16:22
これだから7系以降はと言おうかと思ったら6系もパッチが当てられる部分は同じw
0458名無しさん@お腹いっぱい。2009/12/01(火) 18:30:45
>>454
いいえ。
0459名無しさん@お腹いっぱい。2009/12/01(火) 19:13:37
自鯖建てて、ファイアウォールで外部からログインできないようにしてる人には関係ない話のようなので帰りますね。
0460名無しさん@お腹いっぱい。2009/12/01(火) 19:25:13
>>442
逆に、このpatchでなぜ解決になるのかがわからない。
patchを当てる前だってunsetenv("LD_PRELOAD")とかはしてたわけだし、
その戻り値を無視していたとしてもunsetenv()自体は行なわれるから、
このpatchで解決するなら、patchを当てる前でも問題は起きないように思えるが。
0461名無しさん@お腹いっぱい。2009/12/01(火) 19:27:36
libcがバグってて、unsetenv()できないような場合があるんじゃないの。
で、その場合はunsetenv()が0以外を返すから、それを見てabortすると。
0462名無しさん@お腹いっぱい。2009/12/01(火) 19:31:32
おまいら攻撃コードも見ずに妄想垂れ流して暇つぶししてんの?
0463名無しさん@お腹いっぱい。2009/12/01(火) 19:34:06
んじゃ攻撃コードここに貼り付けてよ
探すのめんどいから
0464名無しさん@お腹いっぱい。2009/12/01(火) 20:03:50
攻撃コードワラタw
むしろそんなモジュールが作れる方が問題じゃないのか?w
0465名無しさん@お腹いっぱい。2009/12/01(火) 20:09:16
>>460
> その戻り値を無視していたとしてもunsetenv()自体は行なわれるから、

行っても失敗するから。
unsetenvのman読めばどういうときに失敗するかはちゃんと書いてあって、
それ読めば簡単にunsetenvが失敗するテストケースは作れる。
0466名無しさん@お腹いっぱい。2009/12/01(火) 20:32:11
この時のパッチがまずかったんだな。レビュー不足か…。
難しいところだ。

http://www.freebsd.org/cgi/query-pr.cgi?pr=109836
0467名無しさん@お腹いっぱい。2009/12/01(火) 20:38:33
>>465
man 3 unsetenv には、
void unsetenv();
って書いてあって、unsetenv()は常に成功する関数になってます><
0468名無しさん@お腹いっぱい。2009/12/01(火) 20:47:58
>>467
intになってるぞ。8.0。
0469名無しさん@お腹いっぱい。2009/12/01(火) 20:49:15
結論

  LD_PRELOADは糞
0470名無しさん@お腹いっぱい。2009/12/01(火) 21:00:26
わかりました、FreeBSD 6.4Rに戻します。
0471名無しさん@お腹いっぱい。2009/12/01(火) 21:12:13
>>466
そうか、この時にはまだ void だったんだ。この後に
int 返すようになってる。

http://www.freebsd.org/cgi/query-pr.cgi?pr=99826
0472名無しさん@お腹いっぱい。2009/12/01(火) 21:18:40
__merge_environで'='がないとEFAULTってのもいささかヘタレすぎのような。
0473名無しさん@お腹いっぱい。2009/12/01(火) 21:30:02
>>469
FreeBSDのLD_*のハンドリングが糞なだけです。
現実逃避せずにこういう糞なコードがまぎれこまないためにどうするかを考えないと。
0474名無しさん@お腹いっぱい。2009/12/01(火) 21:31:12
char *env[] = {"", "LD_PRELOAD=hoge", NULL};
environment=env;
0475名無しさん@お腹いっぱい。2009/12/01(火) 21:31:24
rtldなんだから、ライブラリによるメモリリークを心配してリストで管理するようになった
stdlibのset/getenvを使う必要ないよね。
rtldではenvironを直接書き換える従来型のsetenv/getenvを定義して
使うのがいいんじゃなかろうか。
0476名無しさん@お腹いっぱい。2009/12/01(火) 21:34:48
>>473
みんなで現実逃避しようぜ
悪魔だ 悪魔の仕業だ 沈黙のメシアが今起きあがった ギャォ
0477名無しさん@お腹いっぱい。2009/12/01(火) 21:52:04
ttp://gihyo.jp/admin/clip/01/fdt/200912/01
あれ?3.0が出た後も2.x系列はしばらくリリースを続けるんでなかったか?
0478名無しさん@お腹いっぱい。2009/12/01(火) 22:02:41
それ以前に 年が開けてから 2.30にするか3.0にするか議論するとか
どこかで見たんだがもう次は2.30で決まったのか?
後藤君 確認してきたまえ そして報告だ ホウ、レン、ソウ!
0479名無しさん@お腹いっぱい。2009/12/01(火) 22:04:55
2.30が3.0となる予定だったが、遅れて2.32で3.0になることになった。
2.30はそのまま出る。
0480名無しさん@お腹いっぱい。2009/12/01(火) 22:10:23
よろしい! 殊勝な心がけだ 後藤君
今後も励みたまえ
0481名無しさん@お腹いっぱい。2009/12/01(火) 22:28:17
>>474
えっと、environmentじゃなくて environだよね?

環境変数リストの頭に "" があると unsetenv()が "" より後の変数を見落とすってこと?

ちなみにLinuxで試すと >>474 でも unsetenv()は正常動作した。
0482名無しさん@お腹いっぱい。2009/12/01(火) 22:51:57
わかりました、Linuxに戻します
0483名無しさん@お腹いっぱい。2009/12/01(火) 22:55:32
結局8.0は入れちゃっていいの?
0484名無しさん@お腹いっぱい。2009/12/01(火) 23:09:09
早く入れてっ
0485名無しさん@お腹いっぱい。2009/12/01(火) 23:33:47
だめぇ♪
0486名無しさん@お腹いっぱい。2009/12/01(火) 23:52:02
zfsrootにしてる7.2から8.0に上げるには結局LiveCDがいるなあ
0487名無しさん@お腹いっぱい。2009/12/02(水) 04:29:22
みんな気合が足りんて。
0488名無しさん@お腹いっぱい。2009/12/02(水) 05:19:19
あ、やっとわかったお。
0489名無しさん@お腹いっぱい。2009/12/02(水) 06:48:46
やっぱlibcのバグじゃん。
unsetenv()の方を修正するのがスジじゃないの?
たとえエラー返すにしても、引数変数名のunsetenvは必ず実行するように。
0490名無しさん@お腹いっぱい。2009/12/02(水) 07:57:02
>>489
それを言うならどう直せばいいのかまで書くべき
0491名無しさん@お腹いっぱい。2009/12/02(水) 08:11:17
>>490
書いてるじゃん。日本語読めないのか?

unsetenv()は、たとえ変数名に不正なものがあってエラーになっても、
常に引数変数のunsetは実行する。

または、以前の void unsetenv()の動作に戻し、
互換性のため、戻り値だけ常に0を返すようにしておく。
0492名無しさん@お腹いっぱい。2009/12/02(水) 09:35:43
>>491
あなたが問題の本質がわかってないことはわかりました。
0493名無しさん@お腹いっぱい。2009/12/02(水) 10:23:50
「既存」環境変数に "=" を含まない不正な変数があったからと言って、
unsetenvの動作自体を中断するのは余計な仕様→バグだな。

POSIX(笑)か何かでunsetenv()をint型にするように要請されたとしても、
処理は変えずに黙って return 0;だけ追加しておけば良かったものを。
0494名無しさん@お腹いっぱい。2009/12/02(水) 10:29:44
え?
0495名無しさん@お腹いっぱい。2009/12/02(水) 10:41:11
「"=" を含まない不正な環境リスト」と言って欲しいのか?
0496名無しさん@お腹いっぱい。2009/12/02(水) 10:42:40
はやくなんとかしないと。
0497名無しさん@お腹いっぱい。2009/12/02(水) 10:43:52
unsetenv()だけ FreeBSD 6.x以前のものに差し替えればOK
0498名無しさん@お腹いっぱい。2009/12/02(水) 10:44:12
>>493
修正したのは unsetenv の中じゃないし、
unsetenv で return 0 したら今までの挙動と同じになって
脆弱性消えないだろ? プログラム読めないなら黙ってろ。
0499名無しさん@お腹いっぱい。2009/12/02(水) 10:46:22
やっぱり、昨日からプログラム読みもしないし読めもしないのが偉そうなこと書いてる感じするよねえ
0500名無しさん@お腹いっぱい。2009/12/02(水) 10:47:26
>>498
そうじゃなくて、
6.x以前の void unsetenv() の動作に戻した上で
return 0; するんだよ。

unsetenv()さえ動作すれば、戻り値は本質じゃない。

今の unsetenv()は、>>474 みたいに不正な環境リストに設定された状態で
実行すると、処理を放棄して実際には unsetenvしないことが問題なの。

昔の void unsetenv() なら、>>474 みたいな不正な環境からでも
unsetenv()は強制的に動作する。
0501名無しさん@お腹いっぱい。2009/12/02(水) 10:49:21
プログラム読めないのは >>498 の方みたいだねw
0502名無しさん@お腹いっぱい。2009/12/02(水) 10:49:35
>>491みたいなのが
ttp://pc12.2ch.net/test/read.cgi/unix/1256451900/538
なことを言う傾向にあるね
0503名無しさん@お腹いっぱい。2009/12/02(水) 10:55:38
>>474 みたいに、環境リストの先頭に
"" (空文字列) とかがあった場合、

7.x 以降の unsetenv("HOGE")は、エラーでリターンして、HOGEをリセットしない。
6.x 以前の unsetenv("HOGE")は、HOGEをリセットする。

というのが本質なんだ。
0504名無しさん@お腹いっぱい。2009/12/02(水) 10:56:57
前から「0-day があるぞ」って動画が流れてた奴とは別
っぽいのが気になる…

http://www.youtube.com/watch?v=gJ9KYON1l3Q
0505名無しさん@お腹いっぱい。2009/12/02(水) 11:07:19
>>504
exploit コード見つけた。6.4 以前、SMP 環境で再現する。
↓で直ってたんだな。

http://security.freebsd.org/advisories/FreeBSD-SA-09:13.pipe.asc
0506名無しさん@お腹いっぱい。2009/12/02(水) 11:20:17
>>504-505
この時期に紛らわしい話題を一緒にするなよ。
>>504-505 に書いてるのは LD_PRELOADとは別件なので。

今回の件は 6.4以前のユーザーには無問題。
0507名無しさん@お腹いっぱい。2009/12/02(水) 11:28:51
そんなこと言われるんだったら >>442 なんて
持って来なけりゃよかったよ…orz
0508名無しさん@お腹いっぱい。2009/12/02(水) 11:36:32
init 0
0509名無しさん@お腹いっぱい。2009/12/02(水) 11:42:49
>442のネタ自体はタイムリーな話なわけだし、
その点については何ら非のあるところではない。
気にしないことだね。
05102009/12/02(水) 12:17:29
するメイカが歯に挟まったんだが、どうすればいい?
0511名無しさん@お腹いっぱい。2009/12/02(水) 13:25:41
歯を折れ
ID出ないからわかりにくい
0512名無しさん@お腹いっぱい。2009/12/02(水) 17:39:52
6.4は大丈夫らしいね。

7系以降はやっぱり糞w
0513名無しさん@お腹いっぱい。2009/12/02(水) 21:39:03
新機能の実装に追われて疎かになったんかな
0514名無しさん@お腹いっぱい。2009/12/02(水) 22:21:30
何もかもお前らがsend-prしないせい
0515名無しさん@お腹いっぱい。2009/12/02(水) 22:40:53
なぜかrtld.cへのパッチが当たらずrejectされる
ファイルのsha256も合致してるのになぜだ

手で当てるか・・・
0516名無しさん@お腹いっぱい。2009/12/02(水) 22:45:32
localならどうでもいいっていうか
0517名無しさん@お腹いっぱい。2009/12/02(水) 23:38:42
>515
俺も手で当てたなー。たいした量じゃないし。
0518名無しさん@お腹いっぱい。2009/12/03(木) 01:46:26
オレ、自作パッチにした。rtld入れ替えるのは緊張した。
0519名無しさん@お腹いっぱい。2009/12/03(木) 02:29:55
俺の脳にもパッチ当ててくだしあ;
0520名無しさん@お腹いっぱい。2009/12/03(木) 07:20:43
こりゃひどい
スクラッチから書いた方がましだな
0521名無しさん@お腹いっぱい。2009/12/03(木) 08:10:55
>>520
任せた
0522名無しさん@お腹いっぱい。2009/12/03(木) 09:27:07
>>520
神来た!これで勝つる
0523名無しさん@お腹いっぱい。2009/12/03(木) 11:11:44
ただいま1,000個のportsを再インストール中なのだが
0524名無しさん@お腹いっぱい。2009/12/03(木) 12:04:34
>>519-522 後の520BSDが誕生した瞬間である
0525名無しさん@お腹いっぱい。2009/12/03(木) 12:22:57
記念カキコ
0526名無しさん@お腹いっぱい。2009/12/03(木) 12:47:28
京都府警がアップを始めました。
0527名無しさん@お腹いっぱい。2009/12/03(木) 13:09:34
仮想環境でZFSrootの7.2→8.0のアップグレード成功したのでチラ裏

installkernel後にDVDで起動してFixitでzpool import -f <pool>
zpool upgradeとzfs upgradeでZFSをアップグレード
unset vfs.root.mountfromで起動ディスクをルートに起動
zfs mountを使わずmount -t zfs <zfs_filesystem> <mount point>でルートパーティション以外をマウント
legacyのルートパーティションだけは/mntにマウント
mergemaster -p ×2
シンボリックリンクの/mnt/bootは削除して空のディレクトリを作成
/と/mntにmake NO_FSCHG=true installworldしてから/mnt/usr,var,boot下の余計なファイルは削除
/mnt/boot もシンボリックリンクに戻す
mergemaster -iUF×2
再起動

参考リンク
http://www.daemonology.net/blog/2009-07-11-freebsd-update-to-8.0-beta1.html
http://mohi.teak.jp/blog/memorandum/021
http://toriyu.jp/hitorigoto/id2416.html
http://www.cyberciti.biz/faq/freebsd-8-upgrade-tutorial/
http://d.hatena.ne.jp/usaka/20090602
http://docs.sun.com/app/docs/doc/819-6260/gffys?l=ja&a=view
http://docs.sun.com/app/docs/doc/819-6260/gcikw?l=ja&a=view
0528名無しさん@お腹いっぱい。2009/12/03(木) 13:10:00
>>520
今、勇者が立ち上がった!
0529名無しさん@お腹いっぱい。2009/12/03(木) 13:36:54
mergemaster 関連がx2になってるのはよく気づいたなあ…
0530名無しさん@お腹いっぱい。2009/12/03(木) 17:23:21
>>527
ありがと
0531名無しさん@お腹いっぱい。2009/12/03(木) 19:12:39
cups更新したら両面印刷できなくなった。 lp -o sides=two-sided-long-edge効かない。戻すか……。
0532名無しさん@お腹いっぱい。2009/12/03(木) 19:59:04
SA出たよ。
http://security.freebsd.org/advisories/FreeBSD-SA-09:17.freebsd-update.asc
0533名無しさん@お腹いっぱい。2009/12/03(木) 20:04:19
rtld はこっちだね。↑のは別件だ。
http://security.freebsd.org/advisories/FreeBSD-SA-09:16.rtld.asc
0534名無しさん@お腹いっぱい。2009/12/03(木) 20:12:33
もいっちょ。これは SSL。
http://security.freebsd.org/advisories/FreeBSD-SA-09:15.ssl.asc
0535名無しさん@お腹いっぱい。2009/12/03(木) 20:20:53
・SSL 関連。
http://security.freebsd.org/advisories/FreeBSD-SA-09:15.ssl.asc
・rtld 関連。
http://security.freebsd.org/advisories/FreeBSD-SA-09:16.rtld.asc

上記二つについて amd64 な人は更に↓を見て lib32
も構築し直すこと。
http://www.FreeBSD.org/handbook/makeworld.html

・freebsd-update 関連
http://security.freebsd.org/advisories/FreeBSD-SA-09:17.freebsd-update.asc

これについてはパッチを適用してインストールすると共に
# chmod 0700 /var/db/freebsd-udpate/
の実施を忘れないように。
0536名無しさん@お腹いっぱい。2009/12/03(木) 21:23:54
>>535
結局 make world しろ、ってことだよなあ
lib32 だけの再構築方法ってそこに書いてあるか?
0537名無しさん@お腹いっぱい。2009/12/03(木) 21:40:21
make build32 install32 とかじゃダメかなあ?
0538名無しさん@お腹いっぱい。2009/12/03(木) 22:07:06
メジャーバージョンをあげて
portupgrade -af とかでインストール済みのportsをビルドしなおすとき
途中でエラーとかのせいで全部終了できなかった場合に
途中からやるようにするにはどうすればいいのだろうか

portupgradeまわりのportsをリビルド対象から除外できればいいんですけど
0539名無しさん@お腹いっぱい。2009/12/03(木) 22:17:05
セキュリティアドバイザリを出した時点で
newvers.sh のバージョン記述をあげ忘れてたってのどういうこった
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/conf/newvers.sh
0540名無しさん@お腹いっぱい。2009/12/03(木) 22:31:43
RELEASE-p の数字だよね?
STABLE な人には関係無い?
今三台 build world 終わったところなんだけど…。
0541名無しさん@お腹いっぱい。2009/12/03(木) 22:32:28
関係無さそうだ…。
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/conf/newvers.sh.diff?r1=1.83.2.6.2.3;r2=1.83.2.6.2.4;f=h
0542名無しさん@お腹いっぱい。2009/12/03(木) 23:31:42
>>540
まさに数字だけ。
だが後日の混乱の元なのでもういちどbuildkernelするぜ('A`)
0543名無しさん@お腹いっぱい。2009/12/04(金) 00:27:35
緊急パッチ
http://japan.zdnet.com/sp/feature/07zeroday/story/0,3800083088,20404580,00.htm
0544名無しさん@お腹いっぱい。2009/12/04(金) 00:28:11
>>543
>>533
0545名無しさん@お腹いっぱい。2009/12/04(金) 10:01:54
来たぞ〜

The NVIDIA Corporation releases an initial BETA version of
NVIDIA 195.22 FreeBSD graphics drivers for both i386 and amd64 architectures.
http://www.freebsd.org/news/newsflash.html#event20091203:01
0546名無しさん@お腹いっぱい。2009/12/04(金) 10:11:49
ATIなんて最初からいらんかったんや!
0547名無しさん@お腹いっぱい。2009/12/04(金) 10:44:14
GF210でも買っとくかな
0548名無しさん@お腹いっぱい。2009/12/04(金) 18:41:28
デフォルトのLD_LIBRARY_PATHをみる方法ってある?
0549名無しさん@お腹いっぱい。2009/12/04(金) 18:48:48
>548
man rtld
man ldconfig
ldconfig -r
0550名無しさん@お腹いっぱい。2009/12/04(金) 22:18:47
>>538
始めた日時をメモっておいて

portupgrade -f '<YYYY-MM-DD HH:MM'
■ このスレッドは過去ログ倉庫に格納されています