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

sudoに10年以上前から存在した特権昇格の脆弱性が修正される 40

ストーリー by headless
***** 部門より
sudoに10年以上前から存在した脆弱性(CVE-2019-18634)が1月30日リリースのsudo 1.8.31で修正されている(sudoのアドバイザリArs Technicaの記事Softpediaの記事)。

この脆弱性はsudoでパスワード入力時にアスタリスク(*)を表示するオプション「pwfeedback」が有効になっている場合、ユーザーがスタックベースのバッファーオーバーフローを引き起こす可能性があるというもの。sudoが許可されていないユーザーでも実行でき、悪用することで特権のないユーザーがroot権限に昇格する可能性がある。

脆弱性の原因となるバグ自体はsudo 1.7.1~1.8.30に存在するが、sudo 1.8.26で導入された変更により、実際に悪用可能なのはsudo 1.7.1~1.8.25p1となる。pwfeedbackはアップストリームのsudoや多くのパッケージのデフォルトでは有効になっていないものの、Linux MintやElementary OSなどデフォルトで有効になっているシステムも存在するとのこと。

影響を受けるバージョンのsudoは1.8.31へのアップグレードが推奨されるが、sudoerファイルでpwfeedbackを無効にすることで悪用の回避には十分だ。pwfeedbackが有効になっているかどうかは「sudo -l」コマンドで確認できる。「Matching Defaults entries」の出力にpwfeedbackが含まれていれば有効になっているので、sudoerファイルの「Defaults pwfeedback」を「Defaults !pwfeedback」に変更すれば無効化できるとのことだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Linux使って20年以上になるけど、sudoに pwfeedback なんてものがあったことを今の今まで知らなかった。
    どの層のためにあるんだこれ?
    あんだけボロクソ言われてるsystemd-logindですら、そんなしょうもないオプション増やそうとした形跡すらないだろ。

    ところで「pwfeedbackが有効になっているかどうかは「sudo -l」コマンドで確認できる。」とあるが、
    そもそもその「sudo -l」自体がパスワード必須なのだから、有効になっているかどうかもなにも
    アスタリスクが出るかどうかその時点でわかるやろ。

    • sudoersにNOPASSWDって書いてあってパスワード必須じゃなかったりして?

      今自分が入力した文字が本当に入っているかわからないと困る時はときどきある。著しく回線の品質が悪いときとか、なんのドライバの不良か速くタイプすると取りこぼしを起こす端末を使っているときとか。

      親コメント
      • by Anonymous Coward

        安物KVMに、キーを秒間に一定以上打つと取りこぼす奴有りますね。

    • by Anonymous Coward

      だろ。やろ。

    • その昔、OpenSSLにあった脆弱性も
      必要性が理解されない機能が規格に組み込まれたことに端を発しているわけで [blogspot.com]、

      必要かどうか解らない機能も、誰かによって発案され、
      誰も興味がないからチェックされず、
      10年以上も放置されたのでは?

      • by Anonymous Coward

        sudoはPOSIXに定められた機能ではないから純粋にsudoの開発者にアホがいるだけだろ。そんなアホがUNIXの重要なセキュリティ機能の開発に関わっているというのは慄然とせざるを得ないが

        • by Anonymous Coward

          POSIXでないからアホがいる、ってよくわからん理屈だな

          • by Anonymous Coward

            どういう悪意ある解釈をすればそうなるのか。
            責任の所在について言ってるだけでしょ。

        • by Anonymous Coward

          「sudoが悪いのはPOSIXを策定しているIEEEのせい」と誤解させてしまったことは、すまない。

          sudoコマンドは複数人が開発にかかわっており、その中で機能をどうするか話し合いをしているだろうけど、
          pwfeedbackを必要だと提案した人、それぞ実装してやらかしちゃった人(提案した人かもしれないが)以外は誰も興味がなく
          だからこそ誰もチェックをしなかったんじゃないの?といいたかったのです。

    • by Anonymous Coward

      たいした脆弱性ではないと強弁したいのでしょうが、Linux Mintで使われている機能を「どの層のためにあるんだ?」は通じませんね。

      • by Anonymous Coward

        実際Mintの開発チームはどうしているんだろう?

        アップデートでデフォルト設定の変更は強制力が無いから
        (たぶん設定ファイルを維持するか新しいバージョンにするか選択肢が出る)

        問題が無いバージョンに差し替える必要があるはず。

        上流にあたるUbuntuは、pwfeedbackをデフォで有効にしていないから
        まだ1.8.26への差し替えは行われていないみたい。(18.04LTS)

        個人的には、そういう上流との細かい差異が
        混乱や見落としによるトラブル要因になるから
        よりマイナーなMintやZorinなどを薦めたくない。

        #「UbuntuやXubuntuは****って表示されないから嫌だ」って言う情弱のことは知らん

    • by Anonymous Coward

      パスワード入力時になにもエコーバックされないと、何回やってもパスワードが入力できないんですーって言ってくる人かな?

      実際どうなんだろうね。パスワードが何文字入ったか分かるほうが一般的なのかな…

      • by Anonymous Coward

        > パスワード入力時になにもエコーバックされないと、何回やってもパスワードが入力できないんですーって言ってくる人かな?

        誰が?

    • by Anonymous Coward

      コンソールの場合ガッツリログが残っちゃうことがあるので……
      入力したことをフィードバックしつつもログに残さないってことならマスクにも一定の価値はある。

      文字数の情報残るのも避けるなら完全不表示のが楽だけどね……
      マスク出して文字数隠すならマスク文字を行いっぱい打ち出すとかしなきゃだし。

      • >コンソールの場合ガッツリログが残っちゃう
        そーなんですよねぇ

        昔ユーザー名が大好きな人の名前
        パスワードがやや卑猥

        user:ohashilove
        passwd:kunkakunka69!

        ってなことがコンソールログに乗っかってて草生えたことがあります

  • by fu7mu4 (35703) on 2020年02月09日 1時49分 (#3758820) ホームページ 日記
    OpenBSDやFreeBSDには sudo の代替に doas があるらしいですね。
  • by Anonymous Coward on 2020年02月08日 15時34分 (#3758692)

    UNIXは、suidのついた特殊なプログラムがセキュリティを担当するが、
    セキュリティ担当を特権モード以上で動くカーネルデーモンとかに移行し、
    APIやシステムコール経由でセキュリティ制御したほうがいいのでは?

    • by Anonymous Coward

      それを人は systemd と呼びます

    • by Anonymous Coward

      SELinuxがしっかり根付いていれば、ユーザに必要な権限だけを割り振ることでSUIDするプログラムは不要になる「はず」なのだが…だが…

  • by Anonymous Coward on 2020年02月08日 16時22分 (#3758713)

    かと思った。
    ローマ字かよ! というツッコミは置いといて。

  • by Anonymous Coward on 2020年02月09日 5時10分 (#3758836)

    それ直したっていうコミット [www.sudo.ws]とその部分のソース [www.sudo.ws]見てみたんだけど、
    一瞬直し損なったのかと空目するような直し方だった。
    多分肝心なのは

    + cp = buf;

    だと思うので、
    writeがコケる状態で文字を入れてはsudo_term_killを入力してleftとcpを乖離させる攻撃だったのかなと思うのだが、
    write失敗でbreakしても入力ループ自体抜けてしまい問題の少なそうなsudo_term_eraseではbreakを消して、
    問題の箇所ではwrite失敗を考慮しなければ無意味に見える処理の追加で対処している。

    さらにコピペされているコードの片割れだけいじった事で不整合も起こしている。

    とりあえずは良いとしてもこの調子で大丈夫なのかコレ……

    • by Anonymous Coward

      そうじゃないでしょ。

      コピペ元(って便宜上呼ぶけど)のbreakは直近のwhile (cp > buf) の{}から抜けるために使ってるから、全く正しい。ところが、コピペ先の{}はwhileじゃなくてifだから、ここでbreakを呼ぶと大元のwhile(--left)から抜けてしまう。読み込んでないけど、修正された差分をみると、これは完全にやらかしてたってことだよ。コピペまでして対称的に書いてるつもりなのに全く違う動作になるから、気付いたら青ざめる系のうっかりだ。

      #インクリメントの前置後置で笑ってしまう。

      • by Anonymous Coward

        しかしみじけ〜のにひで〜コードだな
        cp > bufとかcp--一箇所にしろよと…

        • by Anonymous Coward

          簡潔に書こうとしてるから余計酷いって気もする。

        • by Anonymous Coward

          バッファ中の位置に関係する変数もleftとcpの二個あるしね。
          特定条件でcp戻さずleftだけ戻してたからこれで死んだ臭い。

          cp使いたい気持ちはわかるし一々cpとbufの差を計算したくないのも分かるんだけどねぇ……
          c++のイテレータとかからすると予めbufendを計算するべきなんだけど、
          cではあんま見ないよねそういう書き方。

          • by Anonymous Coward

            言語問わずこんな感じのありますね。
            無論燃えた後か継続中かの違いしか無い…

            ムダに状態持つな
            →フラグ持つな
            →→bool使うな()
            なトコのコードもこんな感じだった…w
            #一般常識と騙ってるのでたち悪かったな

      • by Anonymous Coward

        やっぱgotoって必要だよなーって思う。
        どこからでも飛べてどこへでも飛べると複雑になりすぎるのでナウい言語(21世紀初頭くらい)の制限が必要だけども。

        • by Anonymous Coward

          使い手のスキル次第で猛毒になるだけですよねホント。。
          そしてそんなのはコンパイラは弾けない…
          #同一メソッド内コードクローンも弾けそうで弾けない…

      • by Anonymous Coward

        コピペコードは
        sudo_term_killの所(便宜上A、脆弱性本体?)、
        sudo_term_eraseの所(便宜上B)、
        ループ後の所(便宜上C)、
        で三ケ所あるけど、コピペ元はCっぽい気しない?

        Cの箇所でだけ有効なエラー見てbreakをコピって生まれたバグや不整合に思える。
        Aではポインタ戻し忘れてオーバーフロー、Bでは入力の中断が発生した。
        ただBは他との比較ではおかしいけど、IOエラーで入力終了して既読分だけ処理ってままある処置かと。

        writeエラー無視して処理続ける方針なら、全部writeエラー無視で良かった筈。

        デクリメントの前置後置とか脆弱性とは無関係な修正も混ざってるから
        パッチの意図がそもそもブレてんだよね。そのくせCはデクリメント変え忘れ。
        コピペコードの一括修正で漏れとかデバッグ二次災害でありがちな光景だなと。

  • 須藤さんはがんばらない。

  • by Anonymous Coward on 2020年02月09日 15時03分 (#3758917)

    sudo rm -rf / --rika

      # 実行しないでください

    • by Anonymous Coward

      しかしなにもおきなかった

  • by Anonymous Coward on 2020年02月10日 23時12分 (#3759768)

    すべからく滅ぶべし

    sudoを使う方がroot shellよりもセキュリティ的に安全
    なんてドグマを信仰ている連中が未だに多数いる時点で
    もはや害のほうが大きい

typodupeerror

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

読み込み中...