[jsosug:00152] Re: Capability の設計思想について

Back to archive index

MATSUMOTO Ryosuke matsu****@gmail*****
2011年 5月 31日 (火) 16:13:16 JST


根津さん

松本です、正にお聞きしたい内容です。

基本的なところで勘違いをしているのかもしれませんが、確認させて下さい。

> 1.例えば、ケーパビリティ変更前が全ケーパビリティがある状態であった。
> 2.ある一つのケーパビリティだけしか必要としないroot権限で動くプログラム
>    を他のケーパビリティを落として実行した。
> 3.プログラムのバグで(例えばバッファオーバーフロー)、外部からの
>    不正なコードに制御を乗っ取られらたとする。
> 4.不正なコードが1.で一つに制限したケーパビリティを元の「全ケーパビリ
>    ティを持つ」状態に戻して、root権限でシステムを乗っ取った。

上記の、「root権限で動くプログラムを他のケーパビリティを落として実行」の
ところですが、root権限で動くプログラムのCapabilityを操作することは仕様
上できなかったように思うのですが、どうでしょうか。

Capabilityの目的として、とあるプロセス(root以外)にrootの権限を丸ごと
渡すと危険なので、必要な特権以外を全て落とした状態にするということ
だったと思います。

rootで実行されたプロセスは、実行時にCapabilityがrootとして再計算され、
root権限で動くプログラムのCapabilityの変更はできなかったように思います。

なので、この場合、対象はroot以外のプロセスですので、3から4の状況で
制御を乗っ取られたとしても、自分自身でCapabilityを操作するのは不可
能(rootじゃないとプロセスのCapabilityは操作できない)だと思うのです
が、認識間違っていますか?

ただし、Capabilityがsetuidに関する特権だと話が変わってくるとは思って
います。


2011年5月31日15:52 Kensuke Nezu <nez****@samba*****>:
> 根津です。
>
> 横からで失礼します。
>
> セキュリティ的にリスクを・・・ということで、簡単な反証例があれば
> リスクがご理解いただけるのではないかと思ったのですが、
>
> 1.例えば、ケーパビリティ変更前が全ケーパビリティがある状態であった。
> 2.ある一つのケーパビリティだけしか必要としないroot権限で動くプログラム
>    を他のケーパビリティを落として実行した。
> 3.プログラムのバグで(例えばバッファオーバーフロー)、外部からの
>    不正なコードに制御を乗っ取られらたとする。
> 4.不正なコードが1.で一つに制限したケーパビリティを元の「全ケーパビリ
>    ティを持つ」状態に戻して、root権限でシステムを乗っ取った。
>
> というようなことが想定されます。
> つまり、一度、狭めたケーパビリティというのはこのような穴を生まないように
> するためのもので、ある意味、sandbox/Jailやsetuidで一般ユーザ権限で動作
> するapacheサーバプロセスのような役割を果たしているということではないで
> しょうか。
>
> --
> ------
> 根津 研介 日本Sambaユーザ会/NTTデータ先端技術(株)
> 802.11セキュリティサイト:http://www.famm.jp/wireless
> Microsoft MVP for Identity & Access - Enterprise Security(Apr 2011-Mar 2012)
> https://mvp.support.microsoft.com/profile/Kensuke.Nezu
>
>
> 2011年 5月 31日(火)08:50 に MATSUMOTO Ryosuke さんは書きました:
>> 忠鉢様
>>
>> Capabilityの仕様と概要の情報ありがとうございます。
>>
>> 今回のメールの意図は、Capabilityに関してもう少し踏み込んだ内容に関して
>> だと思っていただくといいかと思います。
>>
>>>
>> Linuxにおけるcapabilityの基本的な考え方は,rootが起動したプログラムを,最低
>> 限のcapabilityのみを許して実行させよう,という話だと思います.
>>
>> 意図としては、Capabilityをセットする際、セットしたいCapability *以外* のCa
>> pabilityを
>> 落としすことでCapability機能を実現しています。
>>
>> その *落とした* Capabilityを再度同じプロセスにセットし直せない様な仕様になっ
>> ている
>> のは、どういうリスクを想定しているのかをお聞きしたいと思っています。
>>
>> もう少し踏み込みます。
>>
>> 例えば、あるプロセスにあるCapabilityのみをセットした状態にし、それ以外のCapa
>> bilityは
>> 落とした状態だとします。「プロセスにセットしてあるCapabilityを一旦落とした後、
>> 再度、直
>> 前までセットしていたCapability *のみ* をセットし直すことは可能だ」、という
>> 仕様を許可
>> することは、リスク的にどういったものが考えられるでしょうか?
>>
>> 2011年5月31日6:03 Shintaro Fujiwara <shint****@gmail*****>:
>>
>>> こんにちは、藤原です。
>>>
>>> secureos.jp が出てこないんですけど。。
>>>
>>>
>>> 2011年5月30日22:28 Yosuke Chubachi <piano****@gmail*****>:
>>> > 忠鉢(@yuzuhara)です.
>>> >
>>> >> そこで、このような一方向でCapabilityを抜いていく仕様となった原因やリスクとは具
>>> >> 体的にどういった内容を想定されての仕様なのでしょうか?
>>> >
>>> Linuxにおけるcapabilityの基本的な考え方は,rootが起動したプログラムを,最低限のcapabilityのみを許して実行させよう,という話だと思います.
>>> > 参考)海外さんの発表in セキュアOS塾
>>> >
>>> http://www.secureos.jp/index.php?plugin=attach&refer=events%2Fjsosjk02&openfile=20090202-sosjk02-kaigai.pdf
>>> >
>>> >
>>> ざっくり言えば,原因は「本来,特権の一部が必要なプログラムなはずなのに,すべての特権を許可して(つまりrootで)実行していた」になり,リスクは「プログラムを乗っ取る攻撃により,(結果的に)root特権が奪取される可能性」といえると思います.
>>> >
>>> > linuxのケーパビリティとはどういうもの?という話は,この辺を読むと良いかもしれません.
>>> >
>>> http://www.symantec.com/connect/articles/introduction-linux-capabilities-and-acls
>>> >
>>> > 以上です.
>>> > 2011年5月30日17:18 MATSUMOTO Ryosuke <matsu****@gmail*****>:
>>> >> 日本セキュアOSユーザ会の皆様
>>> >> はじめまして、松本亮介と申します。
>>> >>
>>> >> Capabilityの設計思想に関してお聞きしたいのですが、Capabilityは権限を落とす方向
>>> >> にしか動作しないようになっていると思います。
>>> >> 例えば、とあるプロセスにsetuidのみのCapabilityがセットされた上体で、一旦setuid
>>> >> のCapabilityを落とすと、再度setuidのCapabilityを与えられないような仕様になってい
>>> >> ると理解しています。
>>> >> そこで、このような一方向でCapabilityを抜いていく仕様となった原因やリスクとは具
>>> >> 体的にどういった内容を想定されての仕様なのでしょうか?
>>> >> ご存知の方がいらっしゃいましたら、ご教授下さい。
>>> >> -----
>>> >> MATSUMOTO Ryosuke < matsu1229 gmail.com >
>>> >> _______________________________________________
>>> >> Japan secure operating system users group
>>> >> users****@secur*****
>>> >> http://lists.sourceforge.jp/mailman/listinfo/jsosug-users
>>> >>
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > 忠鉢 洋輔
>>> > Mail:piano****@gmail*****
>>> >
>>> > _______________________________________________
>>> > Japan secure operating system users group
>>> > users****@secur*****
>>> > http://lists.sourceforge.jp/mailman/listinfo/jsosug-users
>>> >
>>>
>>>
>>>
>>> --
>>> http://intrajp.no-ip.com/ Home Page
>>>
>>> _______________________________________________
>>> Japan secure operating system users group
>>> users****@secur*****
>>> http://lists.sourceforge.jp/mailman/listinfo/jsosug-users
>>>
>> _______________________________________________
>> Japan secure operating system users group
>> users****@secur*****
>> http://lists.sourceforge.jp/mailman/listinfo/jsosug-users
>>
>
> _______________________________________________
> Japan secure operating system users group
> users****@secur*****
> http://lists.sourceforge.jp/mailman/listinfo/jsosug-users
>



-- 
MATSUMOTO Ryosuke < matsu****@gmail***** >
http://blog.matsumoto-r.jp/




Jsosug-users メーリングリストの案内
Back to archive index