藤原です。
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 設定を確認してください)
といった表示を目にしたことがある筈。