見出し画像

No298 詐欺メールを防ぐSPFという技

今回もメールに関するお話です。

数回前の記事で「SMTPは基本的に性善説でメールを悪用されるケースへの対策は皆無」と書きました。

では、詐欺メールを防ぐことはできないのでしょうか?

今回は詐欺メールを防御するためのSPFという技術について解説をします。

なお、今回は利用者側でのマルウェア対策ソフトなどによる防禦の話ではありません。
サーバ間での送信元を保障する仕組みについてのお話となります。

メールの送受信手順は1981年製

サーバ間でメール送受信に使うのは、SMTP(Simple Mail Transfer Protocol:単純なメール転送手順)という通信手順で、1981年にできた規格です。

この時代では、送信側がウソをついたり受信者を騙すといったケースを考える必要がなかったため、全く考慮がなされていません。

これが現在の詐欺メールやフィッシングメールが流行する遠因と言えます。

そんな不便な仕組みであれば、新バージョンのNew-SMTPに切り変えれば良さそうなものですが、それでは既存のメールサーバ全てに影響があります。

さすがに世界中に広がったメールサーバを「せーのっ」と一気に新しい仕組みに切り換えることは不可能です。

そのため、現在のSMTPの仕組みはそのままにしておき、そこにチェック機構を追加する「改善型」の仕組みが導入されることになりました。
この場合、チェック機構が追加されていなければ、今まで通りの動きになることにしておけば、未導入のメールサーバも問題なく使えるからです。

以下では、そんな仕組みの代表的なものとして、SPF(Sender Policy Framework)についてお話をします。

どうしてSMTPでは送信元の詐称ができるのか?

そもそもの話ですが、なんでSMTPだと送信元が詐称できるのか?をお話しておきます。
この前提がないと、SPFが何の役に立つのかわからないためです。

まず、SMTPでは、以下のような情報を送信元サーバから受信先に送るルールになっています。
 ・送信元サーバの情報
 ・メール送信元のメールアドレス
 ・メール受信先のメールアドレス
 ・メール本文(ヘッダ部+ボディ部)

基本的にこの4つの情報のうち、最初の「送信元サーバの情報」にウソは書けません。

インターネット上では、通信には相手のIPアドレスが必ず要ります。
IPアドレスがウソだと単純に通信が成立しません。(相手からの返信を受け取れない)

詐欺メールであり、他の全てがウソであったとしても、送信元サーバの情報だけはウソをつけません。

後述しますが、SPFではこの情報を利用して相手が信じられるかどうかをチェックします。

次に、送信元メールアドレスと受信先メールアドレスについてです。
意外なことにこの2つの情報は利用者(メール受信した人)には通知されません。
それどころか、メールを受信して受信先サーバ内に保管する時にこの情報は不要なものとして捨てられます。(厳密には受信先サーバで動作しているソフトによって異なります)

それではどうやって利用者はメールの送信元を知るのでしょうか?

それはメール本文の「ヘッダ部」に書かれています。

「あれ?」と思った方、鋭いです。

SMTPにとってはヘッダ部はメール本文の一部であり、加工せずに受信先に送ります。内容のチェックは一切行われません。(厳密にはいろいろありますが、本質的にはチェックしません)

ヘッダ部のウソも含めてそのまま受信先に送られます。つまり、ヘッダ部はウソ書き放題なのです。

以上がSMTPで送信元を詐称できる理由です。

結局、悪意のあるサーバからの接続を拒否できない限り、詐欺メールを減らすことは困難だということになります。

SPFは何をチェックするのか?

そこでSPF(Sender Policy Framework)の登場です。

これが規格として成立したのは2006年ですから、現時点(2023年)から見ると15年以上前の話です。

当初はサーバに負荷がかかることもあり、利用率は低かったようですが昨今の詐欺メールの増加を踏まえて、採用率はかなりあがっています(調査によりますが80~90%程度)

SPFでは、ウソの書けない「送信元サーバの情報」を利用します。

まず、送信元サーバのIPアドレスはそのサーバからの通信があった時点でわかります。
(これが違っていると返信ができない)

次に「メール送信元のメールアドレス」に書かれたドメイン部(メールアドレスの@より右側のこと)を調べます。

さて、このドメイン部(ドメイン名)を与えて、そのドメインについての情報を得られるサービスがあります。
DNS(Domain Name Service)という仕組みです。

余談
 DNSは知らないかもですが、皆さんも日常的にその恩恵を受けています。
 ChromeやEdgeといったインターネットブラウザでアクセスする時、URLを使いますよね。
 あのURLのドメイン名からIPアドレスを得ているのです。
 その処理にDNSサーバが活躍しています。

DNSではドメイン名から情報を得ることができるのですが、その一つがSPFです。
SPFには、そのドメインからメールを送る可能性のあるIPアドレス一覧が得られます。

SPFを使うと、どのように詐欺メールをガードできるのでしょうか?

ケーススタディとして、悪意のあるサーバが著名なサイト(ここではamazon.co.jp)をかたり、えがおIT研究所のしみず宛に詐欺メールをそ送信しようとしたとします。

 ・送信元サーバの情報= 10.1.1.1(架空のIPアドレス)
 ・メール送信元のメールアドレス= support@amazon.co.jp
 ・メール受信先のメールアドレス= t.shimizu@egao-it.com
 ・メール本文= (省略)

受信先メールサーバがSPFに対応していない場合は次のようにメールを受け付けます。

 1) egao-it.comの受信先サーバに10.1.1.1からの接続があります。
   →接続は常にOKとなります。
 2) 送信元メールアドレスは、support@amazon.co.jp です。
   →メールアドレスに問題はないと判断しOKとします。
 3) 宛先メールアドレスは、t.shimizu@egao-it.com です。
   →実在のメールアドレスなので、OKとします。
 4) メール本文を受信します。
   →これも問題ないのでOKとします。
 5) メール受信完了

では、SPFに対応しているとどうなるでしょうか?

 1) egao-it.comの受信先サーバに10.1.1.1からの接続があります。
   →接続は常にOKとなります。
 2) 送信元メールアドレスは、support@amazon.co.jp です。
   →ここでDNSサービスで amazon.co.jp の情報を取得します。
   →すると、amazon.co.jp のSPF情報には 20.1.1.1 と書かれていました。
   →これは、送信元の10.1.1.1 とは不一致ですからNGと返信をします。
 3) メールを受け取ることなく接続を終了します。

このように、メールの受信そのものを拒否することができました。
メール受信時点での拒否ですから、利用者がそのメールを見ることはなく、騙される心配もありません。

これがSPFによるメール受信拒否です。

SPFの限界

以上の通り、SPFが利用できると、詐欺メールは拒否できるはずです。

ですが、今も大量の詐欺メールが来ていることを考えるとSPFに限界があることがわかります。

というのは、SPFをすり抜けるためのDNS情報を作ることができるからです。

例えば、悪意のある人物が nisemono.co.jp というドメインを持っているとします。
その人物は nisemono.co.jp の正規の利用者ですから、DNS情報も堂々と自分で登録できます。
それを送信元サーバに合わせて登録しておくと、受信先のメールサーバから見ると正当なメールですから、詐欺メールと言えなくなります。

 1) egao-it.comのメールサーバに10.1.1.1からの接続があります。
   →接続は常にOKとなります。
 2) 送信元メールアドレスは、support@nisemono.co.jp です。
   →ここでDNSサービスで nisemono.co.jp の情報を取得します。
   →すると、nisemono.co.jp のSPF情報には 10.1.1.1 と書かれていました。
   →これは、送信元の10.1.1.1 とは一致していますからOKです。
 3) 宛先メールアドレスは、t.shimizu@egao-it.com です。
   →実在のメールアドレスなので、OKとします。
 4) メール本文を受信します。
   →これも問題ないのでOKとします。
 5) メール受信完了

この通り、SPFをすり抜けてメールが配信できてしまいます。

仮にメール本文のヘッダ部に"From: support@amazon.co.jp" と書いてあっても、SPFでは(メール本文は対象外であるため)チェックができません。

結局、SPFで防げる詐欺メールは限定的で、全てを防げるわけではないのです。

まとめ

詐欺メールを防ぐための仕組みとして、SPFというものがあります。

これはメールを受信する時のメールアドレスに着目し、そのドメインが認めているメールサーバと実際のサーバが一致していることで、正しいメールであることをチェックできる技術です。

詐欺メールについては、人によるチェックだけでは限度があります。

そのため、SPFの他にもいくつかの方式が使われています。

ですが、現状ではどの方法も「帯に短かし、たすきに長し」の状況が続いており決め手に欠けているのも事実です。

これはSMTPという古い通信手順をずっと使い続けている弊害にも見えます。
ですが、これはSMTPがシンプルで利用しやすいことの証左でもあり、それ故に普及したとも言えますので、功罪半ばというのが筆者の印象です。

今回は、詐欺メールの防禦手法の一つであるSPFについて解説しました。

次回もお楽しみに。

(本稿は 2023年3月に作成しました)

本Noteはメルマガ「がんばりすぎないセキュリティ」からの転載です。
当所はセミナーなどを通して皆さんが楽しく笑顔でITを利用いただくために、 難しいセキュリティ技術をやさしく語ります。
公式サイトは https://www.egao-it.com/ です。

この記事が気に入ったらサポートをしてみませんか?