Macintosh Developer Online (MDOnline)


2000年5月18日発行号 - IE5のセキュリティホール



サンノゼは水曜の夜遅くでもうすぐ日が変わるという時間になっています。今日は一連のセッションが終わった後に、メトロワークスがホールの1つで、CodeWarrior for Mac OS Xのお披露目を行いました。実は、賞品のPowerBook目当てもあってたくさんの人が集まったわけですが(笑)、実際にMac OS X上でコンパイルを行い、そしてステップ動作などを含めたデバッグも行えるようになりました。そして、会場ではCD-ROMやTシャツが配られました。REALbasicのMac OS X版もすでに出ています。ちなみに、こちらをMac OS 9で動かしてみたら動きました。しかし、頻繁にMacsBugに落ちるので、そのつど「g」コマンドを入力しないといけないのですが…。いずれの開発ツールもベータですが、Mac OS X DP4でAPIが揃ったということでもあり、Mac OS Xの開発は本格的に可能になったというのはWWDCが大きな節目にはなるでしょう。もっとも、商品を開発しているメーカの場合、もっと早く取り組みをしているところもあり、今からやろうというのはむしろ遅いくらいです。少なくとも、Mac OS 9上でCarbon化は進めているとは思います。CodeWarrior、REALbasicの対応は、夏にMac OS Xのベータが出た段階で、アップルのデベロッパ登録をしていないようなフリーウエアなどのプログラマも即座に開発作業にかかることができる目処が付いたという点では、大きな意味があるかと思います。
今日は、他にはニュースとしてお届けする内容がありません。Locus Reportの1つのJava Security Reportで、IE5のセキュリティ関連の記事を作成しましたので、それをお届けします。海外のサイトやメディアではWWDCのセッションの内容が記事になっているのがなかなか歯がゆいですが、仕方ありません。それから、明日の夜はビアパーティがありホテルへの戻りが遅くなります。配信を行わないかも知れませんので、よろしくお願いします。
(新居雅行 msyk@mdonline.jp


MacのJava環境におけるセキュリティホールの警告

Macintosh版Internet ExplorerとMac OS Runtime for Java(MRJ)のいくつかの組み合わせでセキュリティホールが発見された。本来であればクライアントで稼動するアプレットは、アプレットをダウンロードしたホスト以外との通信ができない。ところが、それ以外のホストとの通信をしようとした場合にSecurity Exceptionを発生せず、通信ができてしまう。このセキュリティホールにより、Mac内の情報を簡単にネットワーク経由で渡されてしまう可能性がある。このセキュリティホールは、Windows上のIE4.0SP1以前のバージョンのほかに、Netscape Navigatorのいくつかのバージョンなどにも存在したものである。Java言語そのものの問題ではなく、実装上のバグである。
このMacOSにおけるセキュリティホールについて、Javaに関するメーリングリストであるJavaHouseにおいて検証が行われ、多くの環境で重大なセキュリティホールがあることが警告されている。
◇JavaHouseメーリングリスト:
 http://java-house.etl.go.jp/ml/

セキュリティホールが存在する環境は以下の組み合わせである。(JavaHouse Brewersメーリングリストより抜粋)

Mac OS + MRJ 2.2 + IE 5
Mac OS + MRJ 2.1.4 + IE 5
Mac OS + MRJ 2.1.4 + IE 4.5
Mac OS + MRJ 2.1.4 + iCab pre2.0
Mac OS + MRJ 2.1.4 + Apple Applet Runner
Mac OS + MRJ 2.1.1 + IE 5
Mac OS + MRJ 2.1.1 + IE 4.5
Mac OS + MRJ 2.1.1 + IE 4.01
Mac OS + MRJ 2.1.1 + iCab pre2.0
Mac OS + MRJ 2.1.1 + Apple Applet Runner
Mac OS + MRJ 2.0 + IE 4.5
Mac OS + MRJ 2.0 + Apple Applet Runner
Mac OS + Microsoft VM for Java + IE 4.5

[阪倉 一/Java Security Report]

関連リンク:セキュリティホールに関する警告文
カテゴリ:ブラウザ, Java


【Darwinシリーズ】CD-ROMが使えない?

Darwin 1.0を起動した状態で、CD-ROMをドライブに入れてみた。すると、画面に「-CD track…」などといきなりプロンプトの続きに表示される。

◇CD-ROMの挿入に対して自動的に反応はするが…
 figs/darwin/DSC00003.JPG

挿入したのは、Windows版のOffice 2000のCD-ROMで、いちおうISO9660だと思われるが、その中のパーティション情報が表示されているのではないかと思われる。CD-ROMの自動マウントが働いているように考えられなくもないが、表示が出た後に再度dfコマンドを実行してみても、起動した時の状況とは変化がない。つまり、実際にはマウントされていないようなのである。
ここでまず、/devの中身を調べてみると、どうやら、disk2というのが加わっている。CD-ROMに入れたディスクは、とりあえずはdisk2として参照できるようだ。

◇CD-ROMを入れると、/devのデバイスが増える
 figs/darwin/DSC00007.JPG

手動マウントなのかもしれないと思い、mountコマンドを試してみた。エラーが出る上にman mountでマニュアルの参照すらできない。実際にはmount_cd9660を使うので「mount_cd9660 /dev/disk2 /」のようにコマンドを入力してみたが、Device busyというメッセージが出るだけで、CD-ROMをマウントすることはできなかった。

それじゃあということで、HFSのCD-ROMを挿入してみた。G3のシステムCD-ROMだ。すると、同じように自動的にメッセージが表示されるが、ブロックの境界が違うという旨のメッセージが出てくるなど、若干様子が違っている。ただ、dfコマンドで確認しても、自動的にマウントされた形跡はない。ドライブのイジェクトボタンを押すと取りだせる。

◇HFSのCD-ROMを挿入すると、少し違うメッセージが出てきた
 figs/darwin/DSC00008.JPG

しかしながら、「/dev」ディレクトリの内容を見ると、CD-ROMドライブと思しきdisk2の項目に、disk2s1〜disk2s8の8つのパーティションを示すデバイスが加わっている。なんで8つなのかは不明だが、ISO9660のドライブよりかは状況はいいのかもしれない。

◇HFSのCD-ROMだと、パーティションごとのデバイスも見えるようだ
 figs/darwin/DSC00009.JPG

HFSドライブのマウントなので、「mount_hfs」というコマンドを使うと思われるが、やはりマニュアルの表示はできず、コマンドの利用方法は分からない。引数なしで表示されるガイドをから「mount_hfs /dev/disk2s1 /」などとすべてのパーティションに対して行ってみたが、Invalid Argumentが出てくるので、他の引数指定が必要なのだと思われる。ソースを見てまでの解析は行っていないが、それを見れば何か分かるのかも知れない。

ところがである。HFSのCD-ROMをドライブに入れたままDarwinを起動してみると、見事にルートにそのCD-ROM名が参照できている。つまり、HFSのCD-ROMなら起動時に入れておけば、とりあえずディスクの中身は読み込むことができるようなのだ。ここでは、「Power Macintosh G3」がCD-ROMの名前でルートにマウントされていることが分かる。そして、デバイスは「/dev/disk2s8」だ。8つ目のパーティションが使えるらしい。

◇起動時に挿入しておいたHFS CD-ROMドライブはマウントされる
 figs/darwin/DSC00010.JPG

この状態だと、ドライブのイジェクトボタンを押してもディスクは出てこない。きちんとロックされている。ディスクを取り出すには「unmount "Power Macintosh G3"」とコマンド入力してで取り出すことができた。コマンドの引数に空白がある場合には、ダブルクォートかシングルクォートで囲めばよい。しかしながら、アンマウント後にも、ディスク名の項目がルートに残る。
別のディスクをそのままの状態で入れてみたが、それは以前と同じ状態であった。自動的にマウントはしないし、HFSのマウントコマンドの使い方はまだ分からないので、マウントに至ることができなかった。
一方、ISO9660のディスクを挿入した状態で起動すると、起動ボリュームしか正しく認識しないようで、これは注意が必要かもしれない。

起動時にvキーを押したままにすると、起動する時のプロセスのメッセージが逐一表示される。それを見ての推測になるが、まず、HFS/HFS+のデバイスドライバが組み込まれて、/dev/diskNsXが使えるようになる。そして、見えているデバイスを全部チェックして、ボリュームかどうかを判別し、そして自動的にボリュームとなるパーティションならマウントするのではないだろうか。だから、/etc/fstabのようなメカニズムは使わないで、HFSを自動認識して起動しているのだと考えられる。これはあくまで推測だ。

カテゴリ:Darwin, Darwin 1.0