Mercurial から直接メールを送信する場合のセキュリティ問題

86 views
Skip to first unread message

FUJIWARA Katsunori

unread,
Mar 20, 2013, 11:57:00 PM3/20/13
to mercur...@googlegroups.com
藤原です。

Mercurial の履歴を受け渡しするケースでは、リポジトリ経由での連携の
方が多いでしょうから、影響を受ける方もそれほど多くは無いと思います
が、セキュリティに関することなので、念のためアナウンスしておきます。


現状、bugzilla, hgcia, notify, patchbomb 等のエクステンションを使っ
て、電子メールによる情報伝播を行う場合:

  - "[email] method" に smtp(デフォルト値) が設定
  - "[smtp] tls" 設定に "smtps" や "starttls" が設定

上記の条件を満たすことで、SMTP サーバへの接続に SSL を使用すること
ができます。

この場合の SSL 接続は、通信経路の暗号化は行われるのですが、接続先
サーバの身元検証(= 証明書の検証)が実施されないため、信頼できない
経路を経由してメールサーバに接続した場に、中間者攻撃 
(man-in-the-middle attack) を受ける可能性があります。

例えば:

  - 自宅ネットワークから、プロバイダのSMTPサーバ
  - 社内ネットワークから、社内の SMTP サーバ

上記のようなケースであれば、ネットワーク自体の問題(無線LANの暗号強
度が弱い等)さえ無ければ、危険性は無いと考えて良いのですが:

  - 公衆無線 LAN から、Google の SMTP サーバ

上記のようなケースでは、中間者攻撃により、認証情報が漏洩する危険性
があります。

# 素の smtp で送信する場合の危険性に関しては言うまでもありません


clone や push/pull 等での接続プロトコルが HTTPS の場合、"[web]
cacerts" や "[hostfingerprints]" 設定を行う事で、接続先の身元検証
は実施されるのですが、これらの設定は、現状ではメール送信における
SSL 接続の検証には使用されません。


現在、SMTPS/STARTTLS を使用する際に、接続先の証明書を検証できるよ
うにする修正パッチを作成しています。『障害修正』扱いになれば、今月
末の 2.5.3 のリリースには間に合うと思います。

# 『機能拡張』扱いの場合は、4月末リリースの 2.6

修正版がリリースされるまでは、SMTPS/STARTTLS 使用には十分注意して
ください。


暫定的な対処法としては、stunnel 等の SSL プロキシを使って:

  "hg email" <==SMTP==> stunnel <==SMTPS or STARTTLS==> メールサーバ

上記のような連携を行い、stunnel 側でメールサーバの身元を検証する、
といったころでしょうか?

この場合も、メールサーバの身元検証には、認証局の証明書なり、メール
サーバの正規の証明書等が必要になります。


ちなみに、Windows 版の Mercurial や TortoiseHg では:

  - 認証局(CA)の証明書がインストーラに同梱されていて、且つ
  - "[web] cacerts" が設定済みの状態でインストールされる

という状況のため、clone や push/pull における『HTTPS 接続での接続
先証明書検証』などは、あまり意識したことが無いかもしれませんね。

Unix 系環境で使用されている方で、"[web] cacerts" を設定していない
人は 、HTTPS で接続する際に:

  警告: xxxx の証明書 (fingerprint は xxxx) 検証を省略
  (設定ファイルの hostfingerprints ないし web.cacerts 設定を確認してください)

といった表示を目にしたことがある筈。

Reply all
Reply to author
Forward
0 new messages