技術解説 · 出典付きの回答
メールのなりすまし(スプーフィング)とは?定義と技術的な仕組み
メールのなりすましとは、メッセージが正当な送信元や既知の送信元から送られたように見せるためにメールヘッダーを偽造する行為です。SMTP(Simple Mail Transfer Protocol)自体はFromアドレスを検証しないため、どの送信者でもメッセージのエンベロープやヘッダーに任意のIDを指定できます。
処理の流れ
なりすましはSMTPトランザクションの中で行われます。プロトコルでは、エンベロープの送信者(MAIL FROM)とヘッダーの送信者(From:)が分かれています。悪意のある攻撃者はオープンリレーに接続したり独自のスクリプトを使ったりして、Fromヘッダーには信頼されたドメインを指定しつつ、別のReturn-Pathを使うことができます。受信側メールサーバーは、デフォルトでは送信元IPがそのドメインを使う権限を持っているかどうかを確認せず、指定された文字列に基づいてメッセージを処理します。
正当な送信者への影響
攻撃者があるドメインになりすますと、正当な所有者のレピュテーションが損なわれます。なりすましたフィッシングメールが大量に送られると、そのドメインが世界中のフィルターでブラックリストに登録されることがあります。その結果、正当なトランザクションメールやマーケティングメールまで迷惑メールと判定されたり、完全に拒否されたりします。承認されていないメールを破棄すべきだと受信側に伝えるには、厳格な認証体制を維持するしかありません。
送信ドメイン認証による防止
防止策はSPF、DKIM、DMARCの3本柱に支えられています。SPFは承認されたIPアドレスを列挙します。DKIMはヘッダーに暗号署名を追加します。DMARCはこれらを結び付け、チェックに失敗したメールを拒否または隔離するよう受信側に指示します。SendHQの無料ツール(https://sendhq.cc/tools)を使えば、現在のDNSレコードがなりすましを防げるよう正しく設定されているかを確認できます。
運用上のよくある失敗
よくある誤りは、DMARCポリシーがないままSPFレコードをFail(-all)ではなくSoftFail(~all)に設定することです。これは、そのメールはおそらく承認されていないが受け入れるべきだ、と受信側サーバーに伝えることになります。また、新しいESPへ移行した後にSPFレコードを更新していないと、正当なメールが受信側サーバーからはなりすましのトラフィックのように見えてしまいます。
具体例
攻撃者が、SMTPエンベロープを attacker@malicious.com に、ヘッダーを From: billing@yourcompany.com に設定したメールを送ったとします。yourcompany.com にDMARCポリシーがなければ、受信者のメールクライアントには請求担当のアドレスが表示され、実際の配送経路は承認されていないにもかかわらず、ユーザーは正式な依頼だと信じ込んでしまいます。
よく寄せられる質問
なりすましとフィッシングは同じものですか?
いいえ。なりすましは送信者のIDを偽造する技術的な手法です。フィッシングはソーシャルエンジニアリングを目的とした攻撃で、信頼を得るための手段としてなりすましがよく使われます。
SPFだけでなりすましを防げますか?
いいえ。SPFが検証するのはエンベロープの送信者だけです。攻撃者は自分のドメインの有効なエンベロープを使いながら、表示上のFromヘッダーを偽ることができます。ヘッダーのアライメントを確保するにはDMARCが必要です。
DKIMはなりすましを防げますか?
DKIMは内容が改ざんされておらず、鍵を所有するドメインから送られたことを証明しますが、DMARCポリシーで署名が必須とされていない限り、送信者が署名自体を省略することは防げません。
一次情報源
- RFC 5321:簡易メール転送プロトコル(SMTP) — RFC Editor
- RFC 7489:ドメインベースのメッセージ認証・レポート・適合(DMARC) — RFC Editor
- RFC 7208:送信者ポリシーフレームワーク(SPF) — RFC Editor