官公庁や自治体がサービスを始めた電子申請・届出システムのほとんどは、ク ライアント側でJRE (Java 2 Runtime Environment)の使用を前提としており、 利用者にそれをインストールさせているのだが、JREには、年に1、2回程度の 頻度でセキュリティ脆弱性が発覚している。JREはきわめて汎用性の高いミド ルウェアである(ほとんどOSに近い)ため、脆弱性の発覚は、利用者のWeb利 用全般に危険をもたらすことになる。
もし、JREがほとんどのパソコンで購入時から組み込まれているならば、JRE の脆弱性の発覚に対してアップデート作業を行うのは、パソコン購入者の責任 であり、その必要性を購入者に周知する義務が販売者やメーカーにあることに なる。これは、Windows Updateがそうであるのと同じ理屈からだ。
しかし実際はそうではなく、JREを官公庁や自治体が新規にインストールさせ ているのが現状である。省庁によっては、その省庁のシステム専用のプログラ ムのインストーラがJREも同時にインストールするところもあり、この場合は 明らかに、またそれ以外の場合であっても、JREの脆弱性に対して対応を周知 する義務が、各省庁や自治体にあることになる。そうした考え方から、約3年 前にこのような報道があった。
その後、JREをインストールさせている各省庁は、JREの脆弱性が発覚するた びに必ず告知を出すようになった。このような慣行ができあがったことはすば らしいことで、さすが役所ならではのことであろう*1。その流 れの中に、昨日の日記「「受動的攻撃 の被害 = 利用者の自業自得」が最高裁基準」で書いた最高裁からの告知
本申立てプログラムの稼働に必要な中間プログラム(JRE : Java Runtime Environment)の脆弱性について
はある。
ところが、裁判所オンライン申立てシステムでは、「脆弱性が発見されました」 と事実の通知こそしているものの、どうすればよいかの説明が、
ついては,JREをパソコンにインストールした状態で,信頼できないサイトを閲覧したり,出所不明のアプレット(プログラム)を実行したりすることのないようにしてください。
で済まされてしまっている。このような対応は他省庁には見当たらない。
なぜこうなってしまったのか。その謎を解く鍵は、環境省、金融庁、内閣府、 総務省、および公的個人認証サービス都道府県協議会が出している同じ告知の 文章にありそうだ。図1〜5にそれらを示す。
これらのいずれにも「身元不明なアプレットの実行を承諾しないように」とい う文があるが、これらを書いた人は、JREの脆弱性がアプレットにどのように 危険性をもたらすかについて根本的に誤った理解をしているとしか考えられない。
なぜなら、「承諾」もなにも、普通のJavaアプレットはページを開いただけで 即座に実行が開始されるものだからだ。事実、以下にあるように、この日記 ページを見た人は既にアプレットの実行を許している。
では、環境省、金融庁、内閣府、総務省、公的個人認証協議会が言う「承諾」 とは何なのだろうか? おそらくそれはこれ(図6)のことだろう。
これは、署名付きアプレットが起動されようとしているときに現れる「確認」 ウィンドウである。「確認」とは、このアプレットを実行することを承諾する かを利用者に確認することを指す。
この確認ウィンドウが現れるのは、アプレットが署名付きのものである場合で あり、署名なしのアプレットでは何ら確認なしに、即座に実行が開始される。
署名付きの場合にだけ確認ステップがあるのは、署名付きアプレットの実行を 「承諾」した場合、そのアプレットは、どんな処理でも実行を許される(つま り、ファイルを読むとか、ファイルに書き出すとかいった処理の実行を許され る)のに対し、署名なしのアプレットでは、そうした処理の実行が許されてい ないからだ。
元々Javaアプレットは、「サンドボックス」と呼ばれる強いセキュリティ制約 の上で動作する、Web上のプログラムとして、最初登場した。Webを閲覧しただ けで動き始める、よそのサイトからのプログラムが、閲覧者のコンピュータの ファイルにアクセスするようなことがあってはならないので、そうした処理を 禁止していた。禁止されているからこそ、安心して閲覧できる。 そこが登場当初のJavaの最大の特徴であった。
しかし、そうした制約があると、アプレットにできることは限られたものとな る。ゲームとか、アニメーションとか、コンピュータシミュレーションとか、 そういったものにしか使えず、ビジネスには使えないと言われていた。そこで 後になって登場したのが、署名付きJavaアプレットである。
各省庁が電子申請・届出システムのために署名付きアプレットを使っているの は、それらのアプレットが、利用者のコンピュータ内のファイルを読み取った り、書き込んだりするためである。なぜなら、電子申請・届出システムのアプ レットは、作成途中の届出書類を利用者のコンピュータ上にファイルとして保 存したり、保存してあるものを読み出して送信する機能を備えているからだ。
署名付きアプレットはどんな処理でも実行可能であるから、利用者の確認なし に実行が開始されるようなことがあってはならない。利用者は、その署名が誰 によってなされているかを、PKIの仕組みによって確実にそうだと確認したう え、その署名者を信用する(悪いことをしようとしているプログラムではない だろうと信用する)ときだけ、「はい」ボタンを押して実行を許可するわけだ。
そして、JREに脆弱性が見つかったというのは、たいていの場合、サンドボッ クスを突破できる欠陥が見つかったことを意味している。つまり、署名なしの アプレットがファイルを読んだり書いたりできてしまうということだ。Webを 閲覧しただけでファイルを盗まれたり、ファイルを破壊されたり、スパイウェ アを埋め込まれたりするといった被害に遭う可能性があるということだ。
そのようなJREの脆弱性において、「承諾」というものは何ら関係がない。
身元不明なアプレットの実行を絶対に承諾しないようにしてください。
というのは、まるっきり頓珍漢である*2。
おそらく、環境省、金融庁、内閣府、総務省、的個人認証協議会の告知文を書 いた人たちは、「アプレット = 署名付きアプレット」だと思い込んでいるの だろう。自分達が提供しているアプレットが署名付きだから、そこしか見てい ないのだろう。署名なしアプレットの存在そのものを知らないのだろう。
ちなみに、財務省、外務省、厚生労働省の同様の告知文には、この頓珍漢な文 は見当たらない。
3.当面の対処方法
(略)
動作検証が完了するまでの間、財務省電子申請システムをご利用するにあたっ て、 JREをご利用されている方は、電子申請システムを利用した後にJREをオ フにする操作 (下記4)を実施していただきますようお願いいたします。
当面の対策方法
このような被害を回避するため、お手数ですが、汎用受付等システムを利用さ れる場合以外は「Java Plug-in(JRE)」をアンインストールしておくことを 推奨いたします。
【回避策】
1.電子申請・届出システムにアクセスするとき以外は、JRE を無効にします。 無効にする方法は、こちらをご参照ください。
2.電子申請・届出システムにアクセスする前に、他のサイトにアクセスしな いようにします。
環境省、金融庁、内閣府、総務省、公的個人認証協議会の文書が、ほぼ同じ文 面になっているのも興味深い。ひとたびどこかが誤ったことを書いてしまうと、 (役所の文書に誤りはないことになっているので)別のところがそれを真似て 書いてしまう。無断リンク禁止教が広まったのと同様に、役所は誤った理解が 伝染しやすい土壌があるのではなかろうか。
そして伝染時にはしばしば変異が生ずる。環境省、金融庁、内閣府、総務省、 公的個人認証協議会の文書では、対応方法として2つを挙げている。一つ目が、 「身元不明のアプレットを承諾しないように」であり、二つ目は「JREをオフ にせよ」である*3し かし、最高裁判所は、見よう見まねでこの注意喚起文を書くにあたり、このう ちの一つ目だけにしてしまった。それで、
ついては,JREをパソコンにインストールした状態で,信頼できないサイトを 閲覧したり,出所不明のアプレット(プログラム)を実行したりすることのな いようにしてください。
などという(きょうび Microsoftでさえ言わない)ことを書いてしまった―― そういうことなのではなかろうか。
セキュリティに関わる文書を書くときは、必ずセキュリティのことがわかる技 術者のチェックを受けるべきである。署名なしアプレットの存在を知らないよ うな人が、一般市民に対してセキュリティに関する対応を指示するのは間違っ ている。素人が「津波の心配はありません」などと言ったりしないのと同じこ とだ。
国土交通省オンライン申請システムの「よくあるご質問」に 面白いことが書いてあった。
問
「フィンガープリント」の確認を行わなかったらどうなりますか。答
「フィンガープリント」とは、拇印や指紋という意味です。 入手した電子証明書の信頼性を確認するために、広く公開している(ここでは 総務省ホームページや国土交通省ホームページで公開しています)フィンガー プリントと入手した電子証明書のフィンガープリントが一致するかを確認します。 一致すれば、自己署名証明書などの電子証明書が正しく入手できているという確認ができます。国土交通省では、この電子証明書を 用いて安全な通信を行っています。申請者の方と国土交通 省の間の安全な通信のため必要な確認ですので、「フィンガープリント」の値をご確認ください。
確認しなかったらどうなるか? という問いなのに、答えていない。
本来ならばこう書くべきところだ。
フィンガープリントを確認していない自己署名証明書は、偽物である可能性を 否定できません。まだ安全性を確保できていない通信路上で入手したものは、 通信中にデータが改竄されている可能性が否定できないためです。偽の自己署 名証明書をルート認証機関としてインストールしてしまうと、あなたのコンピュー タは様々な危険にさらされることになります。たとえば、フィッシング詐欺に 騙されやすくなったり、トロイの木馬を実行してしまいやすくなったり、 偽の電子申請システムに情報を送信してしまったり、通信データを盗聴される などの危険性があります。
フィンガープリントが一致すれば、証明書が正しく入手できているという確認 ができます。国土交通省では、申請者の方と国土交通省の間の安全な通信のた めにこの証明書を用いていますので、証明書が偽物でないかを確認するために、 必ず「フィンガープリント」の値をご確認ください。
自分で用意した設問だろうに、どうして自分で答えられないのか、 まったく理解に苦しむ。
*1 同様の問題は Acrobat Readerなどにも存在するが、こちらは解決されていない。首相官邸の「新着情報」の ページなどのように、Acrobat Readerのインストールが必要だとしている 官公庁は多いが、Acrobat Readerに脆弱性が発覚したときに、それらのサイト がその情報を閲覧者に周知するといったことは行われていない。
*2 「承諾」ステップが存在する、 署名付きアプレットの場合には、脆弱性があろうとなかろうと、どのみち、 身元不明なアプレットの実行を承諾しないようにしないといけないわけで、 脆弱性が見つかったから承諾しないようにというのも、それまた頓珍漢な 話だ。もしかして、そのことすらこの人たちは理解していないのではないかと さえ思えてくる。そう考えると、信頼されていない証明書だと警告が出ている にもかかわらず「はい」を押させる彼らの神経も理解できる。
*3 法律の文章によくあるように、and なのか or なのか が不明だという点も興味深い。おそらく and のつもりなのだろうが。