パスワードを忘れた? アカウント作成
13330862 story
バグ

systemdで複数の不具合が確認される 112

ストーリー by hylom
文法エラーなのか 部門より
osdn曰く、

多くのLinuxディストリビューションで採用されているシステム管理ソフトウェア「systemd」で、複数の不具合が確認されています。1つは、ユーザー名を指定する個所で数字で始まるユーザー名を指定すると、そのユーザーの代わりに「root」が指定されたことになってしまうというもの(MA.TTIAS.BE)。

多くのUNIX系OSでは、ユーザー名にはアルファベット小文字と数字、アンダースコアのみが利用でき、さらに先頭には数字は指定できないとされています。そのため、報告を受けたsystemd開発者のLennart Poettering氏は、「数字で始まるユーザー名が不正なのであってsystemdのバグではない」と主張している。しかし、そのようなユーザー名がuseraddでは問題なく作成できたり、adduserでも設定により作成できると指摘され、氏はこう返答しました。「(1)systemdは色々なシステムで動くようにするため、制限が厳しいこともある。(2) ユニットファイルにUser=で指定するユーザー名は一般ユーザーではなくシステムユーザーであるから、厳しく制限して当然。(3)systemdでは、文法エラーはログしてスルーというポリシーである。」

つまり、ユーザー名が間違っているだけならfatal errorとして停止するが、十進数で始まる名前は文法的エラーなので、ログだけ取って実行は続け、それゆえにrootとして実行されるということです。この点、開発者が「バグはない」と言い張る一方で、ユーザー名を認識できないバグと、そのままrootで動くバグの二つだろうという意見もあります。

もう1つの不具合は、バッファオーバーランの脆弱性です(CVE-2017-9445マイナビニュースthreatpost)。名前解決のコードにバグがあり、バージョン223以降、つまりここ2年ほどの間のsystemdはTCPペイロードの細工により任意のコード実行まで可能かもしれない脆弱性があったとのこと。systemd-resolvedがデフォルトで起動されるシステムはあまり多くないようですが、ご注意ください。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2017年07月07日 8時37分 (#3240403)

    ユーザー名を指定する個所で数字で始まるユーザー名を指定すると、そのユーザーの代わりに「root」が指定されたことになってしまう

    な? 障害者レベルの設計だろ?

    おまけにsystemdの開発者がクソなのは、PulseAudioやAvahiの時点で既に分かっていたので、今回の「数字で始まるユーザー名が不正なのであってsystemdのバグではない」という返答が帰ってくるまでが想定の範囲内という酷さ。
    こいつらは、PID 1で常時動作するようなサービスマネージャーを、そこらの3分間クイックハックレベルの思考で設計してる。

    かつての1ツイート(140字以内)でsystemdをクラッシュさせる方法 [gihyo.jp]やrm -rf バグ [preining.info]の時も感じたが。systemdがクソなのは、これやその他バグ自体ではなく、なぜこんなシンプルで重大なバグが何年ものあいだ放置されていたのか、いったいどんな品質保証プロセスを通ってきたのかという点。Ayerの意見には諸手を挙げて同意したい。

    systemdは本業のinitと、やってもudev & dbus業務だけに専念してて。
    余計なことまでしゃしゃってこないで。わりとマジで。

    • by Anonymous Coward on 2017年07月07日 10時24分 (#3240463)

      Q: なぜこんなバグが放置されていたのか?
      A: つぶす前に増やしたから。十分に目があっても、それ以上に手指があるから。

      「コードは書くんじゃない、消すものだ」とはよく言ったものだ。

      親コメント
    • by Anonymous Coward on 2017年07月07日 10時30分 (#3240470)
      > > ユーザー名を指定する個所で数字で始まるユーザー名を指定すると、そのユーザーの代わりに「root」が指定されたことになってしまう

      > な? 障害者レベルの設計だろ?

      Unix 系の OS ではユーザー切り替えやろうとすると
      「デフォルトユーザーとして root にならないようにする」
      という処理を加えないと、そうなっちゃうんだよ。

      Windows とか Trusted Unix と呼ばれる類だと、デフォルトユーザーを意識しなければ、unknown とか NOUSER とか、何の権限もない状態になるからありえない話だが Unix系では何も考えないと root になるという仕様なのだからな。
      親コメント
      • by Anonymous Coward

        rootがユーザーの本質なんだから、そこの思想がおかしいとは思わんけどな。もちろん、現代的な倫理観に照らせば変だけど、そういうのはOSより上のレイヤが処理すべき話だろう。

        • by Anonymous Coward

          >rootがユーザーの本質

          な、なにを言い出したのこの人…。

          >OSより上のレイヤが処理すべき話

          ???

    • まったく同意。
      ソフトウェアの進化について、バージョン2はとにかく機能を入れ込んで肥大化して使い物にならない、バージョン3で不要なものを分離・切り落としてやっと使いものになる…
      という話が昔あったような気がするが、その話でいうと systemd は今のところまだバージョン2の状態のように見える。

      --
      # mishimaは本田透先生を熱烈に応援しています
      親コメント
    • 不適切なコメントだと思う。
      親コメント
    • by Anonymous Coward

      素朴な疑問なんだが、なんでこんなに問題の多い代物が多くのディストリビューションで採用されているんだ?

    • by Anonymous Coward

      開発者に合ったことはないけどレインマンみたいな感じなのかな

      # 本人は善意でやってると思われ

    • by Anonymous Coward

      (古典的)c言語の思想が根幹に染み付いたプログラマ(のコミュニティ)なら当然の考え方でしょ
      引数の正当性は渡す側が責任を持つもので渡された側でチェックして対処するなんて非効率

  • 開発者問題 (スコア:3, すばらしい洞察)

    by Anonymous Coward on 2017年07月07日 11時25分 (#3240511)

    とりあえず systemd は開発者が最大のセキュリティホールだと思う。サーバにはクライアント PC とは違ったレベルが求められるということを理解していない。

  • 仕様です (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2017年07月07日 7時50分 (#3240386)

    1,仕様です
    2,仕様に決ってんだろ
    3,仕様だっていってんだろ

    • by nemui4 (20313) on 2017年07月07日 8時01分 (#3240390) 日記

      大昔にユーザ名はアルファベット小文字で始まるものと植え付けられてたので「数字で始まるユーザー名」と言うのは考えつかなかった・・・

      >多くのUNIX系OSでは、ユーザー名にはアルファベット小文字と数字、アンダースコアのみが利用でき、さらに先頭には数字は指定できないとされています。

      ユーザ名に "."(dot) を使えるところもあるから、そういうシステムと連携する時に何かと問題が出てたっけ。

      親コメント
      • by Anonymous Coward

        何故かドコモが思い浮かんだ

        • by Anonymous Coward

          昔はRFC違反のメールアドレスを認めてたんだっけ。
          そういうところもあるから、不正なユーザで実行されたときにエラーで止める仕組みはないとダメだよねぇ。

      • by Anonymous Coward

        >大昔にユーザ名はアルファベット小文字で始まるものと植え付けられてたので「数字で始まるユーザー名」と言うのは考えつかなかった・・・
        ユーザー名なんてクリティカルなものなんだから、判らなきゃ排除で良いだろうに。

        • by Anonymous Coward

          利用者はユーザー名なんて知る必要ないし打つ必要もない。

          システムが勝手に"annyms12345"みたいな名前を割り振って、
              "0†0 Anonymous Coward 0†0"
          みたいな文字列と紐づけすりゃいいだけのような。メールとかtwitterとかだと先有権争いになるが……。

  • by Anonymous Coward on 2017年07月07日 11時30分 (#3240513)

    > systemdでは、文法エラーはログしてスルーというポリシーである。

    ユーザーが編集しない限り変更が行われることがほぼないユニットファイルのエラーは停止によって通知すべきだ。
    それを「文法エラー」と値のエラーでわざわざ区別して停止しない場合を作っているようだが、その区別のはっきりとした定義も意味も分からない。

  • by Anonymous Coward on 2017年07月07日 7時49分 (#3240385)

    つぎはsystemd-shadow-utilsですよ!
    そして最終的にOSの全てがsystemdになって、
    全てのLinux系ディストリビューションがそれに従ったので、
    統一されてしまいましたとさ。

  • by Anonymous Coward on 2017年07月07日 7時54分 (#3240388)

    進むとかその辺はいいとして何故デフォルトがrootユーザなのだろうか・・・

    • by Anonymous Coward

      initだからじゃないか?

    • by Anonymous Coward

      uidがゼロだからでしょう

  • by Anonymous Coward on 2017年07月07日 8時23分 (#3240394)

    はい?
    となると世の中の脆弱性のほとんどがバグじゃなくなるよね。

    • by Anonymous Coward

      まあroot権限がないとunitfileは書けないわけだから
      root権限で不正な入力をして不正な結果になるのは自業自得じゃろ。
      remote exploitと一緒にするのは酷。

      • by Anonymous Coward

        他に脆弱性のあるアプリケーションがあって、その脆弱性を突けば unit ファイルを
        書き換えることができるとしたらどうだろう。

  • by Anonymous Coward on 2017年07月07日 9時11分 (#3240418)

    MSやApple、Googleにも期待できない今、まだOSSには少し期待していたのだけど。

    • by Anonymous Coward on 2017年07月07日 9時41分 (#3240442)

      ソースをオープンにする理由の一つは妙な細工がないことを担保するためで、
      つまりOSSは最初から開発者が誠実でない場合があることを前提としている。

      親コメント
      • by Anonymous Coward on 2017年07月07日 10時33分 (#3240473)

        >ソースをオープンにする理由の一つは妙な細工がないことを担保するためで、

        そんなの妄想だよ。みんなソースなんか見てないよ。
        バグ踏んだ不運な人が自分で修正しようとしたり、
        新機能がほしい人が自分でパッチ書いたりすることもあるけど、
        きわめてレアなケースだよ。

        ましてや、開発元の配布している正式版ソースではなく、
        distroのソースアーカイブに含まれているソースを検証してる人なんかまずいないよ。
        たとえばRHELのopensslはopenssl.comから配布されていない非公式ソースから
        ビルドされてるんだけど、そんなことほとんど知られていないし、検証もされてないよ。

        親コメント
        • by Anonymous Coward
          FUD乙
          ># We have to remove certain patented algorithms from the openssl source
          ># tarball with the hobble-openssl script which is included below.
          ># The original openssl upstream tarball cannot be shipped in the .src.rpm.
          • by Anonymous Coward

            もうちょっと他人にわかるように説明できないかな。

        • by Anonymous Coward

          現実がどうだろうが、兎に角「開発者は誠実でなければならない」なんで綺麗事をOSSは謳ってない。
          親コメはOSSに期待するところを間違ってる。

          • by Anonymous Coward

            期待するのは自由でしょ。
            (自分の)期待通りじゃないからって文句つけるのが筋違いなだけ。

    • by Anonymous Coward

      MSやApple、Googleにも期待できない今、まだOSSには少し期待していたのだけど。

      OSSへの幻想は10年以上前に捨てた。
      MSやGoogleがイノベーションを模索している間にLinux界隈は何してたよ?

      • Linux界隈は何してたよ?

        自分が使いたいものを作ってた。

        親コメント
        • by Anonymous Coward

          生まれた時からいつもそう。使わせてやってる奴からとやかく言われる筋合いはない。

          # 文句あるなら自分で作れ、と正論で返されそうですね。

        • by Anonymous Coward

          企業に関して言えば違う顧客が使いたいものを作ってきたのだ。
          例えばレッドハットの開発者が作ったSystemdとか。例えばレッドハットの開発者が作ったSystemdとか。例えばレッドハットの開発者が作ったSystemdとか。
          まあ消費者が実感できるようなわかりやすいイノベーションはオープンソースソフトウェアからはでないと思うよ。ソフトだけ作って終わりではないから。
          まあ自由に改造できるスパコン向けOSとしてのLinuxはなかなかにイノベーティブなものだと言えるのではないかな?

      • by Anonymous Coward

        MSやGoogleが模索しているイノベーションはサービスレベルのことであって、OSレベルでは彼らも別にイノベーションをもたらしてない
        もちろんAppleもね

typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...