ニジラ
虹子

バージョン 1.0.1

Windows版(28.3 MiB)

発行元: Hiromitsu Takagi, Toshima-ku, Tokyo, JP (期限切れ中)
脆弱性対応期限: 2012年12月23日まで

重要なお知らせ

現在、インストーラ(Nyzilla_Setup.exe)のコード署名の証明書の有効期限が切れています。(2011年12月30日)

最新情報

インストーラ(Nyzilla_Setup.exe)のコード署名の証明書の有効期限が切れました。(2011年12月30日)
脆弱性対応期限を延長しました。(2011年12月23日)

Nyzillaとは

Nyzillaは、Winnyのサイトを閲覧するブラウザです。ファイル共有・交換ソフトではないので、ファイルのアップロード機能はありませんし、ダウンロード機能もありません(※1)。WebブラウザやFTPソフトと同じように、1つのサイトとだけ接続して、そのサイトがどんなファイルを公開しているか(公衆送信可能にしているか)を閲覧します。

どのサイトを閲覧するかは、URLのアドレス、つまり「winnytp://example.com:7743/」の書き方で指示します。図1は、実際にNyzillaを動かしてみたときの画面です。「閲覧サイト:」欄にアドレスを入力して「接続」ボタンを押し、12分ほど経ったときの様子です。この例では、訪れたサイトが、ウイルスのファイルばかり溜め込んで陳列していることを示しています。(ファイル名が「○○   .exe」みたいなのばっかりになっています。)

画面キャプチャ
図1: ウイルス頒布サイトを閲覧したときの様子

リリースの趣旨

Winny等は、主に日本だけで使われ、世界にも類を見ない社会的混乱をもたらしてきました。漏洩ファイルの無限流通、そして、児童ポルノ等、皆が望まないはずのファイル流通が延々と続いています。これは、Winnyの利用者たちが、自分がいったい何を公開しているのか(公衆送信可能化しているのか)を自覚しないことが原因の1つです。例えば、音楽ファイルをダウンロードしたつもりの人が、実際には、ウイルスファイルもダウンロードしていて、それを共有状態にし、公衆送信して、他の人にウイルスをうつす原因を作っていることが多々あります。また、動画をダウンロードしたつもりの人が、児童ポルノビデオまで一緒にダウンロードしてしまい、それを溜め込み、陳列して、児童ポルノファイルの供給源の1つになっていることも少なくないようです。

これに対し、海外の主要なファイル共有ソフトは対照的です。例えば、LimeWireでは、自分が何を公開しているか自覚するようになっていますし、接続先の相手がどんなファイルを公開しているのかも一覧できるように作られています(「香母酢とライムの違いから日本の異端ぶりを読み解く」参照)。このような日本の特異な状況を解消すべく、Nyzillaを製作しました。Winny利用者が、LimeWire利用者と同様に、自分の行いを自覚できるようにするのが、Nyzillaリリースの趣旨です。Winny利用者の方は、Nyzillaを使って自分のWinnyサイトを閲覧してみてください。

Nyzillaで閲覧して表示されるファイルは、そのサイトでアップロードフォルダに格納されたファイルか、または、「Cache」フォルダに格納された(他からダウンロードして溜め込んだ)ファイルです。「cache」とは本来、「一時蓄積」のことを指すコンピュータ用語ですが、Winnyのそれは、無期限に蓄積される仕組みになっており、cacheとは名ばかりの、cacheとは呼べない代物です(「技術用語「cache」が政治的な言葉として拡大利用される」参照)。Winny作者の金子勇さんも著書の中で次のように述べているように、このフォルダに溜め込んだファイルは公開されたデータであり、不特定多数の人に提供する状態になっていることを自覚すべきです。

Winnyのキャッシュファイルは、そもそも公開されているデータと考えるべきです。

金子勇著「Winnyの技術」, p.151, アスキー出版, 2005年

朝日新聞2009年10月8日夕刊の記事でも、金子勇さんの発言が次のように紹介されています。

「ソフトウエアは万能ではない。ユーザーがソフトをどう使うかは自由だが、ちゃんと使っていただきたい。あまり迷惑をかけていただかない方が助かる」。違法コピーが横行するネット社会については、こう語った。

朝日新聞2009年10月8日夕刊

そもそも、情報発信には責任が伴うものです。見るだけならともかく、不特定多数に公開するからには、その行いが正当なものであるかを判断しなければなりません。「インターネットユーザー協会」(MIAU、旧「インターネット先進ユーザーの会」)の津田大介代表理事も述べているように、アップロード(送信)側の責任を自覚させなくては、ダウンロードすること(見る側)の自由が不当に規制されるおそれがあるようです。

違法ダウンロード問題の際にも,僕が出ていた審議会では「アップロードの摘発をもっと効率的に行うべきだ」という対案を出したつもりです。

インターネット・ユーザーの声を政策の争点にしたい - インタビュー, 日経ITPro, 2009年8月7日

もう一つの、Nyzillaリリースの趣旨は、Winnyで流通しているファイルの実態を広く知っていただくことです。最近では、従業員に対してWinnyの家庭での利用まで禁ずる企業等が出てきており、Winnyを使うことが許されないために、その実態を把握できない人たちが増えてきているようです。その一方で、現在も十数万人ほどの人がWinnyを使用しているらしき実態があります(「最近のWinnyノード数の推移」参照)。

広く一般の人々がWinnyの実態を把握できるようになっていないかぎり、Winny等がもたらす社会問題に対して、誤りのない認識に基づいた正しい世論が形成されることは期待できません。そこで、Nyzillaを製作し、リリースしました。Nyzillaを使えば、Winnyを使わずに、Winnyにおけるファイル流通の実態を把握することができます。Nyzillaは、Winnyプロトコルを使用しますが、ファイル共有ソフトでもファイル交換ソフトでもありません。Webブラウザと同様の仕組みですので、「P2Pソフト」でもありません。アップロード機能もダウンロード機能も(※1)ありませんので、Winnyの使用が禁じられている方でも、家庭でNyzillaを使用することは許されると考えられます。

自分自身のWinnyサイトを閲覧するには

Winny利用者の方がNyzillaを使用する場合、自分のWinnyを閲覧する際に、同じコンピュータでNyzillaを動かしてもアクセスできません。プライベートアドレスを入力してもアクセスできません。また、グローバルIPアドレスを入力しても、プライベートアドレスの割り当てられた同じLAN上のコンピュータからでは、アクセスできません。これは、Winny側の制限によるものです。

自分のWinnyを閲覧するには以下のようにします。

(1) 「確認くん」等のサイトを訪れて、自分の家のグローバルIPアドレスを調べてメモします。また、Winnyの設定画面の「ファイル転送に用いるポート」に設定されているポート番号もメモします。

(2) Winnyが稼働しているのとは別のインターネット接続回線を用意します。たとえば、携帯電話によるインターネット接続や公衆無線LANを用いて、別のコンピュータから接続する方法や、インターネットカフェを利用したり、知人の家のインターネット接続を借りる等の方法が考えられます。

(3) 上記(2)のコンピュータでNyzillaを起動し、上記(1)のアドレスとポート番号を入力して接続します。

仕組みと使い方

Nyzillaでは、1つのウィンドウが1つのサイトに対応します。複数のウィンドウを開くこともできますが、それぞれは独立して並行に動作します。

ウィンドウには、4つのタブがあります。「ファイル一覧」と「進捗グラフ」、「他のサイト」、「接続状況」です。いつでもこれを切り替えることができます。

画面キャプチャ
図2: 4つのタブ

「ファイル一覧」

「ファイル一覧」のタブでは、閲覧サイトが持っている(可能性のある)ファイルの一覧を表示します。一覧表の上に「保持の真偽:」というメニューがあり、標準状態では「陽性判定のものを表示」となっています。陽性判定のファイルには、緑色背景に「(+)」のマークが表示されており、それらは、そのサイトが持っているファイルであるという判定結果を示しています。

画面キャプチャ
図3: 陽性判定のファイルの閲覧

一方、「保持の真偽:」メニューで「すべてを表示」に切り替えると、陽性判定以外のファイルも表示されます。灰色背景に「(-)」のマークが表示されているファイルは、「陰性判定」であり、そのサイトが持っていないファイルであるという判定結果を示しています。陰性判定のファイルは閲覧サイトとは無関係である(無関係である可能性が高い)ことに注意してください。Winnyでは、利用者の行動と無関係にランダムに選ばれたファイルのキーがいくらかの確率で流通しており、何もファイルを持っていないWinnyサイトであっても、こうしたファイルのキーが送信されてきます。Nyzillaではそれを「陰性判定」して表示から除外できるようになっています。

また、白背景に「?」のマークが表示されているファイルは、まだ判定が確定しておらず、持っているのか持っていないのかわからないものであることを示しています。通常は、「陽性判定のものを表示」の標準設定のまま使用すれば十分です。

画面キャプチャ
図4: 陰性判定ファイルと、判定未確定ファイル

「進捗グラフ」

閲覧サイトによっては、すぐには1つもファイルが出てこないことがあります。サイトの閲覧状況がどうなっているかを把握するために、「進捗グラフ」のタブが使えます。次の図5は、図1のサイトを閲覧したときの「進捗グラフ」の様子です。緑色のところが「陽性判定」されたファイルの数を表しており、白のところは「判定未確定」のファイルの数を、灰色の部分は「陰性判定」されたファイルの数を示しています。

画面キャプチャ
図5: 「進捗グラフ」の画面

十分な閲覧ができた時点で、「接続」のチェックボックスをオフにして、接続を止めます。(利用者が止めない場合は、一定時間後に自動停止します。)

「他のサイト」

「他のサイト」のタブでは、閲覧したサイトから送られてきた、他のWinnyサイトへのリンク先アドレスを一覧できます。1つの行をマウスで選んでダブルクリックすると、そこを閲覧サイトとした新たなウィンドウが開くようになっています。

「問合せ」

画面上部にある「問合せ」の入力欄は、閲覧先サイトに対して「不拡散検索クエリ」を送信する機能です。通常のWinnyと異なり、この検索クエリは閲覧サイトにしか届かないようになっています。通常のWinnyでは、検索クエリは中継されて、6ホップ先のWinnyノードまで届き、その経路上でファイルを見つけてくるようになっていますが、Nyzillaではそのような機能を提供しません。「問合せ」機能は、閲覧先サイトが持っているファイルの情報を得るための機能です。

「問合せ」機能は、閲覧サイトのファイル一覧がなかなか得られないときに使用します。ただ、ほとんどの場合、この機能は必要ないようです。

「ダウンロードテスト」

「ファイル一覧」の一覧表で、1つの行を選んでダブルクリックすると、「ダウンロードテスト」パネルが開きます。この機能は、指定のファイルが本当に公衆送信されているのかを確認するために用います。

これは ※1 の「ダウンロード機能」とは違います。ファイルとして保存する機能はありませんし、ダウンロードテストで実行されるのは、ファイルの先頭1ブロック(65,536バイト)の取得のみであり、その先頭48バイトを16進表記で表示するだけの機能です。

また、取得が成功したとき、取得した1ブロックのMD5値も計算して表示しますので、本物のファイルであるか否かの判定に使うことができます。

なお、この機能は、「保持の真偽」が十分に「陽性判定」されたファイルに対してしか、使用できません。

使用上の注意

Nyzillaを起動して最初に接続するときに、図6の警告画面が現れます。ここに書かれているように、企業等のネットワークでNyzillaを使用すると、Winnyを使用したものとしてネットワーク管理者に検知される場合があります。企業等でNyzillaを使用する必要がある場合には、必ずネットワーク管理者にご相談ください。

画面キャプチャ
図6: 初回接続時の警告画面

図6の画面にある「「Port0」接続だけを使用する」のチェックボックスは、通常、オンにしたままにしてください。その場合、Nyzillaは、Nyzillaから閲覧先サイトへ接続するという(Webブラウザと同様の)方法で動作します。この場合、外部からNyzillaに対して接続されることはありません。

「「Port0」接続だけを使用する」のチェックボックスをオフにすると、Nyzillaは、通常のWinnyと同様に、待ち受け接続を開始します(ポート番号は7743)。この機能は、Port0接続では効率が低いサイト(そのようなサイトが存在するようです)をどうしても閲覧したいときに使用できるよう用意されたものです。この機能を使う場合、プライベートアドレスのLANから使用するには、ルータでいわゆる「ポート開放」の処置をしないと、効率は良くならない場合があります。

このチェックボックスをオフにして、かつ、ポート開放をした場合には、外部からNyzillaに対して接続されることになります。そのとき、Nyzillaは、接続された後(Winnyのリンクが確立した後)何も送信せずに接続を切断する動作をします。これによって何らかの情報を引き出されるといったことはありませんが、よくわからない方は、「「Port0」接続だけを使用する」のチェックボックスをオンにしたまま使用してください。

また、このチェックボックスをオフにしてNyzillaを使用すると、Nyzilla使用者のIPアドレスとポート番号が、「Winnyノード」として、他の複数のWinnyに伝達されます。その結果、他のWinnyがNyzilla使用者のIPアドレスのポート7743に対して、繰り返し接続を試みてきます。このことが気になる方は、このチェックボックスをオフにしないでください。

画面キャプチャ
図7: 図6のチェックボックスをオフにしようとしたときの警告画面

既知のバグ

IPアドレスからホスト名に変換するためのDNSの「逆引き」処理に、ネームサーバとしてGoogle Public DNSを使用するよう実装したのですが、最適化AOTコンパイラの都合により、その設定が働いていません。そのため、コンピュータのネットワーク設定にセットされたデフォルトのネームサーバが使用されます。これはバグと認識しており、今後、修正する場合があります。Google Public DNSを使うべきと考えられるときは、コンピュータのネットワーク設定で、Google Public DNSを使用するよう設定変更してください。

プライバシーとセキュリティ

Nyzillaは、基本的に、ユーザが指定したURLのホストにしか接続しません。唯一の例外はDNSの使用です。ホスト名をIPアドレスに変換するため(またその逆のため)にDNSを使います。

Nyzillaは、ユニークIDを送信しません。Winnyのプロトコルでは、接続時にローカルホストのIPアドレスを送信するようになっており、通常のWinnyでは、多くの場合(NAT内の場合)、LANのプライベートアドレスがそこに掲載されて送信されていますが、Nyzillaでは、このアドレスとして「192.168.0.2」を送信するよう固定的に設定されています。したがって、Nyzilla利用者のプライベートアドレスが送信されることはありません。また、ポート番号には「7743」を用いるよう固定的に設定されており、これが識別子となることはありません。その他、cookieに類するような仕組みはありません。1つの接続先ホストに対して、「問合せ」の検索クエリと、ダウンロードテストでの要求コマンドで、タスクIDとして連番の番号を使用しますが、異なるホストに対しては、ランダムにリセットされたタスクIDを用います。

ただし、当然ながら、アクセス元のIPアドレスはアクセス先に通知されます。アクセス先が通常のWinnyである場合は、netstatコマンド等によって接続元のIPアドレスを知られることになります。アクセス先が、何らかの通常でないWinnyプロトコル互換ソフトウェアであった場合には、Nyzillaでアクセスしていることを探知される場合があります。また、その場合、「問合せ」機能を使用していると、そこに入力したキーワードを知られることになる場合があります。(「フィルタ」欄に入力したキーワードは知られることがありません。)

上に説明した、図6の「「Port0」接続だけを使用する」のチェックボックスをオフにした場合には、そのIPアドレスでNyzillaを使用したことが、何らかのWinnyプロトコル互換ソフトウェア(例えば、いわゆる「クローラ」)によって検知されることがあります。このとき、Nyzillaはファイルの「キー」を送信することはありませんので、「ファイルを送信可能化している」とみなされることはないはずです。

Nyzillaにセキュリティ上の欠陥(脆弱性)が発見された際には、7日以内にアップデート版をリリースするよう努力します。ただし、脆弱性の原因がソフトウェアを構成する他社製のコンポーネントに起因する場合には、この努力目標を達成できない可能性があります。

Nyzillaに脆弱性が存在する可能性について検討します。NyzillaのアプリケーションプログラムはJavaで記述されており、それ自体がバッファオーバーフロー系の脆弱性の原因を孕むことは原理的にありません。また、Webの仕組みを使用していないので、Webアプリケーションの脆弱性を孕んでいることはないでしょう。しかし、Nyzillaでは、Windowsの実行形式の形で配布するために、最適化AOTコンパイラExcelsior JETを使用して、ネイティブコードに変換しています。このコンパイラに脆弱性が存在した場合、Nyzillaも影響を受ける可能性があります。JETに脆弱性修正がなされた際に、Nyzillaもアップデート版をリリースすることがあります。

Sun MicrosystemsのJava実行環境(JRE)の脆弱性との関係について検討します。JREには頻繁に脆弱性が発見され、修正されていますが、その多くはサンドボックスセキュリティの破れに関するものです。Nyzillaではサンドボックスを使用していませんので、その影響は受けない場合がほとんどと考えられます。しかし、何らかのライブラリにバッファオーバーフロー系脆弱性が存在した場合などにおいて、その影響を受ける可能性はあります。そのような脆弱性が発見された場合には、Nyzillaもアップデート版をリリースすることがあります。

Nyzillaのインストールは、汎用のJREのインストールを伴いません。Nyzillaのインストールでも、JREに準ずる実行系をインストールしますが、それはNyzilla専用のものとして動作し、他のソフトウェア(Webブラウザ等)に影響を及ぼしません。したがって、Nyzillaでインストールされた版のJREに脆弱性が発見された場合でも、それがWebブラウザ等の使用に影響することはありません。

Nyzillaの脆弱性に関する告知は、このWebページで行います。Nyzillaの脆弱性を発見された方は、以下の連絡先までご指摘ください。

更新履歴

バージョン1.0.1 (2009年12月30日)
  • バグ修正: 「他のホスト」タブの「ホスト」列でポート番号まで表示されてしまうバグ(1.0リリース直前のエンバグ)を修正。
  • バグ修正: 待ち受け接続で接続をちゃんと切断できていなかったバグを修正。
  • 機能改善: 「保持の真偽」メニューを切り替えたときにその意味を説明するダイアログを追加。
  • 機能改善: コマンドライン引数にURLを渡すとそれを「閲覧サイト」として起動する機能を追加。
バージョン1.0 (2009年12月24日)