部門よりsudoコマンドで、任意のユーザー権限でのコマンド実行を許可されているユーザーに対し、ルート権限で指定したコマンドを実行できてしまう脆弱性が確認された(sudo公式サイトでの脆弱性報告、サイオスセキュリティブログ)。この脆弱性は、実行するユーザーを指定するsudoコマンドの「-u」オプションで「-1」もしくは「4294967295」を指定すると、そのユーザーIDではなくルート権限で指定したコマンドを実行できてしまうというもの。任意のユーザーがルート権限を取得できるわけでは無く、sudoersなどの設定ファイルで「ALL」キーワードを使って任意のユーザー権限でのコマンド実行が許可されたユーザーのみがルート権限を奪取できる。実行できるコマンドが指定されていた場合はそのコマンドのみがルート権限で実行できる対象となる。この際にログにはroot権限ではなく指定したユーザーID(-1もしくは4294967295)で実行されたものとして記録される。したユーザーIDは存在しない為、PAMセッションモジュールも実行されない。<コマンド名>」のようにroot以外のユーザーでsudoコマンドを利用できるように指定されていた場合に、本来は不可能なはずのroot権限でのコマンド実行が可能になってしまう。Xのsudoの脆弱性、まだ修正されずsudoに10年以上前から存在した特権昇格の脆弱性が修正されるLinuxなどのスタック管理機構において権限昇格が可能な脆弱性が発見される。Yosemiteに脆弱性、管理者がパスワードなしでroot権限を得られる?この議論は賞味期限が切れたので、アーカイブ化されています。新たにコメントを付けることはできません。specification.と書いてあるのに、そこ抜かして説明するからわけわかんない。/usr/bin/viとしたら、先頭のキーワードにALLがあるため、除外したはずのrootで実行できてしまう、という問題です。(#3701163)なんか不思議な数字だと思ったんだけど、1足した4294967296を1024で3回割ったら4になったので2の32乗であることが分かった。rootをID0として-1および設定最大値のIDに特殊な権限を与えるって発想は頷けるが、そんなに沢山のユーザがいることを想定しているのかな。Cowardプログラムの素養があると、逆に4294967295という値に説明が要るという観点をスルーしちゃうかな。Cowardカッコいい解説に野暮ですが、符号付き整数がオーバーフローしたら、未定義。Coward未定義だからこそ処理系依存で循環もするでしょ。カッコいい解説に野暮ですが、符号付き整数がオーバーフローしたら、未定義。現在のしきい値以下です。ホームページデバッグの常識として、オーバーフロー前後の数字は要チェックですよ?だから、むしろ、今まで誰もチェックしてなかったってことが驚き。(#3701258)普通の使い方してる限り、sudoしたらrootになれるのは当たり前だからな。root権限で実行されるケースが起きて、原因調査してみたら、その自作関数がエラーで-1返していたのが発覚した。発見に至るシナリオは沢山ありそう。あるにも関わらず今まで発覚しなかったのが怖いところだね。Coward16bitの65535では不足することがあったから、32bitの4294967295が上限になった。制限する理由も無いから、仕様上の上限まで利用できるというだけ。IdeNTifier)が32bitかぁ~。(#3701173)2147483647と4294967295は覚えてない。なんか語呂合わせとかあるなら教えて下さい。(#3701187)2147483647=「追試なしは皆無視な」説。テストしないで本番に投入すると、ありがちですね。[it.srad.jp]4294967295は、ううむ、歯肉よく胸肉...?なんか気持ち悪いですね。Cowardまあ普段はそんなモンで問題ないでしょう。INT32_MAXは頻繁に見てるので丸暗記しちまったけど。いうかこのあたりの数だと2^n乗として対数で話をしたほうが楽。Coward$FFFFFFFFと$7FFFFFFFで覚えると簡単だ(簡単じゃない)#49.7日問題とか24.8日問題で見かけた数値なので全部覚えてはいないけどピンときた。表記するのって、最近あんまり見ない。アセンブリでは見たが。人間は一度に覚えられる数字はだいたい4~7つと言われていて、それより大きい電話番号のようなものは区切り文字を入れるのが一般的です。16bitは覚えられても32bitが覚えられないのは個人差でしょう。固定長IDを設計する時の豆知識として聞きますよ。