FreeBSDを語れ Part26
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2009/10/17(土) 20:37:25The 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:500451名無しさん@お腹いっぱい。
2009/12/01(火) 15:35:05ってことが言いたいんですが。
それをいまさら、って言われてしまうと、FreeBSDの人達の志ってやっぱり低いのね、
って感じになっちゃうというか。
0452名無しさん@お腹いっぱい。
2009/12/01(火) 15:36:070453名無しさん@お腹いっぱい。
2009/12/01(火) 15:40:380454名無しさん@お腹いっぱい。
2009/12/01(火) 15:44:36setuid-root なプログラムでは、getenv("LD_hoge")はしないし、
かつ unsetenv("LD_hoge")もする、という2重のコードになってるのでは?
0455名無しさん@お腹いっぱい。
2009/12/01(火) 18:06:39LD_PRELOADでsetuidなpingに突っ込んでroot件奪取できてた。
0456名無しさん@お腹いっぱい。
2009/12/01(火) 18:10:140457名無しさん@お腹いっぱい。
2009/12/01(火) 18:16:220458名無しさん@お腹いっぱい。
2009/12/01(火) 18:30:45いいえ。
0459名無しさん@お腹いっぱい。
2009/12/01(火) 19:13:370460名無しさん@お腹いっぱい。
2009/12/01(火) 19:25:13逆に、このpatchでなぜ解決になるのかがわからない。
patchを当てる前だってunsetenv("LD_PRELOAD")とかはしてたわけだし、
その戻り値を無視していたとしてもunsetenv()自体は行なわれるから、
このpatchで解決するなら、patchを当てる前でも問題は起きないように思えるが。
0461名無しさん@お腹いっぱい。
2009/12/01(火) 19:27:36で、その場合はunsetenv()が0以外を返すから、それを見てabortすると。
0462名無しさん@お腹いっぱい。
2009/12/01(火) 19:31:320463名無しさん@お腹いっぱい。
2009/12/01(火) 19:34:06探すのめんどいから
0464名無しさん@お腹いっぱい。
2009/12/01(火) 20:03:50むしろそんなモジュールが作れる方が問題じゃないのか?w
0465名無しさん@お腹いっぱい。
2009/12/01(火) 20:09:16> その戻り値を無視していたとしても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:33man 3 unsetenv には、
void unsetenv();
って書いてあって、unsetenv()は常に成功する関数になってます><
0468名無しさん@お腹いっぱい。
2009/12/01(火) 20:47:58intになってるぞ。8.0。
0469名無しさん@お腹いっぱい。
2009/12/01(火) 20:49:15LD_PRELOADは糞
0470名無しさん@お腹いっぱい。
2009/12/01(火) 21:00:260471名無しさん@お腹いっぱい。
2009/12/01(火) 21:12:13そうか、この時にはまだ void だったんだ。この後に
int 返すようになってる。
http://www.freebsd.org/cgi/query-pr.cgi?pr=99826
0472名無しさん@お腹いっぱい。
2009/12/01(火) 21:18:400473名無しさん@お腹いっぱい。
2009/12/01(火) 21:30:02FreeBSDのLD_*のハンドリングが糞なだけです。
現実逃避せずにこういう糞なコードがまぎれこまないためにどうするかを考えないと。
0474名無しさん@お腹いっぱい。
2009/12/01(火) 21:31:12environment=env;
0475名無しさん@お腹いっぱい。
2009/12/01(火) 21:31:24stdlibのset/getenvを使う必要ないよね。
rtldではenvironを直接書き換える従来型のsetenv/getenvを定義して
使うのがいいんじゃなかろうか。
0476名無しさん@お腹いっぱい。
2009/12/01(火) 21:34:48みんなで現実逃避しようぜ
悪魔だ 悪魔の仕業だ 沈黙のメシアが今起きあがった ギャォ
0477名無しさん@お腹いっぱい。
2009/12/01(火) 21:52:04あれ?3.0が出た後も2.x系列はしばらくリリースを続けるんでなかったか?
0478名無しさん@お腹いっぱい。
2009/12/01(火) 22:02:41どこかで見たんだがもう次は2.30で決まったのか?
後藤君 確認してきたまえ そして報告だ ホウ、レン、ソウ!
0479名無しさん@お腹いっぱい。
2009/12/01(火) 22:04:552.30はそのまま出る。
0480名無しさん@お腹いっぱい。
2009/12/01(火) 22:10:23今後も励みたまえ
0481名無しさん@お腹いっぱい。
2009/12/01(火) 22:28:17えっと、environmentじゃなくて environだよね?
環境変数リストの頭に "" があると unsetenv()が "" より後の変数を見落とすってこと?
ちなみにLinuxで試すと >>474 でも unsetenv()は正常動作した。
0482名無しさん@お腹いっぱい。
2009/12/01(火) 22:51:570483名無しさん@お腹いっぱい。
2009/12/01(火) 22:55:320484名無しさん@お腹いっぱい。
2009/12/01(火) 23:09:090485名無しさん@お腹いっぱい。
2009/12/01(火) 23:33:470486名無しさん@お腹いっぱい。
2009/12/01(火) 23:52:020487名無しさん@お腹いっぱい。
2009/12/02(水) 04:29:220488名無しさん@お腹いっぱい。
2009/12/02(水) 05:19:190489名無しさん@お腹いっぱい。
2009/12/02(水) 06:48:46unsetenv()の方を修正するのがスジじゃないの?
たとえエラー返すにしても、引数変数名のunsetenvは必ず実行するように。
0490名無しさん@お腹いっぱい。
2009/12/02(水) 07:57:02それを言うならどう直せばいいのかまで書くべき
0491名無しさん@お腹いっぱい。
2009/12/02(水) 08:11:17書いてるじゃん。日本語読めないのか?
unsetenv()は、たとえ変数名に不正なものがあってエラーになっても、
常に引数変数のunsetは実行する。
または、以前の void unsetenv()の動作に戻し、
互換性のため、戻り値だけ常に0を返すようにしておく。
0492名無しさん@お腹いっぱい。
2009/12/02(水) 09:35:43あなたが問題の本質がわかってないことはわかりました。
0493名無しさん@お腹いっぱい。
2009/12/02(水) 10:23:50unsetenvの動作自体を中断するのは余計な仕様→バグだな。
POSIX(笑)か何かでunsetenv()をint型にするように要請されたとしても、
処理は変えずに黙って return 0;だけ追加しておけば良かったものを。
0494名無しさん@お腹いっぱい。
2009/12/02(水) 10:29:440495名無しさん@お腹いっぱい。
2009/12/02(水) 10:41:110496名無しさん@お腹いっぱい。
2009/12/02(水) 10:42:400497名無しさん@お腹いっぱい。
2009/12/02(水) 10:43:520498名無しさん@お腹いっぱい。
2009/12/02(水) 10:44:12修正したのは unsetenv の中じゃないし、
unsetenv で return 0 したら今までの挙動と同じになって
脆弱性消えないだろ? プログラム読めないなら黙ってろ。
0499名無しさん@お腹いっぱい。
2009/12/02(水) 10:46:220500名無しさん@お腹いっぱい。
2009/12/02(水) 10:47:26そうじゃなくて、
6.x以前の void unsetenv() の動作に戻した上で
return 0; するんだよ。
unsetenv()さえ動作すれば、戻り値は本質じゃない。
今の unsetenv()は、>>474 みたいに不正な環境リストに設定された状態で
実行すると、処理を放棄して実際には unsetenvしないことが問題なの。
昔の void unsetenv() なら、>>474 みたいな不正な環境からでも
unsetenv()は強制的に動作する。
0501名無しさん@お腹いっぱい。
2009/12/02(水) 10:49:210502名無しさん@お腹いっぱい。
2009/12/02(水) 10:49:35ttp://pc12.2ch.net/test/read.cgi/unix/1256451900/538
なことを言う傾向にあるね
0503名無しさん@お腹いっぱい。
2009/12/02(水) 10:55:38"" (空文字列) とかがあった場合、
7.x 以降の unsetenv("HOGE")は、エラーでリターンして、HOGEをリセットしない。
6.x 以前の unsetenv("HOGE")は、HOGEをリセットする。
というのが本質なんだ。
0504名無しさん@お腹いっぱい。
2009/12/02(水) 10:56:57っぽいのが気になる…
http://www.youtube.com/watch?v=gJ9KYON1l3Q
0505名無しさん@お腹いっぱい。
2009/12/02(水) 11:07:19exploit コード見つけた。6.4 以前、SMP 環境で再現する。
↓で直ってたんだな。
http://security.freebsd.org/advisories/FreeBSD-SA-09:13.pipe.asc
0506名無しさん@お腹いっぱい。
2009/12/02(水) 11:20:17この時期に紛らわしい話題を一緒にするなよ。
>>504-505 に書いてるのは LD_PRELOADとは別件なので。
今回の件は 6.4以前のユーザーには無問題。
0507名無しさん@お腹いっぱい。
2009/12/02(水) 11:28:51持って来なけりゃよかったよ…orz
0508名無しさん@お腹いっぱい。
2009/12/02(水) 11:36:320509名無しさん@お腹いっぱい。
2009/12/02(水) 11:42:49その点については何ら非のあるところではない。
気にしないことだね。
0510↑
2009/12/02(水) 12:17:290511名無しさん@お腹いっぱい。
2009/12/02(水) 13:25:41ID出ないからわかりにくい
0512名無しさん@お腹いっぱい。
2009/12/02(水) 17:39:527系以降はやっぱり糞w
0513名無しさん@お腹いっぱい。
2009/12/02(水) 21:39:030514名無しさん@お腹いっぱい。
2009/12/02(水) 22:21:300515名無しさん@お腹いっぱい。
2009/12/02(水) 22:40:53ファイルのsha256も合致してるのになぜだ
手で当てるか・・・
0516名無しさん@お腹いっぱい。
2009/12/02(水) 22:45:320517名無しさん@お腹いっぱい。
2009/12/02(水) 23:38:42俺も手で当てたなー。たいした量じゃないし。
0518名無しさん@お腹いっぱい。
2009/12/03(木) 01:46:260519名無しさん@お腹いっぱい。
2009/12/03(木) 02:29:550520名無しさん@お腹いっぱい。
2009/12/03(木) 07:20:43スクラッチから書いた方がましだな
0521名無しさん@お腹いっぱい。
2009/12/03(木) 08:10:55任せた
0522名無しさん@お腹いっぱい。
2009/12/03(木) 09:27:07神来た!これで勝つる
0523名無しさん@お腹いっぱい。
2009/12/03(木) 11:11:440524名無しさん@お腹いっぱい。
2009/12/03(木) 12:04:340525名無しさん@お腹いっぱい。
2009/12/03(木) 12:22:570526名無しさん@お腹いっぱい。
2009/12/03(木) 12:47:280527名無しさん@お腹いっぱい。
2009/12/03(木) 13:09:34installkernel後に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今、勇者が立ち上がった!
0529名無しさん@お腹いっぱい。
2009/12/03(木) 13:36:540530名無しさん@お腹いっぱい。
2009/12/03(木) 17:23:21ありがと
0531名無しさん@お腹いっぱい。
2009/12/03(木) 19:12:390532名無しさん@お腹いっぱい。
2009/12/03(木) 19:59:04http://security.freebsd.org/advisories/FreeBSD-SA-09:17.freebsd-update.asc
0533名無しさん@お腹いっぱい。
2009/12/03(木) 20:04:19http://security.freebsd.org/advisories/FreeBSD-SA-09:16.rtld.asc
0534名無しさん@お腹いっぱい。
2009/12/03(木) 20:12:33http://security.freebsd.org/advisories/FreeBSD-SA-09:15.ssl.asc
0535名無しさん@お腹いっぱい。
2009/12/03(木) 20:20:53http://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結局 make world しろ、ってことだよなあ
lib32 だけの再構築方法ってそこに書いてあるか?
0537名無しさん@お腹いっぱい。
2009/12/03(木) 21:40:210538名無しさん@お腹いっぱい。
2009/12/03(木) 22:07:06portupgrade -af とかでインストール済みのportsをビルドしなおすとき
途中でエラーとかのせいで全部終了できなかった場合に
途中からやるようにするにはどうすればいいのだろうか
portupgradeまわりのportsをリビルド対象から除外できればいいんですけど
0539名無しさん@お腹いっぱい。
2009/12/03(木) 22:17:05newvers.sh のバージョン記述をあげ忘れてたってのどういうこった
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/conf/newvers.sh
0540名無しさん@お腹いっぱい。
2009/12/03(木) 22:31:43STABLE な人には関係無い?
今三台 build world 終わったところなんだけど…。
0541名無しさん@お腹いっぱい。
2009/12/03(木) 22:32:28http://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まさに数字だけ。
だが後日の混乱の元なのでもういちどbuildkernelするぜ('A`)
0543名無しさん@お腹いっぱい。
2009/12/04(金) 00:27:35http://japan.zdnet.com/sp/feature/07zeroday/story/0,3800083088,20404580,00.htm
0544名無しさん@お腹いっぱい。
2009/12/04(金) 00:28:11>>533
0545名無しさん@お腹いっぱい。
2009/12/04(金) 10:01:54The 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:490547名無しさん@お腹いっぱい。
2009/12/04(金) 10:44:140548名無しさん@お腹いっぱい。
2009/12/04(金) 18:41:280549名無しさん@お腹いっぱい。
2009/12/04(金) 18:48:48man rtld
man ldconfig
ldconfig -r
0550名無しさん@お腹いっぱい。
2009/12/04(金) 22:18:47始めた日時をメモっておいて
portupgrade -f '<YYYY-MM-DD HH:MM'
■ このスレッドは過去ログ倉庫に格納されています