aaaiiuie

学習(備忘録)のため運用

情報処理安全確保支援士 3.4 電子メールの脆弱性と対策

電子メールを実装しているSMTP(Simple Mail Transer Protocol)やPOP3(Post Office Protocol Vershion3)はDNSやHTTPと並んで古くから普及しているサービスである。古くから使われている分、プロトコルの使用や実装において数多くのセキュリティ上の問題点が指摘されている。ここではSMTPやPOP3の使用と実装における脆弱性について解説する。

3.4.1 SMTPの脆弱性

メールの利用において、近年最も大きな問題となっているはインターネット上を常に飛び交っている膨大な迷惑メール(スパムメール)である。全世界で発信されているメールのうち、実に80%がスパムメールと言われている。これほどまでにスパムメールが横行する原因となっているのが、旧バージョンのメールサーバソフトの仕様における脆弱性(次に挙げる1、2)である。
なお、迷惑メールはスパムメールのほか、UBE(Unsolicited Bulk Email)、UCE(Unsolicited Commercial Email)とも呼ばれ、宣伝や嫌がらせなどの目的で不特定多数に大量に送信されるメール全般を指す。迷惑メールの多くが送信元のメールアドレスを詐称するUBEであり、第三者中継を許可している複数のサーバを経由して配信されるケースが多い。
SMTPの脆弱性については次のようなものがある。

①メールの投稿や中継などがすべて同じ仕組みで行われている

旧バージョンのメールサーバソフトウェアでは、MSAの機能は特に使用されておらずMUAからのメール送信要求(メールの投稿)の処理も、メールサーバ間でのメール中継(転送)処理も区別なく、すべてMTAが25番ポートで同様に処理していた。また、旧バージョンのメールサーバソフトウェアの標準設定では、ドメイン名などの制限がなく、誰からのメール投稿であっても受け付けるようになっていた。

②メールの渡航にあたってユーザーを承認する仕組みがない

広く普及しているメールサーバソフトウェアの旧バージョンでは、メールの投稿にあたってユーザーを認証する仕組みがなかった。そのため、発信元のメールアドレスの訴訟が堂々と行われるほか、本来受け付ける必要のない組織外の第三者から別の第三者へのメール投稿を受け付け、中継してしまう。これを第三者中継(Third-Party Mail Relay)という。なお、第三者中継をオープンリレー、それを行うSMTPサーバをオープンリレーサーバー(SMTP)と呼ぶ。現在、一般的に普及しているメールサーバソフトウェアでは、御術するSMTP-AUTHが実装されているため、メールの投稿にあたってユーザー認証を行うことが可能である。
インターネットと内部ネットワークの境界でメールの中継を行う一般的なMTA(SMTPサーバ)は、本来、次の条件に合致するメールのみを中継すれば良いはずである。

  • 自分のサイト内のユーザーが任意のアドレス宛に発信するメール(発信元メールアドレスに自分のドメイン名が含まれているもの)
  • 任意のアドレスから自分のサイト内のhユーザー宛に送られてくるメール(宛先メールアドレスに自分のサイトのドメイン名が含まれているもの)
正常なメール中継の例
第三者中継の例

ところが、第三者中継では、自分のサイトとは関係のないダイン車(発信者)が、自分のサイトとは関係のない別の第三者にメールを中継させようとしているため、発信元メールアドレス、宛先メールあどれすともに自分のサイトとは関係のないドメイン名になっている。

中継の対象となるメール発信元メールアドレスと宛先メールアドレスによって、この条件に合致するか否かは用意に確認可能であるため、それによって不要なメールの中継を拒否すれば良いだけである。しかし、実際には上記の条件に合致しないメールであっても無条件に中継してしまうメールサーバ(オープンリレーサーバ)がインターネット上にまだ数多く存在しているため、スパマー(スパムメールの発信者)の踏み台となり、スパムメールの中継に悪用されている。
このようなオープンリレーサーバは、スパムメールの発信源として、RBL.jp(Realtime Blackhole List Japan)などのブラックリストに登録される可能性がある。メールサーバがこのようなブラックリストに登録されると、当該メールサーバから送信されるメールがブラックリストを利用しているメールサーバで受信拒否されてしまうことになる。
また、NDR(Non-Delivery Report:配送不能通知)メールを悪用してスパムメールを送りつける手法もある。NDRメールは、送信先のメールアドレスが存在せず、正常に送信できんかった場合に、それを通知するために、送信できなかったメールを添付して送信元アドレスに送られる。この機能を悪用し、スパマーは送信元アドレスをスパムメールの送信先となるようにアドレスを詐称した上で、意図的に配送不能となるメールを踏み台となるメールサーバ宛に送りつける。すると、詐称された送信もとアドレス宛にNDRメール(NDRスパム)が送りつけられることになる。NDRメールの受信者は自分が送ったどのメールが配送不能になったのかを確認するために、届いたNDRメールを開く可能性が高い。スパマーはそれを狙ってNDRメールに不正なリンクやマルウェアを仕掛けたりする。
この手法への対策として、NDRスパムの発信源とならないためにNDRメールを送信しないように設定したり、NDRスパムを遮断するためにNDRメールをすべてフィルタリングしたりする方法などがあるが、こうした対策を行うとNDRメール本来の目的は達成できなくなってしまう。

③メール暗号化機能が標準装備されていないため、平文でネットワークを流れる

SMTPにはメールを暗号化する機能がないため、暗いなとアプリケーションがわで暗号化を行わない限り平文でネットワーク中を流れる。したがってパケット盗聴によってメールの内容が漏洩したり、メールの内容を改竄されたりする可能性がある。

④MTAの実装・設定によってユーザーのメールアカウント情報が漏洩する可能性がある

一般的なMTAにはVRFY、EXPNというコマンドが存在する。これらのコマンドを使用することで、そのサーバにおけるメールアカウントの有無や(メールアカウント名がエイリアスの場合の)メールの実際の配送先情報を確認することができる。

⑤MTAの種類、バージョンによってBOF攻撃を受ける脆弱性がある

MTAの中には非常に古くから使われているものがあり、特に旧バージョンのMTAにはBOF攻撃を受ける脆弱性など数多くの脆弱性が報告されている。

SMTPの脆弱性へのたいさく

①MTAの設定による発信元メールアドレスの制限

MTAの設定によって、発信元メールアドレスと宛先メールアドレスのいずれにも自分のサイトのドメイン名が含まれていないメールを配信しないようにする。これにより、第三者によるメール中継を禁止する。

②SMTP Authentication(SMTP-AUTH)によるユーザーにんしょう

SMTPにユーザー認証機能を追加した方式である。使用するためには、MTA,MUAの双方からこの方式に対応している必要がある。SMTP-AUTHの認証機構はSASL(Simple Authentication and Security Layer)に基づいている。SASLでは、ユーザー名とパスワードを安全にサーバに送る手段として、Kerberos、GSSAPI(Generic Security Service Application Programming Interface)、S/Keyなどの認証構造を規定している。 SMTP-AUTHにおけるユーザー認証方式には、次のような種類があるが、一般的に使用されているのはCRAM-MD5である。

SMTP-AUTHにおけるユーザー認証方式

③POP before SMTPによるユーザー認証

メールの送信に先立ってPOP3によるユーザー認証を行い、認証に成功した場合のみ一定時間メールの送信を許可する方式。正式な規定は存在しないがRFC2476の中に記述されている。POPサーバは認証に成功したクライアントのIPアドレスを一定時間記録しておき、SMTPはPOPが記録した一覧の中にあるIPアドレスから送信要求があれば受け付ける。。SMTPはあくまでもIPアドレスをチェックするのみであるため、IPアドレスの偽装によって不正なメール送信を許してしまう可能性がある。また、POPの脆弱性についても対処する必要がある。

④Outbound Port25 Blockingによるメール投稿制限

前述①の対象により、多くのサイトでメールの第三者中継が禁止されるようになると、スパマーはボットなどを用いて送信先サイトのメールサーバと直接SMTPコネクションを確立し、スパムを送りつけるという手法を多用するようになった。この手法は第三者中継を用いていないため、第三者中継を禁止したとしてもスパムを受信してしまうことになる。 そこでこのような手法によるスパムを防ぐための対策として考え出されたのがOutbound Port25 Blocking(OP25B)である。OP25BとはISP(Internet Services Provider)のメールサーバを経由せずにインターネット方向(外向き)に出ていく25番ポート宛のパケット(SMTP)を遮断する方式であり、すでに多くのISPで採用されている。OP25Bのイメージを次の図に示す。

OP25Bのイメージ

OP25BとSubmissionポートによるメール投稿の仕組み

  • 正当な利用者(MUA)はISPのメールサーバとSMTPセッションを確立し、メールを送信する(正常なメール送信方法)
  • スパマー(ボットなど)はISPのメールサーバを経由せず、直接送信先サイトのメールサーバとの間でSMTPコネクションを確立しようとするが、これをOP25Bにより遮断する。
  • 正当な利用者が自社のメールサーバなどと直接SMTPコネクションを確立してメールを送信する日強油がある場合には、25番ポートではなく、投稿専用の587番(Submission)を使用する。
  • 上記を実現するため、従来のMTAの機能をMSAとMTAに分離する。
  • MSAでは、SubmissionポートへアクセスしてきたユーザーをSMTP-AUTHによって認証することで、スパマーからの投稿を受け付けないようにする他、TLSによって通信を秘匿化することも可能である(Submission over TLS)
  • MTAは従来どおり25番ポートを使用してMTA間でのメールの中継と受信を担当する。
Submissionポートによるメール投稿のイメージ

⑤IPアドレス、ディジタル署名による送信ドメイン認証

発信元情報を偽装したメールを発見し、排除する技術として、発信元のIPアドレスやディジタル署名によってメール受信側で発信元SMTPサーバを認証する仕組み(送信ドメイン認証)が広く普及している。主な方式を次に示す。

IPアドレスによる方式

  • Sender Policy Framework (SPF)
    あらかじめ送信元ドメインのDNSサーバのTXTレコードに正当なSMTPサーバのIPアドレス(SPFレコード)を登録しておくことによって、発信元のSMTPサーバを認証する仕組みであり、次のような機能がある。
    • メールを受信した受信側ドメインのSMTPサーバは、発信元のDNSサーバに問い合わせ、エンベロープ(SMTPプロトコルのMAIL FROM)のメールアドレスのドメインの正当性を検証する・
    • 上記によって発信元のSMTPサーバの正当性が確認された場合のみメールを受け入れ、それ以外のメールは排除する。

SPFレコードの記述例を次に示す。

SPFレコード記述例
  • Sender ID Freamework(Sender ID)
    SPFの機能に加え、受信したメールのヘッダ情報(From:,Sender:など)のメールアドレスのドメインの正当性を検証する(どちらか一方を検証もしくは両方検証を選択可能)。
SPF,SenderIDによる送信者認証のイメージ

ディジタル署名による方式

  • DominKeys
    あらかじめ発信元のドメインのDNSサーバに正当なメールサーバの公開鍵を登録しておき、SMTPサーバが付したディジタル署名によって発信元のメールサバの正当性を検証する仕組みであり、次のような機能がある(米国ヤフー社が中心となって策定)。

    • 発信元のSMTPサーバは、自身の秘密鍵を用いて送信するメールのDomianKey-Signature:ヘッダにディジタル署名を付ける。
    • メール受信した受信側ドメインのSMTPサーバは、発信元のDNSサーバに問い合わせて公開鍵を入手し、DomainKey-Signature:ヘッダのディジタル署名の正当性を検証する。
    • 上記によってディジタル署名(発信元SMTPサーバ)の正当性が確認された場合のみメールを受け入れる、それ以外のメールは排除する。
  • DominKeys Idenified Mail(DKIM)
    DomainKeysと、米国シスコシステムズ社らが提案していたInternet Identified Mail (IIM)の仕様を統一し、IETFが標準化したディジタル署名による送信ドメイン認証技術である。DKIMの仕組みはDomainKeysと同様であるが、署名を検証するための公開鍵をメールのヘッダに添付するIIMの技術が追加されており、将来的にはドメイン単位ではなく、ユーザ単位での署名及び検証も可能としている。

DomainKeys、DKIMによる送信者認証のイメージ
送信ドメイン認証方式の比較

近年社会問題化しているスパムメールは、必ずしも発信元情報を偽装しているわけではないため、これらの技術を用いても完全なたいさくとはならないが、ある程度の効果は期待できる。なお、フィッシングメールについては発信元情報が偽装されているケースが大半であるため、送信ドメイン二章による削減効果が期待できる。

⑥メールフィルタリング

迷惑メールやマルウェアが添付されたメールを検出し、除去するためにメールフィルタリングツールやサービスが広く普及している。迷惑め0るのフィルタリングについてはISP(Internet Services Provider)のメールサービスを利用している場合には標準的に提供される。自社でメールサバを設置している場合にはサーバ製品を導入して経路上で迷惑メールをフィルタリングするのが一般的である。または、メールクライアントソフトウェアの迷惑メールフィルタリング機能を使用する場合もある。 従来のメールフィルタリング製品は、アドレス情報に基づいてフィルタリングしたり、あらかじめ設定した文字列をサブジェクトや本文に含むメール等をフィルタリングしたりする。そのため、条件設定が煩雑になるほか、アドレスやメールの内容が可変であったり、文字列の一部が伏せ字で隠されていたりするとフィルタリングが有効に機能しないといった問題があった。 こうした問題を改善する迷惑メール検知手法として、ベイジアンフィルタリング(bayesian Filtering)がある。ベイジアンフィルタリングとは、ベイズの定理を応用することにより、迷惑メールの特徴を自己学習し、統計的に解析して判定するフィルタリング手法である。学習量の増加に伴い、フィルタリングの精度が向上する。

⑦「SMTP over TLS」によるメールの暗号化及びユーザー認証

TLSを用いてSMTP通信を暗号化する方式である。ただし、暗号化されるのはあくまでもクライアント(MUA)から発信元(自分のサイト内)のメールサーバまでの通信のみであり、インターネット上では平文が流れる。この方式ではメールの暗号化に加えディジタル証明書によるユーザー認証を行うことも可能である(そのためには各ユーザがディジタル証明書を取得してる必要がある)。なお、SMTP over TLSでは465/TCPポートが用いられる。

⑧「STARTTLSコマンド」によるメールの暗号化

STARTTLSは主に送信側のメールサーバと受信側のメールサーバの通信を暗号化するために使用される。STARTTLSでは、まず暗号化されていない状態で通信を開始したあと、送信側のメールサーバが「STARTTLSコマンド」を発行する。このとき、受信側のメールサーバがSTARTTLSに対応していればTLSによる暗号化通信が開始され、対応していない場合は、暗号化されないままで通信が行われる。このように、STARTTLSは明示的に通信を暗号化通信を行う方式である。これに対し、⑦のSMTPoverTLSは暗黙的な暗号化方式と言える。

⑨S/MIME、PGP等によるメールの暗号化

これらのソフトウェアを用いてアプリケーション層でメールを暗号化することで、すべての通信経路でメールを匿名化する。

⑩MTAの不要なコマンドの無効化

前述のVRFY、EXPNなど、不要なコマンドを無効化するようMTAを設定する。

⑪その他、MTA実装面での対策

  • MTAのバージョンを最新化し、バッチを適用する
  • AVソフトを導入し、中継するメールに添付されたウイルスを駆除する
  • インターネットのSMTPサーバと社内LAN上のSMTPサーバとの間で相互にメールの中継を行う中継専用メールサーバ(外向けSMTPサーバ)をDMZ上に設置する
  • 外向けメールサーバと同じDMZセグメント上にゲートウェイ型AVサーバを設置し、メールに添付された不正なコードを駆除する

3.4.2 POP3の脆弱性

POP3(Post Office Protocol Version3)は、MUAがサーバよりメールを受信するための代表的なプロトコルとして広く使用されている。POP3では、メールの受信に際し、メールサーバとの間でユーザー認証を行う仕組みになっているが、その仕様においていくつかの脆弱性が指摘されている。

①認証情報が平文でネットワーク中を流れる 標準的なPOP3では、USER/PASSコマンドによってユーザ認証を行うが、その際ユーザーIDとパスワードは平分のままネットワーク中を流れていくため、経路上でのパケット盗聴により、ユーザーの認証情報が盗まれてしまう可能性が高い。そのため、インターネットからのインバウンド通信においてPOP3を使用することは望ましくない。

②受信データ(メール)が平文でネットワーク中を流れる POP3では、認証情報だけではなく、メールの内容自体も平文のままネットワーク中を流れる。そのため、経路上でのパケット盗聴によってメールの内容がろうえいしたり、内容を改ざんされたりする可能性がある。

3.4.4 POP3の脆弱性への対策

①APOPによるユーザー認証情報の秘匿化 APOP(Authenticated Post Office Protocol)は、メールサーバとMUAとの認証において、チャレンジレスポンス方式によるユーザー認証を行うことで、認証情報が平文のままネットワーク中を流れるのを防ぐ。APOPでは、サーバから送られてくる文字列(チャレンジ)とパスワードを連結した文字列からMD5を用いてメッセージダイジェストを生成し、それをレスポンスとしてサーバに返すことで認証をおこなう。パスワードそのものがネットワークを流れることはないため、認証プロセスが盗聴されても問題はない。あくまでも認証情報のみを秘匿化する方式であり、APOPを用いてもメールそのものは平文のままネットワーク中を流れるため注意が必要である。

②「POP3 over TLS (POP3S)」による認証情報及びメールの暗号化 TLSを用いてPOP3通信(認証情報から受信するメールまですべて)を暗号化する方式である。ただし、暗号化されるのはあくまでも直接通信するPOP3サーバからクライアント(MUA)間の通信のみであるため、注意が必要である。 「POP3 over TLS (POP3S)」では通常のPOP3とは異なり、995/TCPポートを使用する。POP3サーバでは995/TCPポートへのアクセス要求を自身の110/TCPにポートフォワーディングする。なお、インターネット側からファイアウォールを介して「POP3S」で社内のPOP3サーバに接続し、メールを受信するためには、MUA側の設定に加え、995/TCPの通信を許可するようにファイアウォールに設定する必要がある。

インターネット側からPOP3Sでメールを受信するイメージ

③SSHのポートフォワーディング機能による認証情報及びメールの暗号化 SSH(secureSHell)ポートフォワーディング機能を用いてPOP3通信(認証情報から受信するメールまですべて)を暗号化する方式である。ただし、「POP3S」と同様、暗号化されるのはあくまでも直接通信するPOP3サーバからクライアント(MUA)間の通信のみであるため、注意が必要である。 SSHのポートフォワーディング機能とは、暗号化機能に備えていないアプリケーションの通信をSSHが間に入って中継し、暗号化するためのものである。この機能を用いることにより、POP3、FTPをはじめ、通信データの暗号化機能を備えていないアプリケーションによる通信を暗号化することが可能となる。 なお、SSHのポートフォワーディング機能を用いた場合には、通常のPOP3とは異なり22番ポート(TCP)を使用する。そのため、インターネット側からファイアウォールを介してSSHで社内のPOP3サーバからメールを受信するためにはSSHの設定に加え、22/TCPの通信を許可するようファイアウォールに設定する必要がある。