電子メールにはさまざまなファイルを画像や音楽, プログラムなどを ``添付ファイル'' として添付して 送ることが可能であるが, 添付ファイルを open することによって プログラムの実行が開始される. たとえば, JavaScript で書いたファイル abc.html を 添付ファイルとして送付して, うけとった人がこの添付ファイルを open すると, このプログラムが受け取った人のシステムで実行される.
ALMail の場合は, 添付ファイルがあると, メールの本文に ``このファイルには添付ファイルがあります'' と表示される. ここで, ``ツール'' メニューより, ``添付ファイルの展開'' を えらぶと, ``ファイルとして保存'' か ``保存して実行'' を選択することと なる. ``保存して実行'' を選択すると添付ファイルがプログラムとして実行 されたり, 画像や音楽が送付されている場合は, それを見たり, 再生したりするソフトウエアが起動されることになる.
どんな風に添付ファイルが実行されるか画面で見てみよう
実行例
添付ファイルは便利な仕組みであるが, これを悪用しているのが メールを用いた計算機ウィルスである. たとえば, 次のような JavaScript のファイルを添付して送付したとしよう.
<script language="JavaScript"> i = 0; while (true) { document.write(Math.sin(i),"<br>"); i = i+0.000001; if (i > 3) { i = 0;} } </script>これを添付ファイルとしてもらって実行したとしよう. 上のプログラムは while ループからけっして抜ける ことのない無限ループを含むプログラムであるので, うけとった人は, この無意味なプログラムを実行するはめになる. 無限ループを止めるやり方をしらない人にとっては, こまったことに なる. また, 無限ループにより意図以外の動作を始める web ブラウザ でこのようなプログラムを実行すると, 悪影響があることもある. たとえば, 筆者の手持ちの古い netscape 3.0 (3.0 版) でこの プログラムを実行したら, netscape 画面全体がこおりついたようになって (画面 freeze) なにもできなくなってしまった. 無限ループで netscape 画面全体がこおりついてしまうのは, システムの設計者の意図ではないであろう. したがって システムのバグである.
本物のコンピュータウイルスは, このようにシステムの意図以外の動作 (システムの バグ) つけこんで, いろいろと悪さするプログラムである. たとえば, JavaScript には, 利用者のファイルを消したりする関数や, 大量のメールを送るソフトを起動する機能はないが, JavaScript の処理系のバグにより, このようなことができてしまったりすると, このようなバグにつけこむ コンピュータウイルスがでまわることになる. バグのないプログラムをつくるのは極めてむづかしい. これは, 10 行程度のプログラムをレポート用に書いてみても十分実感できるあろう. Web ブラウザなどは, 100 万行以上のサイズのプログラムである. したがってバグのない web ブラウザその他のソフトなどはないとおもっていい.
したがって, 利用者の初歩的な安全対策としては, 以下のことをまもる必要があるだろう.
2001 年 5 月 12 日の新聞に, ソニー製携帯 (S0503) (NTT ドコモ) のソフトウエア (i アプリ機能) の不具合により, 個人情報流失の恐れがあるため, 42 万台無料交換というニュースが掲載されていた. 詳しいことはまだ把握していないが, これは携帯電話にくみこまれた JavaScript 処理系みたいな言語処理系 (たしか Java だったと思う) にバグがあり, 本来読めないはずの携帯電話のなかの情報をこの処理系より読むことができて, さらに外部への転送もできてしまえるというバクが存在すると想像している. これは上で説明したコンピュータウイルスと似た状況である.
科学や技術を学ぶと, 悪いことにも利用可能な科学技術を知る機会をもつこと になる. 科学や技術を悪用するのは恥じるべき行為であり, あってはならない. また, ソフトウエアの開発はわかりうる限りのバグがないように, ごまかしのない正直で真剣な態度でおこなう必要がある. 高い倫理感をもつ技術者, 科学者は現代社会を支えるひとつの柱である.