[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[harden-mac:0537] Re: Mac OS X USB Keyboard Root Access



古暮でございます。
全てを検証している時間はないので推測を交えますが,

On Nov 4, 2003, at 10:39, vm_converter wrote:
> ■Control+Cの時
>   PID  TT  STAT      TIME COMMAND
>     1  ??  Ss     0:00.02 /sbin/init
>     2  ??  Ss     0:00.01 /sbin/mach_init
>     5  ??  Ss     0:00.03 -sh (sh)
>     6  ??  R+     0:00.00 ps ax

この様子から ^C に反応して sh に制御を渡しているのは init である事
が判ります。init が sh を起動して single user mode に移行する場合
は幾つかありますが,今回の場合は挙動をみる限り多分 SIGTERM を受け
取って single user mode に移行しているようです。

SIGTERM というのは kill(1) の使用時 signal を指定しない時に default
で送られる物で,通常 process の終了に使われます。init の SIGTERM
に対する挙動は shutdown(8) で multiuser mode から single user mode
に移行するのに使われたりしています。一方 ^C で送られる signal は通
常 SIGINT です。

これと ADB keyboard ではこの現象が再現しない事から,USB keyboard
driver が ^C で SIGTERM を送るようになっていたのではないかと推測出
来ます。実際 Darwin 6.6 と 7.0 の init の source code は,license
変更を除くと有意な差はありません。“内部的な開発のための機能”という
云い方もこの辺から出てきているんじゃないかと思います。

> initはクラッシュしてる訳じゃなくて、「-s」が付いてるか付いてないかの
> 差しかないんですね。

init は crash している訳ではなく,init としては正常に動作しているよ
うです。問題は起動時に keyboard から SIGTERM を渡している点のように
見えます。

この問題 Open Firmware Password を回避出来る点で脆弱性といっていい
と思いますが,遡って修正すべきかどうかについては微妙な気がします。


--[PR]------------------------------------------------------------------
  ____⊂^ヽ  【東急ハンズ新宿店から無料メルマガ配信中】 ∠ニつ__
(____ ヽ 人気商品のランキングや週間イベント情報、 / ____ )
  (__  ) とっておきの商品情報など14誌を配信中   /  __)
  (__  /  読者だけのプレゼントもご用意しています  ( __)
     http://ad.freeml.com/cgi-bin/ad.cgi?id=cpsZK
------------------------------------------------------------------[PR]--
<GMO GROUP> Global Media Online  www.gmo.jp