タイトルBrowsing Mac OS X》Security Update 10-19-01で変わったところカテゴリーMac OS X, Browsing Mac OS X
作成日2001/11/9 15:48:52作成者新居雅行
ちょっと古い話題になってしまっているが、Mac OS X 10.1の最初のアップデートは、セキュリティホールの対策であった。Security Update 10-19-01としてリリースされたものをすでに適用しているユーザも多いと思う。これは、NetInfo Managerとか、Disk Utilityといった、rootとして実行するアプリケーションにおいて、アップルメニューの「最近使った項目」からアプリケーションを実行すると、そのアプリケーションもrootの権限で実行できてしまうというものだ。もちろん、root権限で起動するという機能は基本的には問題はない。たとえば、NetInfo Managerだと、起動はできても、変更するにはログインしているユーザのパスワードを入力しないといけないので、基本的なガードはできている。また、rootとして動かさないとシステムの根本的な設定変更はできないこともあるし、アプリケーション上もそうしたニーズはある。rootとして動かすという機能はUNIXにもともと存在する機能なのである。
ただ、発見されたセキュリティホールにより、次のようなことができる。まず、あらかじめTerminalを起動し、一度終了する。そして、NetInfo Managerを起動して、「最近使った項目」からTerminalを起動すると、何もパスワードを入れてもいないのに、Terminalはrootユーザとして使えてしまうというわけだ。だから、Mac OS Xが起動していれば、誰でもそのマシンに向かってrootユーザになってしまうことができるということである。「最近使った項目」からの起動は、おそらくアクティブなアプリケーションのプロセスが別のプロセスを起動するためにそのようになるのだろう。基本的にはあるプロセスが別のプロセスを起動するときには、プロセスの所有者と同じアカウントの権限になるということだ。だから、rootが起動した前記のTerminalはrootによってログインされたのと同じになるということである。

しかしながら、Security Updateにより、こうしてTerminalを起動しても、ログインしているユーザの権限でシェルを使うようになる。いろいろ触っているうちに分かったのだが、こうした仕組みをプロセスの起動部分ないしはopenコマンドに組み込んでいる模様だ。プロセスの起動部分とは言っても、BSDレベルではなく、パッケージ化されたアプリケーションの起動部分あたりと思われるが、少なくとも、openコマンドでの起動では、たとえば、sudo open ...などとしても、openコマンドで起動したアプリケーションの所有者はrootではなくログインしているユーザになっているのである。つまり、openコマンドを使う限りは、root権限でアプリケーションを起動することができない。
これで、セキュリティ的な問題点は解消されたものの、一方で、ちょっと不便な面も出てきてしまった。というのは、たとえば/etc/hostconfigファイルを修正するのに、TextEditを使い場合、これまでだと「sudo open -e /etc/hostconfig」というコマンドでOKであった。これによりTextEditがroot権限のプロセスとして起動され、rootにしか書き込み権限のないhostconfigファイルをTextEditで書き換えることができたのであるが、そういう手段が使えなくなってしまったということになる。セキュリティを厳しくすることである程度不便になるのは仕方ない…と思うしかなさそうだ。
ただ、TextEditの場合、パッケージの中のContents/Mac OS/TextEditというバイナリファイルをコマンドとして直接実行するということをsudoコマンドで行えば、とりあえず強引ながらrootとして実行することは可能だ。だったらsuコマンドでも同じという話もあるけど、suコマンドを使うには、NetInfo Managerでrootのログインを許可するということが必要になる。いずれにしても、あまり手っ取り早い方法でもなさそうである。やっぱり、rootでないと変更できないファイルの修正作業は、picoとかviをTerminalで使うのが手早いと言えるだろう。
関連リンク