概要
攻撃者は常に脆弱性を悪用する方法を探しています。サイバーセキュリティ コミュニティである私たちの目標は、攻撃の効果を最小限に抑え、脆弱性が検知されれば速やかに行動することです。サイバーセキュリティに携わる人は、防護のくぐり抜けを許すような弱点を見つけ次第、これを是正できる人にただちに知らせる義務があります。
協力関係は時として思わぬところから起こるものです。今回のケースはこれがまさしく当てはまります。プルーフポイントのEmail Fraud Defenseコンサルタントは、競合社のソリューション、Valimailにおいて脆弱性を発見しました。そして顧客の保護が第一の信条に基づいて、この脆弱性の詳細と共にValimailに連絡したため、修復することができ、攻撃者による悪用を防ぐことができました。
さて、脆弱性はどのようなものだったのでしょうか?プルーフポイントはどのようにこれを発見し、これに対処するためにValimailは何を行ったのでしょうか?それぞれ掘り下げてみましょう。
脆弱性
問題は、プルーフポイントのSPF (Sender Policy Framework)ホスティング ソリューションと競合するソリューション、ValimailのSPFマクロソリューションでの、一時エラーの処理方法にありました。この脆弱性により、攻撃者は組織のDMARC (Domain-based Message Authentication, Reporting, and Conformance)ポリシーをくぐり抜けることができ、DMARC拒否や隔離が設定されていてもドメインなりすましを成功させることができます。
この問題は、このソリューションのマクロで、SPFマクロのクエリのパラメータとしてHELO/EHLOが使用されるために起こりました。HELO/EHLOは、送信者がメッセージを送信する際に送信者により設定され、送信者によって定義可能です。送信者がHELO/EHLOを、下線を含むワードといった、ValimailのDNS (ドメインネームサービス)がDNSエラーを起こすような値に設定すると、SPF TempErrorとなります。DMARCの仕様により、SPF TempErrorが発生してDKIM (Domain Key Identified Mail)に合格しない場合は、アドバタイズドDMARCポリシーは適用されません。その結果、ドメインなりすましを許してしまうことになります。
脆弱性: 仕組み
脆弱性はValimailのSPFマクロに潜んでいます。このマクロは、顧客がSPFホスティングサービスを選択した場合に顧客のSPFレコードに組み込まれます。SPFマクロは、さまざまなベンダーにより使用されています。このマクロにより、ベンダーによるSPFレコードのホストや管理が可能になります。
Valimailの現在のSPFマクロのincludeは以下のとおりです。
include:%{i}._ip.%{h}._ehlo.%{d}._spf.vali.email
Valimailは、このレコードで3つのパラメータを設定しています。
%{i} – 送信者のIP
%{h} – HELO/EHLOドメイン
%{d} – 送信者のドメイン
送信者のIPアドレスとドメインはメッセージのソースとエンベロープで決まる固定値であるのに対し、HELO/EHLOドメインパラメータは送信者によりカスタマイズ可能です。プルーフポイントの調査によると、HELO/EHLOを下線を含む値に設定すると、ValimailのDNSによりREFUSEDが返されます。
このREFUSED応答は、受信側がSPFレコードをクエリするとSERVFAILとなり、その結果SPFはTempErrorとなります。 DMARCの仕様の第6条第6項第2号 (RFC 7489)では、SPFまたはDKIM内で、DMARCに対しどの方法でも合格しない場合の一時エラーの処理について以下のように規定しています。
「SPFもDKIMも合格せず、いずれかまたは両方が一時エラーにより失敗する場合、拒否または隔離のアドバタイズドDMARCポリシーは適用すべきではありません。」
顧客がValimailのSPFマクロを使ってさえいれば、攻撃者はその顧客へのメールで百発百中で一時エラーを起こさせることができます。受信者がDMARCの仕様に従っていれば、一時エラーのおかげで拒否や隔離のDMARCポリシーも適用されることなく、ドメインなりすましが成功します。
脆弱性: 影響は広範に及ぶ
広範に調査を行った結果、Yahoo、AOL、Verizon、Outlook、Sbcglobal、BTInternet、Orange.frなどの主要メールプロバイダーがDMARCの仕様に準拠し、SPF TempErrorが返されたときにアドバタイズドDMARCポリシーを適用していないことがわかりました。そのため、DMARCの拒否または隔離のポリシーを設定している、ValimailのSPFマクロを使用しているドメインは、この回避攻撃を受けやすくなります。
脆弱性: 例
有効なクエリが行われると、ValimailのSPFマクロは、「v=spf1 ~all」を返します。例えば、ここでのパラメータは以下のように設定されます。
%{i} – 1.1.1.1
%{h} – validhelo
%{d} – valimail.com
図1: ValimailのDNSへのDigクエリへの応答のスクリーンショット(想定される応答)。
しかし、HELO/EHLOのパラメータが「test_helo」といった、下線を含む変更が加えられると、ValimailのDNSは、REFUSEDを返し、結果的にSERVFAILとなります。以下のクエリでパラメータは以下のように設定されました。
%{i} – 1.1.1.1
%{h} – test_helo
%{d} – valimail.com
図2 ValimailのDNSへのDigクエリへの応答のスクリーンショット。RCODEはSERVFAILで、SPF TempErrorの結果に。
以下のヘッダーは、Yahooの例です。SPF TempErrorで、ドメインがp=reject、メッセージがDKIMに合格していませんが、メッセージが配信されました。
Received: from 161.35.127.159 (EHLO test_helo)
by 10.217.151.75 with SMTP; Thu, 22 Oct 2020 00:25:31 +0000
X-Originating-Ip: [161.35.127.159]
Received-SPF: error (macrotest.dmarclab.com処理中にエラー発生)
Authentication-Results: atlas303.free.mail.ne1.yahoo.com;
dkim=unknown;
spf=temperror smtp.mailfrom=macrotest.dmarclab.com;
dmarc=success(p=REJECT) header.from=macrotest.dmarclab.com;
To: macrotesting@yahoo.com
From: test@macrotest.dmarclab.com
Subject: test
脆弱性: 責任ある情報開示と修復
プルーフポイントは調査結果を知らせるためにValimailに連絡しました。Valimailは、SPFマクロソリューションへのアップデートにより脆弱性に対処しました。EHLO/HELOに下線が含まれたクエリにDNSが応答できるようにしました。
まとめ
今回のValimailによるSPFマクロの脆弱性の特定と解決は、特に進化する脅威への対応において、サイバーセキュリティ コミュニティ内での継続的なコラボレーションの重要性を強調するものです。
最新の脅威に対し常に一歩先を行く必要があります。最新の脅威に対し常に一歩先を行く必要があります。つまり、積極的にSPFレコードを監視し、IPがさらされるのを制限する、SPFホスティング ソリューションが必要となります。 DKIMとDMARCもまた、送信者なりすまし攻撃から保護するために重要なメール認証プロトコルです。
SPF、DKIM、DMARCを適切に実装し、維持するためには、その取り組みをガイドしてくれる知識、経験、専門技術をもった企業と提携することが重要です。脆弱性を検知し、より大きな利益のために解決できるスキルを持つ企業です。
業界で最大級の多様なデータセットを抱える、プルーフポイントのEmail Fraud Defenseコンサルタントは、メール認証において比類なき専門知識を提供し、顧客がDMARCの拒否を実装できるようサポートするだけでなく、進行中のリスクを理解して軽減し、最適なメールハイジーンを確保できるようサポートします。
プルーフポイントのEmail Fraud Defenseの詳細は、https://www.proofpoint.com/jp/products/email-protection/email-fraud-defense にアクセスしてください。