電子メールは歴史が長いプロトコルによって実現されている。このため、当時には想定されていなかった脆弱性を突いた攻撃が数々現れているのも事実。こうした攻撃にどのように対処しているのだろうか。
メールシステムの持つ脆弱性
メールは使いやすく便利な反面、悪用もされやすい。事実、得体のしれない商品の勧誘や、違法コピーを思わせる有名ソフトの極端な廉価販売など、大量の迷惑メールが出回っている。
最近では、詐欺を目的としたフィッシングメールや、情報を盗聴するためトロイの木馬を仕込んだウイルスメールなども出回っており、もはや迷惑では済まされない水準に達している。
現実の世界でも「オレオレ詐欺」が「振り込め詐欺」に姿を変えてはびこっているように、メールシステムでも悪質な迷惑メールが姿形をさまざまに変えて跋扈している。両者にはいくつかの共通点がある。それは「シンプルで広く普及している通信手段」を使っていること、「発信者が身元を偽っていること」である。
よくよく考えてみると、電話もメールも発信元は「自己申告制」のシステムである。電話口で他人の名前を名乗ることと、別のメールアドレスを差出人に記入するのは同じことで、特別な技術を必要とせず簡単に実現する。電話には発信者番号を通知する仕組みがあるから身元がわかるように思われるが、何らかの事情で他人の電話機を使っているといえば済んでしまう。
実はメールシステムも同じで、いくらメールサーバで怪しい差出人を排除しようとしても、規模が大きくなるほど対応にも管理にも限界が生じる。その結果、「差出人のメールアドレスがメールサーバと同じドメイン名なら送信を許可する」というように条件を甘くしがちである。つまりメールシステムは電話と同じように発信元をシステムの構造上、偽ることができるセキュリティ面の脆弱性を併せ持つのである。
それではメールシステムは身元を偽るのがどれぐらい簡単なのか検証しよう。なお、無許可で他人の所有するサーバ(ISPのメールサーバなど)に同じことをすると“不正アクセス”として摘発される可能性がある。図1は実験用に設置したメールサーバに対してTelnetでアクセスした際の様子である。
どのようなシステムでも、「サーバ」はつねにクライアントからのアクセスを受け付けるように準備している。メール送信のSMTPサーバも同じで、TCP/IPでポート番号25を指定すればとりあえず接続できる。サーバは、アドレスとポート番号をインターネットに公開している以上、知らないクライアントが接続してきても拒否できないのである。
さてTelnetで接続できたとしても、正当なユーザーか確認すればよいのだが、SMTPの基本仕様にはユーザー認証はない。また、接続後の通信手順が複雑で厳格なものならば、それ自体が不正アクセス抑止の仕組みとして期待できるのだが、図1でわかるようにSMTPは「簡単」に通信手順を実行できる。それもテキストベースのコマンドによってである。“HELO”コマンドでサーバに挨拶を済ませるだけでそのあとの操作が可能となる。
あとは宛先をRCPT TOコマンドでいくつも指定し、DATAコマンドでメールメッセージを送信すれば、いとも簡単にスパムメールを発信できる。こうした操作を自動的に行なうソフトは、比較的簡単に作ることができる。近年は、「ボット」と呼ばれるウイルスの一種が遠隔操作でこうした動作をすることで、他人のPCからスパムを送信するといったことも行なわれている。
SMTPは、シンプルな通信手順をテキストベースのコマンド制御で動作させる仕様である。しかし、それは最低限必要とされている機能を絞り込んでいるためで、どうしてもセキュリティ面での甘さが出てきてしまう。
(次ページ、「迷惑メールの抑止技術」に続く)

この連載の記事
-
第5回
ネットワーク
メールを受け取る仕組みはどうなっていますか?? -
第4回
ネットワーク
メールを送受信する仕組みとは? -
第3回
ネットワーク
メールの中身をのぞいてみませんか? -
第2回
ネットワーク
メールを支えるドメイン名とDNSの仕組み -
第1回
ネットワーク
メールが届く仕組みを知っていますか? -
ネットワーク
電子メールの秘密 - この連載の一覧へ