Linuxカーネル2.6にroot権限を取得できる脆弱性が発見された 94
タレコミ by Account-mochi Coward
Account-mochi Coward 曰く、
情報元へのリンク
本家記事より。
カーネル2.6.17-2.6.24.1のvmsplice()システムコールに穴があり、それを利用するとroot権限が取得できてしまうようだ。検証用コード
対策するには今の所vmsplice()を外してカーネルを最コンパイルすること。穴を突いて動作中のカーネルをオンメモリパッチするアレゲな解決方も既に公開されている。
情報元へのリンク
カーネルのリリース日 (スコア:5, 参考になる)
昨年……じゃないや一昨年の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.
Re:カーネルのリリース日 (スコア:2, 興味深い)
ローカルだから比較的マシだとはいえ結構強烈な穴だなぁ・・・
第三者からコンテンツ、特に実行可能な物を受け付けるホスティング屋さんには頭の痛い話な気がします。
で、もしかして例のLinux+Apacheワーム [srad.jp]ってこの穴を利用されたとか?
Re:カーネルのリリース日 (スコア:2, 参考になる)
>It appears that the initial patch checked the input to vmsplice_to_user,
>but the exploit used vmsplice_to_pipe which remained open to the attack.
追加の修正パッチも流れてるのでもうすぐでしょう。
Re:カーネルのリリース日 (スコア:1, 参考になる)
出た [kernel.org]みたい。
Vine Linux=勝ち組 (スコア:3, おもしろおかしい)
Re:Vine Linux=勝ち組(不粋) (スコア:1)
Re:Vine Linux=勝ち組(不粋) (スコア:1)
検証したソースパッケージはkernel-2.6.16-0vl76.28.src.rpmです。rpm2cpioで展開し、得られたパッチをvmsplice()の追加を行っていないかfgrepでさらっと調べてみる、と。
結果、そのような関数はパッチに含まれておりませんでした。
わざわざ関数名を変更するようなことがない限り追加されてないと見ていいでしょう。
Vineをお使いで気になる方は、各自検証してみましょう。
-- やさいはけんこうにいちば〜ん!
検証用コードを実行 (スコア:3, 参考になる)
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カーネルだからこのコードでダメなのかはわかりません。
Debian etchでfixでました (スコア:1)
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
Re:Debian etchでfixでました (スコア:1)
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
Re:検証用コードを実行 (スコア:1)
コンパイルして実行するだけで、rootのシェルがつかえるんですからね。
怖さを思い知らすのにはよいかもしれませんが、そのまま悪用できるのは困ります。
酷い脆弱性なのに (スコア:2, すばらしい洞察)
Re:酷い脆弱性なのに (スコア:2, すばらしい洞察)
人々もMS叩きぐらいしかやることが無いんだよ。
Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)
vmspliceというシステムコールがどういうときに使われるものか
ピンと来ないからどの程度危険か分からない人も多いと思うんで
すが、酷さが分かる程度に解説してあげれば騒ぐ人も出てくるん
じゃないでしょうか。
Re:酷い脆弱性なのに (スコア:5, 参考になる)
これはいわゆる「local exploit」というやつで、本来ローカル権限しか与えられてないはずのユーザが、
このコードをコンパイルして実行すればroot権限をとれてしまうという問題なので。
既存のソフトウェアでvmspliceを使っていて、それをネットワーク越しにexploitされる
「remote exploit」とはちょっと話が違います。
が、既存のユーザ認証の仕組みを台無しにしてしまうと言う意味で、結構深刻な脆弱製と言えます。
Re:酷い脆弱性なのに (スコア:4, 参考になる)
こちら [nikkeibp.co.jp]に記事があがっていますが、
デフォルトで動作しているものでなおかつ、カーネルのTCP/IPスタックレベルでの問題なので、
普通のセキュリティーソフトでは対応できなかっただろう、という話も…。
ムービーデモ [immunityinc.com]が公開されています。
# exploitコード動いたー(^o^)/
# 実際に動かしてみると恐怖が広がりますネ。
Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)
Re: (スコア:0)
一方、ユーザー自身が管理者権限を持っている自宅のパーソナル
Linuxなんかではあまり関係無いという話ですかね。
もちろん、自宅マシンでも対策はやっておいた方がいいんでしょう
けど。
Re: (スコア:0, 参考になる)
この前のfirefoxのアップデートでもリモートからの任意の
コード実行の脆弱性をfixっていくつもありましたし。
そのへんのゾンビ化したWindowsと何ら変わりはありません。
Re: (スコア:0)
最近はWindowsと同じく何でも送って来る(実績がある?)ということ
で、実際に悪用された例に興味があるのですが、どのようなものがある
のでしょうか。
その手の紹介サイトへのリンクでも示していただければ良いのですが。
Re:酷い脆弱性なのに (スコア:1)
実際に悪用される(された)かどうかは別問題。
ってのはどんなOSやソフトでも同じ。
Firefoxでは脆弱性を悪用された事例は今のところ
ニュースになったことはなかったかと思います。
Re: (スコア:0)
FF11のIDとパスワードを盗む
サイトへのリンクならオンラインゲーム系のBBSや
MIXIのコミュで大量に張られているのを見ました、
http://ort.sakura.ne.jp/taisai/ [sakura.ne.jp]
がとりまとめサイトみたいです
上の方を見ているとFireFoxも、そろそろ狙われる
可能性が出てくるかもだなー
Re: (スコア:0)
Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)
僕んちなら須藤さんにそのパスワード渡せばroot取れますよ。須藤ズでも可。
# やっほーい
Re:酷い脆弱性なのに (スコア:1, 参考になる)
ちょっとウェブアプリのバグ突いて、cgiの実行権限で
vmspliceを使ったバイナリを送り込んで実行するだけで
OKですからね。
Re:酷い脆弱性なのに (スコア:1)
ネットワーク系ルータやNASやWEBサーバ作るときには、気をつけましょうって話だよね。
あれ、そういえばカーネルHttpdってプロセス実行できたっけ?
Re:酷い脆弱性なのに (スコア:1, おもしろおかしい)
祝日なんだし皆寝てますよ。
いえ、私だって寝ていたいんですよ。休日当番で出勤なんですよ!
Re:酷い脆弱性なのに (スコア:1, 参考になる)
Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)
Re: (スコア:0)
ま、布教の仕方が誤ってたということだが。
Re:酷い脆弱性なのに (スコア:2, おもしろおかしい)
あ、アンタは知らないかもしれないけどねっ…
べ、別に(local exploitが見つかったのは)初めてだったってわけじゃないんだからっ!
勘違いしないでよっ! いままでだって何度も経験あるんだからねっ! [google.co.jp]
#と書くと初めてのような気がしてきた
# mishimaは本田透先生を熱烈に応援しています
蔑視? (スコア:1, 興味深い)
ついでながら、
「スラド」も別に蔑視じゃないだろ。
マクドナルドを「マクド」(や「マック」)と呼んだらそれは蔑視なのか??
単に「日本人にとって言いやすい略語」だろ?
#洒落抜きに「マクド」と「スラド」は似たようなもんだろうと思ってるのでAC
Re:酷い脆弱性なのに (スコア:1)
それこそ偉大なIBM、MS、そしてRMSにもアンチがいるわけでwww
むしろアンチ勢力との競争で育つ部分って大きいんじゃないか?
アンチを作らないようにするより、あほなアンチを無視するほうが効率よくね?
争いごとの嫌いな日本人的にはイヤな結論かも知れんが。
# mishimaは本田透先生を熱烈に応援しています
こっち見んな by 窓 (スコア:1)
これは確かにそう思う.
たぶんWindowsも毎回「こっち見んな」って思ってる.
#いえ,窓を見ているのではありません.
#窓の向こうの景色を見ているのです.
屍体メモ [windy.cx]
Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)
Re:酷い脆弱性なのに (スコア:1, おもしろおかしい)
Re:酷い脆弱性なのに (スコア:1, すばらしい洞察)
情報収集しないのに誹謗することだけは忘れんのな
Re:酷い脆弱性なのに (スコア:1, 興味深い)
ない。
でも、もし、MSのOSをお金だして買っていて、脆弱性が出てきたら「不良品じゃないか!」と叩くところ。
Linuxは、これだけの成果物をタダで使わせてもらっている。しかも問題があると迅速に対処してくれることが多い。
このちがいは大きいでしょう。
OSSかどうかよりは、タダかどうかのほうが、この場合には、重要なはず。MSがすべてのソフトウェアをタダで配っていれば、
少なくとも私は、脆弱性に関してMSを叩かない。(ほかにもっといいものがあれば使わなくはなるだろうけど。)
Re: (スコア:0)
Re: (スコア:0)
Re:酷い脆弱性なのに (スコア:1)
メーカーは責任取らないですよね。
すごく高いお金を出してサポート契約していれば別だけど。
応急処置 (スコア:2, 参考になる)
$ uname -rm
2.6.18-53.1.6.el5 i686
https://bugzilla.redhat.com/show_bug.cgi?id=432251#c10 [redhat.com]
のカーネルモジュールをロードしたところ、私の環境では安定しているようです。
Re:応急処置 (スコア:5, 参考になる)
やっていることは vmsplice のシステムコールを ret命令(0xC3) で つぶしているだけです
仮にそのパッチが当たっても,システムコールが正常に動作しないので,アプリケーションは正常に動作しません.
アプリケーションの誤動作などでファイルが壊れるまえに,カーネルをアップグレードしましょう.
Re:応急処置 (スコア:1)
呼ばれた場合、誤動作を起こすとは分かっているのですが、
比較的新しいシステムコールと言うことでまだ殆ど使われていないのかと思い。
実際、後者のパッチのログでは今のところ呼ばれていません。
しかし、エラーにもせずに戻している物を当てるべきではありませんでしたね……反省します。
Re:応急処置 (スコア:3, おもしろおかしい)
参考になった気分をつつく事ができるのです。
しかしモデレーションはあくまで主観にもとづいてつけられる
ポイントですし、嘘を嘘と見抜けない人にもモデレート権は与えられるのです。
なので「参考になる」モデは正しくは「参考になる(かもしれない)」
ポイントなのです。「面白おかしい」は確かに面白おかしく思った人が
いたということなので、「(一部の人には)面白おかしい」なのです。
いや、頼むからこの投稿には参考になるをつけないで! 全然参考にならないから!!
誤字 (スコア:0, 余計なもの)
それだけなのでAC.
Re:実際の所 (スコア:1)
deb 系だともっと簡単。
でも、なにか事情があるとかじゃなければ、普通はディストリビュータの更新を
信頼して任せとけば十分ですよ。
だって、何万、何十万というユーザーが、わざわざ手動でパッチをあてたりしな
くてもなくてもいいように、パッケージ管理システムというものが存在している
わけだし。
それに、手動でやると致命的なミスを犯すこともありますしね。
Re:忘れ物をお届けにあがりました (スコア:1)
#あれ、違う?
Re:忘れ物をお届けにあがりました (スコア:1)
Re:忘れ物をお届けにあがりました (スコア:1, おもしろおかしい)
「浜の真砂」は有限だから、多いたぁ言っても尽きることもそりゃあるさ。
でもな、盗人になる理由ってのはつきるこたぁねーんだよ。
つー、歌のどこをどうひねると、浜の真砂が「尽きることがねぇ」って意味になるのか、ちょいと、ちょいと、あ、ちょいぃぃぃいいいーとぉ、せつめぇしてぇ、もらおぉおおじゃぁ、ねええええぇええええかぁあああああああ。
# ちょちょんっ!
----
石川五右衛門風呂