アカウント名:
パスワード:
・ソースを読解・ひたすら逐次実験的に・特別そうな数字に当たりを付けて
デバッグの常識として、オーバーフロー前後の数字は要チェックですよ?だから、むしろ、今まで誰もチェックしてなかったってことが驚き。
普通の使い方してる限り、sudoしたらrootになれるのは当たり前だからな。
一般人「常識ですよ」逸般人「やってみないとわかんねーじゃん」
自作のUID検索(ランダムID生成、ユニークID生成等)関数の戻り値をエラー処理せずにsudoにぶち込んでたら、何故かroot権限で実行されるケースが起きて、原因調査してみたら、その自作関数がエラーで-1返していたのが発覚した。とか。
sudo開発陣がテストを充実させて境界値もチェックしたとか、ユーザが覚えやすいuidを考えてるうちに負数が使えることに気づくも-1の挙動が変だったとか、ファジング等のテストツールのテストがてらにsudoをテストしたとか、ソフトウェアテストの実習で仮のプロダクトとしてOSSを使った際にsudoで境界値チェックしたとか、発見に至るシナリオは沢山ありそう。
沢山あるにも関わらず今まで発覚しなかったのが怖いところだね。
エラーで-1か!権限のいる処理なのでrootの状態になってユーザーID変更するが、本来なら指定したIDにならなかった場合、処理されないはずが、指定したIDの-1とエラーの-1が一致するから成功と誤認してユーザーID変更失敗のrootのまま処理されるのか?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike
4294967295 (スコア:0)
まあ、rootをID0として-1および設定最大値のIDに特殊な権限を与えるって発想は頷けるが、そんなに沢山のユーザがいることを想定しているのかな。不思議な数字だ。
どうやって見つけたんだ (スコア:0)
・ソースを読解
・ひたすら逐次実験的に
・特別そうな数字に当たりを付けて
Re:どうやって見つけたんだ (スコア:1)
デバッグの常識として、オーバーフロー前後の数字は要チェックですよ?
だから、むしろ、今まで誰もチェックしてなかったってことが驚き。
Re:どうやって見つけたんだ (スコア:1)
普通の使い方してる限り、sudoしたらrootになれるのは当たり前だからな。
Re:どうやって見つけたんだ (スコア:1)
一般人「常識ですよ」
逸般人「やってみないとわかんねーじゃん」
Re: (スコア:0)
自作のUID検索(ランダムID生成、ユニークID生成等)関数の戻り値をエラー処理せずにsudoにぶち込んでたら、
何故かroot権限で実行されるケースが起きて、原因調査してみたら、その自作関数がエラーで-1返していたのが発覚した。とか。
Re: (スコア:0)
sudo開発陣がテストを充実させて境界値もチェックしたとか、
ユーザが覚えやすいuidを考えてるうちに負数が使えることに気づくも-1の挙動が変だったとか、
ファジング等のテストツールのテストがてらにsudoをテストしたとか、
ソフトウェアテストの実習で仮のプロダクトとしてOSSを使った際にsudoで境界値チェックしたとか、
発見に至るシナリオは沢山ありそう。
沢山あるにも関わらず今まで発覚しなかったのが怖いところだね。
Re: (スコア:0)
エラーで-1か!
権限のいる処理なのでrootの状態になってユーザーID変更するが、
本来なら指定したIDにならなかった場合、処理されないはずが、
指定したIDの-1とエラーの-1が一致するから成功と誤認して
ユーザーID変更失敗のrootのまま処理されるのか?