パスワードを忘れた? アカウント作成
15313225 story
セキュリティ

Linuxでプロセスの権限を設定するpolkit、7年以上前から存在した特権昇格の脆弱性が見つかる 38

ストーリー by headless
時間差 部門より
多くのLinuxディストリビューションに標準でインストールされるシステムサービス「polkit」に7年以上前から存在していた特権昇格の脆弱性が修正された(The GitHub Blogの記事The Registerの記事Computingの記事CVE-2021-3560)。

polkitは非特権プロセスが特権プロセスと通信するためのポリシーを定義し、認証処理を行うツールキットだ。systemdがpolkitを使用するため、systemdを使用するLinuxディストリビューションはpolkitも使用することになる。今回発見された脆弱性は、polkitが認証処理を行っている最中にリクエスト元のプロセスを終了させることで、rootプロセスからのリクエストとして認証してしまうというものだ。

この脆弱性が導入されたのは2013年11月のコミット(バージョン0.113)だが、メジャーなLinuxディストリビューションの多くに脆弱性のあるpolkitが含まれるようになったのはずっと最近のことのようだ。

Fadoraの場合は2014年12月リリースFedora 21に脆弱性のあるpolkitが含まれているが、Red Hat Enterprise Linux(RHEL)が脆弱性を含むFedora 28ベースになったのは2019年5月リリースRHEL 8となる。Debianはpolkitのフォークを使用しているが、脆弱性のあるバージョンを含む安定版はリリースされておらず、現在テスト中の次期リリースDebian 11 「Bullseye」にのみ脆弱性のあるバージョンが含まれる。一方、DebianベースのUbuntuは昨年4月リリースのUbuntu 20.04以降に脆弱性が含まれるとのこと。いずれの場合も、脆弱性は最新版で修正されている。
  • by Anonymous Coward on 2021年06月12日 20時46分 (#4049762)

    *ただし7年以上かかった!

    ここに返信
    • by Anonymous Coward

      目がいっぱいあればを単純に論拠にするのはまあ限界でしょうね。公開されていても見られない部分は見られない。

    • by Anonymous Coward

      7年もたっているのにDebianの安定版にはまだ採用されていなかったのか。枯れすぎだろ、Debian。

  • by Anonymous Coward on 2021年06月13日 10時41分 (#4049897)

    「要求してる奴のUIDを調べて0(=root)ならそのまま実行、それ以外は認証してOKなら続行、NGなら中止」みたいな処理をしてる所の「要求してる奴のUID調べる」の段階でエラーを適切にハンドルしてないせいみたいね
    要求してる奴のUID調べる->要求元のプロセスが死んでるのでエラーが返る->エラーをチェックしてないせいでuidの値が不正な0(or不定?)でそのままrootからの要求と間違えて無条件に処理を続行

    sudoとかでもちょいちょい「これは酷い…」的な奴出てるけどこれもなかなかに酷い

    ここに返信
    • by Anonymous Coward

      この理屈だとsetuidされたプログラムを起動しまくってpidを再利用させる事ができれば、
      setuidされていて実行可能なプログラムがある任意のuidに偽装可能だったりしそうな気も……
      ハンドルで捕まえてれば平気かもしれんが。

      しかしこういうモジュールが5年以上前のバージョン積んでる事があるってのもすごい話だ。
      ちゃんとセキュリティに関わる更新が無いこと確認の上で古いバージョン使い続けていたのだろうか?

      • by Anonymous Coward

        ありがちなのは脆弱性修正関連の修正だけ入れるやつ。もちろんこれだと新しいバージョンではそもそも起きない脆弱性が無視されがち。

  • by Anonymous Coward on 2021年06月12日 17時36分 (#4049675)

    Linuxが脆弱なのは

    ここに返信
    • by Anonymous Coward

      Linuxは結構な脆弱性が隠されていたりするから、あながち間違いではないけれど
      そこを理解してつかいわけするとまぁ悪くはないね。

      (セキュリティアプライアンス製品になるとベースがLinuxってことが大半だから
      普通にLinuxとして使われる場合よりもアプライアンスとして動くときがやべーんですわ)

      • by Anonymous Coward

        カーネルとかに手を加える使い方をする場合、GPLの制限があるLinuxを避けて、
        BSDベースにするアプライアンスもあるな

        また、たとえLinuxベースにする場合でも、GPLv3汚染を避けて、GPLv3ライセンスのアプリはつかわないようにしたり

      • by Anonymous Coward

        自分もセキュリティアプライアンス=*BSDって印象(BSDのが枯れてるイメージ)なんですが

        > セキュリティアプライアンス製品になるとベースがLinuxってことが大半

        ってどっかにデータありましたっけ?

        • by Anonymous Coward

          JVNとかでLinux系の脆弱性が出たあとで、雪崩のように出てくるアプライアンス名をさがしてみえけれ。

          実施自分はそれぞれ物を持っているので実機をみるだけでもわかるけど、、、

        • by Anonymous Coward

          BSDベースのアプライアンスって今も残ってましたっけ?

    • by Anonymous Coward

      その通りですね。
      ただ、現在の規模で脆弱性のないOSというのはなかなか想定できないので、どのOSでも脆弱性はあると想定して活用するのが望ましいと思います。

      • by Anonymous Coward

        脆弱性のないOSと脆弱なOSは違いますよ

        • by Anonymous Coward

          真逆ですものね。

          • by Anonymous Coward

            !脆弱性のないOSと脆弱なOSも違いますよ

            • by Anonymous Coward

              脆弱:そうであるか否か
              脆弱性:無い、少ない、多い、あるいは具体的な数
              ですもんね
              まあ、「脆弱性が無い」なら「脆弱でない」くらいは言えるでしょうが

      • by Anonymous Coward
        OpenBSD のこと?
    • by Anonymous Coward

      これ、Linuxの問題か?
      多くのLinuxディストリビューションで使われているサービスの問題だろ。

      • by Anonymous Coward

        じゃあLinuxの問題だね

        • by Anonymous Coward on 2021年06月12日 21時03分 (#4049767)

          systemdの問題です。Linuxの問題ではありません。

          故に余は叫ぶ、systemd滅ぶべし

          • by Anonymous Coward

            Linuxを滅ぼせば解決❤

          • by Anonymous Coward

            なんでsystemdを悪く言う人ってこの程度の理解度で騒ぐのかね。

            書いてある通り、polkitは独立したサービスで、systemdは利用してるだけ。

            そして、なんでrootからのリクエストとみなされるかというと、想像だけど、プロセスが終了するときに親であるinitが引き取るから。
            システムコールの最中に死ぬと親の終了処理がブロックさせるからこういうことになるんでしょう。

            完全にlinux(というかUNUX全般)の構造の問題だよ。

            • by Anonymous Coward

              完全に妄想で草。

              PoCでもshellからバッググラウンドで実行したdbus-sendをkillしてるだけなのに、initとか言い出す意味が分からんわ。

          • by Anonymous Coward

            間違いでは?Slackware は systemd 使ってないけど polkit のアラート出てる。

          • by Anonymous Coward

            systemdの問題です。Linuxの問題ではありません。

            そうですsystemdはLinuxをも内包するのです

            # 次回、物理キーボードの攻防!お楽しみに♪

      • by Anonymous Coward

        systemdなんて使う方が悪い

        • by Anonymous Coward

          =Linuxなんて使う方が悪い

      • by Anonymous Coward

        Linix以外のOSでも広く使われているならその言い訳も通るが

        >systemdはLinux用に設計され、Linux API専用にプログラミングされている

        完全アウトでしょ

  • by Anonymous Coward on 2021年06月13日 0時33分 (#4049828)

    悪用されたという報告は現在のところ確認されていない

    ここに返信
    • by Anonymous Coward

      悪用したという報告も現在のところ確認されていない

  • by Anonymous Coward on 2021年06月13日 8時36分 (#4049871)

    我流の勉強しかしてないので正しくはどうなのかわからないけど、特権昇格ってなんかOS(カーネル)が使うCPUの特権モードになれるみたいな印象があるな。rootになれるというのとはちょっと違う。
    まあ、rootになれればその先でOSのレベルにまで手を出すこともできるけど。

    ここに返信
  • by Anonymous Coward on 2021年06月13日 8時51分 (#4049872)

    0.119らしい。0.のバージョン番号はまだ正式なリリースではないですよ、ベータ版ですよ、だからバグとか入っているかもしれないですよ、使用は自己責任でね…という意味かと思っていたが、今ではそうでもないのだろうか。

    ここに返信
    • by Anonymous Coward

      まるでバージョンが1になったらバグがなくなるみたいな言い方だな。

      >今ではそうでもないのだろうか。

      今ではも何も、semverに従いますとかでもない限り、バージョン番号なんて数字以上の意味はない。

      • by Anonymous Coward

        プログラムの成熟は、バグの過多ではないと思うぞ。0.とわざわざつけているのはそれなりの意味があると思うな。少なくとも作者にとっては。

typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...