クリックすると同じ画面が表示され、消えなくなる不正なプログラムのアドレスをインターネットの掲示板に書き込んだとして、13歳の女子中学生が兵庫県警に補導されました。
兵庫県警は魔法と科学の区別がついていない。そのようなJavaScriptプログラムには何の問題もなく、問題はそれを閲覧したユーザー側のブラウザーにある。
「クリックすると同じ画面が表示され、消えなくなる不正なプログラム」というのがどのように実装されていたかは知らないが、最も簡単で原始的なものは、アラートを繰り返し表示し続けるプログラムだ。
while (true) alert("Hello") ;
このプログラムを実行すると、アラートが繰り返し表示され続ける。ところで、このプログラムを実行しているのは閲覧者のコンピューターとブラウザーだ。このプログラムを提供したものの責任ではない。このプログラムを実行する時、閲覧者は上の文字列を受け取る。それだけだ。その文字列をどうするかは閲覧者の責任だ。閲覧者のブラウザーは上記の文字列を解釈して、あらかじめ定められた規則に従い処理を行う。つまりプログラムを実行するのは閲覧者の責任であって提供者の責任ではない。なぜならば提供者は単なる文字列を提供しているだけなのだから。それを予め定められた規則に従って解釈して実行するのは閲覧者のコンピューターとそしてブラウザーの責任だ。
ブラウザーはJavaScriptを極めて安全な方法で実行する。Coinhiveもそうだが、WebブラウザーがJavaScriptプログラムを実行するにあたって問題は一切ない。もし問題があるとするならば、それはブラウザーの不具合かハードウェアの不具合だ。Webブラウザーは任意のJavaScriptプログラムを安全に実行できるように実装されている。上のプログラムにしたって、古典的すぎるのでブラウザーはとっくの昔に対処している。
もし、上のプログラムが問題を起こすとしたならば、それはブラウザーがハードウェアの不具合であって、提供者の責任ではない。コンピューターは魔法ではないのだ。
したがって、兵庫県警は魔法と科学の区別がついていない。
そもそも、おそらく補導されたJCも、書類送検されたおっさん2人もコードは書いてないんだよなぁ
ReplyDelete掲示板にURL貼っただけ
npmからkikとその他諸々が消されたまとめ - 本の虫
ReplyDeletehttp://cpplover.blogspot.com/2016/03/npmkik.html
など、node.js界隈について此処のブログを見る限り、「掲示板にURLを貼る」と「プログラミングコードを書く」が排他ではなくなりつつあると思う。
「URLのベタ書きを、URL先のスクリプトの呼び出しとして再帰的に解釈する処理系」を作るのは不可能ではない。
上記ページで言及されている「require-from-twitter」で、ある程度実現されている。
安全性だって、Plan9の子孫のinfernoやMicrosoftのSingularityのように、型宣言など検査ヒントの添付を含んだ文法を採用すれば、処理系の実行時検査で確保できる。
結局のところ、掲示板のURLがコードか否か、適切なmagic numberを持ったELFヘッダがなければコードではないのか、それとも適切な拡張子があればコードなのか、判断するのは処理系のアルゴリズムであって、人間の感覚ではない。
だから、補導されたJCも書類送検されたおっさん2人も、コードを書いた技術者と同罪だ。
少なくともnode.jsの混乱は、コードを書く能力がプログラマには不可欠だった時代が終わりつつあることを暗示している。
JSはただの文字列だ、だから提供者に責任はない、という論法は的はずれですね。実際にブラウザの脆弱性を突いてメモリハックして任意の害意ある処理を実行させる文字列も存在しますから。
ReplyDeleteまあ今回の件はその類のものとは明確に異なるため冤罪なのですけど、このブログの内容は説明が誤っています
それいったならウイルスの実行ファイルもそうなのでは?
ReplyDeleteexeファイルだって勝手にRuntimeが解釈して実行してるわけですし。