パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

sudoでUIDに4294967295を指定すると途中からuid = 0と解釈される特権昇格の脆弱性」記事へのコメント

  • by Anonymous Coward
    なんか不思議な数字だと思ったんだけど、1足した4294967296を1024で3回割ったら4になったので2の32乗であることが分かった。
    まあ、rootをID0として-1および設定最大値のIDに特殊な権限を与えるって発想は頷けるが、そんなに沢山のユーザがいることを想定しているのかな。不思議な数字だ。
    • by Anonymous Coward

      4294967295 はプログラマには馴染みがある数字です.
      -1を2の補数で表現すると32bit環境では4294967295になるからです

      たとえばC言語で sizeof(int)が4bytesな環境だと

      int a = 4294967295;
      printf("%d\n", a);

      とか

      printf("%d\n", atoi("4294967295"));

      のようなコードは -1 を出力します.

      つまりメモリ上に 4bytesのデータ 0xffffffff をおいて
      それを符号なし32bit整数で読むと 4294967295 ですが
      型指定のミスなどで符号なし整数として読んでしまうと -1 に化けてしまいます

      • by Anonymous Coward

        カッコいい解説に野暮ですが、符号付き整数がオーバーフローしたら、未定義。

        • by Anonymous Coward on 2019年10月16日 2時58分 (#3701416)

          > カッコいい解説に野暮ですが、符号付き整数がオーバーフローしたら、未定義。

          オーバーフローじゃないですよ

          親コメント

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

処理中...