パスワードを忘れた? アカウント作成
19441 submission
Linux

Linuxカーネル2.6にroot権限を取得できる脆弱性が発見された 94

タレコミ by Account-mochi Coward
Account-mochi Coward 曰く、
本家記事より。

カーネル2.6.17-2.6.24.1のvmsplice()システムコールに穴があり、それを利用するとroot権限が取得できてしまうようだ。検証用コード

対策するには今の所vmsplice()を外してカーネルを最コンパイルすること。穴を突いて動作中のカーネルをオンメモリパッチするアレゲな解決方も既に公開されている。

情報元へのリンク
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by 127.0.0.1 (33105) on 2008年02月11日 10時18分 (#1294901) 日記
    Linuxカーネル2.6.17が公開されたのが、まぁぐぐると一瞬で分かるのですが
    昨年……じゃないや一昨年の2006年6月17日ですね。(いまだに2007年脳)
    2.6.24.1は今年の2月8日(ってまだ3日前か)にリリースされた最新版。

    で、The Linux Kernel Archives [kernel.org]を見ると2.6.25 RC版が出ている模様。
    参考:2.6.25 RC版のChangelog [kernel.org]
    これには本件の修正も含まれているようです。

    以下にChangelogから該当部分と思われる部分を、メールアドレス等の行は削除して引用。

    >commit 8811930dc74a503415b35c4a79d14fb0b408a361
    >Date: Fri Feb 8 08:49:14 2008 -0800
    >
    > splice: missing user pointer access verification
    >
    > vmsplice_to_user() must always check the user pointer and length
    > with access_ok() before copying. Likewise, for the slow path of
    > copy_from_user_mmap_sem() we need to check that we may read from
    > the user region.
  • Vine Linux=勝ち組 (スコア:3, おもしろおかしい)

    by Anonymous Coward on 2008年02月11日 10時24分 (#1294902)
    やった、kernel 2.6.16だからこの問題関係ない!
  • by youichi (329) on 2008年02月11日 20時51分 (#1295159)
    手元のマシンで検証用のコードをコンパイルして実行してみました。

    Debian etch
    > uname -a
    Linux mercury 2.6.18-6-686 #1 SMP Wed Jan 23 03:23:22 UTC 2008 i686 GNU/Linux
    > ./a.out
    -----------------------------------
      Linux vmsplice Local Root Exploit
      By qaaz
    -----------------------------------
    [+] mmap: 0x0 .. 0x1000
    [+] page: 0x0
    [+] page: 0x20
    [+] mmap: 0x4000 .. 0x5000
    [+] page: 0x4000
    [+] page: 0x4020
    [+] mmap: 0x1000 .. 0x2000
    [+] page: 0x1000
    [+] mmap: 0xb7ecd000 .. 0xb7eff000
    [+] root
    #

    Debian etch (x64)
    > uname -a
    Linux uranus 2.6.18-5-vserver-amd64 #1 SMP Wed Sep 26 05:17:25 UTC 2007 x86_64 GNU/Linux
      ./a.out
    -----------------------------------
      Linux vmsplice Local Root Exploit
      By qaaz
    -----------------------------------
    [+] mmap: 0x100000000000 .. 0x100000001000
    [+] page: 0x100000000000
    [+] page: 0x100000000038
    [+] mmap: 0x4000 .. 0x5000
    [+] page: 0x4000
    [+] page: 0x4038
    [+] mmap: 0x1000 .. 0x2000
    [+] page: 0x1000
    [+] mmap: 0x2b94e846e000 .. 0x2b94e84a0000
    Illegal instruction
    >

     x32の方は、はあっさりrootになれました。
     x64のほうは大丈夫でした。コードがx64に対応していないのか、x64では問題がないのか、vserverカーネルだからこのコードでダメなのかはわかりません。
    • by tt_net (17623) on 2008年02月12日 2時20分 (#1295225)
      下記のアナウンス参照。
      http://lists.debian.org/debian-security-announce/debian-security-annou... [debian.org]

      % sudo aptitude update
      % sudo aptitude upgrade
      でインストールできました。

      update後のia32のマシンで件の検証用コードを試したところ、
      以下のようになってroot奪取できない事が確認できました。
      (update前は親コメントのようにroot奪取できました)

      $ ./5092
      -----------------------------------
        Linux vmsplice Local Root Exploit
        By qaaz
      -----------------------------------
      [+] mmap: 0x0 .. 0x1000
      [+] page: 0x0
      [+] page: 0x20
      [+] mmap: 0x4000 .. 0x5000
      [+] page: 0x4000
      [+] page: 0x4020
      [+] mmap: 0x1000 .. 0x2000
      [+] page: 0x1000
      [+] mmap: 0xb7df1000 .. 0xb7e23000
      [-] vmsplice: Bad address
      親コメント
      • by youichi (329) on 2008年02月12日 2時49分 (#1295228)
        どちらのマシンにもアップデートしてみました。
        x32のほうは同じように直りました。
        x64のほうは、以下のように直りました。

        > uname -a
        Linux uranus 2.6.18-6-vserver-amd64 #1 SMP Sun Feb 10 17:55:04 UTC 2008 x86_64 GNU/Linux
        > ./a.out
        -----------------------------------
          Linux vmsplice Local Root Exploit
          By qaaz
        -----------------------------------
        [+] mmap: 0x100000000000 .. 0x100000001000
        [+] page: 0x100000000000
        [+] page: 0x100000000038
        [+] mmap: 0x4000 .. 0x5000
        [+] page: 0x4000
        [+] page: 0x4038
        [+] mmap: 0x1000 .. 0x2000
        [+] page: 0x1000
        [+] mmap: 0x2aca1020e000 .. 0x2aca10240000
        [-] vmsplice: Bad address
        親コメント
  • 酷い脆弱性なのに (スコア:2, すばらしい洞察)

    by Anonymous Coward on 2008年02月11日 10時26分 (#1294903)
    MSではないと言うだけで叩かれない…
    • Re:酷い脆弱性なのに (スコア:2, すばらしい洞察)

      by Anonymous Coward on 2008年02月11日 17時52分 (#1295092)
      MS製品の問題はMSにしか解決できないから、
      人々もMS叩きぐらいしかやることが無いんだよ。
      親コメント
    • Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)

      by Anonymous Coward on 2008年02月11日 10時36分 (#1294913)
      酷いんですか?

      vmspliceというシステムコールがどういうときに使われるものか
      ピンと来ないからどの程度危険か分からない人も多いと思うんで
      すが、酷さが分かる程度に解説してあげれば騒ぐ人も出てくるん
      じゃないでしょうか。

      親コメント
      • by synack (31022) on 2008年02月11日 10時49分 (#1294918)
        この場合、vmspliceの用途はあまり関係ないと思います。
        これはいわゆる「local exploit」というやつで、本来ローカル権限しか与えられてないはずのユーザが、
        このコードをコンパイルして実行すればroot権限をとれてしまうという問題なので。
        既存のソフトウェアでvmspliceを使っていて、それをネットワーク越しにexploitされる
        「remote exploit」とはちょっと話が違います。
        が、既存のユーザ認証の仕組みを台無しにしてしまうと言う意味で、結構深刻な脆弱製と言えます。
        親コメント
        • by Anonymous Coward on 2008年02月11日 13時04分 (#1294979)
          そういう意味では、今年一発目のMS08-001は凄い脅威だった模様。
          こちら [nikkeibp.co.jp]に記事があがっていますが、
          デフォルトで動作しているものでなおかつ、カーネルのTCP/IPスタックレベルでの問題なので、
          普通のセキュリティーソフトでは対応できなかっただろう、という話も…。

          ムービーデモ [immunityinc.com]が公開されています。

          # exploitコード動いたー(^o^)/
          # 実際に動かしてみると恐怖が広がりますネ。
          親コメント
          • Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)

            by Anonymous Coward on 2008年02月11日 16時09分 (#1295051)
            てか、これが叩かれてないんだから、親コメントの「MSだったら」というくだりは被害妄想(?)もいいところだよね。タレコミすらされてないなんて…。
            親コメント
        • by Anonymous Coward
          つまり、複数のユーザーでシェアしているマシンでは深刻な問題で、
          一方、ユーザー自身が管理者権限を持っている自宅のパーソナル
          Linuxなんかではあまり関係無いという話ですかね。

          もちろん、自宅マシンでも対策はやっておいた方がいいんでしょう
          けど。

          • Re: (スコア:0, 参考になる)

            by Anonymous Coward
            最近はブラウザ経由で何でも送ってくるので、とても危険です。
            この前のfirefoxのアップデートでもリモートからの任意の
            コード実行の脆弱性をfixっていくつもありましたし。
            そのへんのゾンビ化したWindowsと何ら変わりはありません。

            • by Anonymous Coward
              > 最近はブラウザ経由で何でも送ってくるので、とても危険です。

              最近はWindowsと同じく何でも送って来る(実績がある?)ということ
              で、実際に悪用された例に興味があるのですが、どのようなものがある
              のでしょうか。
              その手の紹介サイトへのリンクでも示していただければ良いのですが。

              • 危険な状態が存在している(していた)ことと、
                実際に悪用される(された)かどうかは別問題。
                ってのはどんなOSやソフトでも同じ。

                Firefoxでは脆弱性を悪用された事例は今のところ
                ニュースになったことはなかったかと思います。
                親コメント
              • by Anonymous Coward
                WIN+IE向けであればオンラインゲームの
                FF11のIDとパスワードを盗む
                サイトへのリンクならオンラインゲーム系のBBSや
                MIXIのコミュで大量に張られているのを見ました、

                http://ort.sakura.ne.jp/taisai/ [sakura.ne.jp]
                がとりまとめサイトみたいです

                上の方を見ているとFireFoxも、そろそろ狙われる
                可能性が出てくるかもだなー
          • by Anonymous Coward
            一般ユーザアカウントが(パスワードクラックなどなんらかの方法によって)取得されたら、exploit含んだコードを実行する or させることで root権限取得してシステムを乗っ取ることが可能ですね。
      • by Anonymous Coward on 2008年02月11日 10時43分 (#1294915)
        どういうときに使われるものか、なんて全然関係ないですよ。
        ちょっとウェブアプリのバグ突いて、cgiの実行権限で
        vmspliceを使ったバイナリを送り込んで実行するだけで
        OKですからね。
        親コメント
        • by naruenosekai (13637) on 2008年02月11日 11時14分 (#1294929)
          意図的にバックドアとしてカーネルにコード入れておくには最適な方法かもしれんので、
          ネットワーク系ルータやNASやWEBサーバ作るときには、気をつけましょうって話だよね。

          あれ、そういえばカーネルHttpdってプロセス実行できたっけ?
          親コメント
    • Re:酷い脆弱性なのに (スコア:1, おもしろおかしい)

      by 127.0.0.1 (33105) on 2008年02月11日 10時39分 (#1294914) 日記
      こんな早い時間から/.チェックしているアンチはいないでしょう。
      祝日なんだし皆寝てますよ。

      いえ、私だって寝ていたいんですよ。休日当番で出勤なんですよ!
      親コメント
    • by Anonymous Coward on 2008年02月11日 11時42分 (#1294948)
      オープンソースだから安全だなんて言えないなと、当たり前の事を再確認した。
      親コメント
      • Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)

        by Anonymous Coward on 2008年02月11日 13時41分 (#1294992)
        オープンソースの真価は、まさに脆弱性発覚後の対処(手法/速度)にあるのでは?
        親コメント
        • by Anonymous Coward
          そうかも知れんが、これまで信者は「多く目でチェックされてるからWindowsより高品質」って触れ回ってたわけだし、こういうのは信用がた落ちですなぁ。
          ま、布教の仕方が誤ってたということだが。

          • Re:酷い脆弱性なのに (スコア:2, おもしろおかしい)

            by mishima (737) on 2008年02月11日 14時55分 (#1295025) ホームページ 日記
            > これまで信者は「多く目でチェックされてるからWindowsより高品質」って触れ回ってたわけだし、こういうのは信用がた落ちですなぁ。

            あ、アンタは知らないかもしれないけどねっ…
            べ、別に(local exploitが見つかったのは)初めてだったってわけじゃないんだからっ!
            勘違いしないでよっ! いままでだって何度も経験あるんだからねっ! [google.co.jp]

            #と書くと初めてのような気がしてきた
            --
            # mishimaは本田透先生を熱烈に応援しています
            親コメント
      • Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)

        by Anonymous Coward on 2008年02月11日 15時02分 (#1295026)
        オープンソースだからこそ、見付かったバグなのじゃないか?
        親コメント
    • by Anonymous Coward on 2008年02月11日 19時05分 (#1295132)
      個人的には、7、8年前は、激しいアンチMSだったけど今はそうでもない。こっちに危害を加えないかぎり、MSに関心は
      ない。

      でも、もし、MSのOSをお金だして買っていて、脆弱性が出てきたら「不良品じゃないか!」と叩くところ。
      Linuxは、これだけの成果物をタダで使わせてもらっている。しかも問題があると迅速に対処してくれることが多い。
      このちがいは大きいでしょう。

      OSSかどうかよりは、タダかどうかのほうが、この場合には、重要なはず。MSがすべてのソフトウェアをタダで配っていれば、
      少なくとも私は、脆弱性に関してMSを叩かない。(ほかにもっといいものがあれば使わなくはなるだろうけど。)
      親コメント
    • by Anonymous Coward
      自ら叩く、という選択肢はないんでしょうか?
    • by Anonymous Coward
      叩く前に今必死になって対策してるんじゃない?
  • 応急処置 (スコア:2, 参考になる)

    by momekabi (26516) on 2008年02月11日 15時29分 (#1295036)
    オンメモリパッチは同じマシンでも上手く行ったり行かなかったり不安定のようで失敗するとフリーズしました。
    $ uname -rm
    2.6.18-53.1.6.el5 i686

    https://bugzilla.redhat.com/show_bug.cgi?id=432251#c10 [redhat.com]
    のカーネルモジュールをロードしたところ、私の環境では安定しているようです。
    • Re:応急処置 (スコア:5, 参考になる)

      by annoymouse coward (11178) on 2008年02月11日 16時15分 (#1295055) 日記
      その"オンメモリパッチ"は ネタ ですよ? workaround にもならないので,即刻外すべきです

      やっていることは vmsplice のシステムコールを ret命令(0xC3) で つぶしているだけです
      仮にそのパッチが当たっても,システムコールが正常に動作しないので,アプリケーションは正常に動作しません.

      アプリケーションの誤動作などでファイルが壊れるまえに,カーネルをアップグレードしましょう.
      親コメント
      • by momekabi (26516) on 2008年02月11日 17時20分 (#1295080)
        ネタ、でしたかorz
        呼ばれた場合、誤動作を起こすとは分かっているのですが、
        比較的新しいシステムコールと言うことでまだ殆ど使われていないのかと思い。
        実際、後者のパッチのログでは今のところ呼ばれていません。
        しかし、エラーにもせずに戻している物を当てるべきではありませんでしたね……反省します。
        親コメント
  • 誤字 (スコア:0, 余計なもの)

    by Anonymous Coward on 2008年02月11日 10時06分 (#1294895)
    s/最コンパイル/再コンパイル/
    それだけなのでAC.
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...