【緊急セキュリティ対処】 Mercurial 3.2.3 is released !

244 views
Skip to first unread message

FUJIWARA Katsunori

unread,
Dec 19, 2014, 1:30:55 AM12/19/14
to mercur...@googlegroups.com
藤原です。

セキュリティ対策の緊急リリース版として、Mercurial 3.2.3 がリリース
されました。


今回のリリースの主眼は、CVE-2014-9390 と呼ばれるセキュリティ障害へ
の対応です。この障害は:

  - Windows の NTFS や、Mac OS X の HFS+ のような、文字大小を無視
    するファイルシステムを使用している環境で、

  - ".hg" 配下のファイルを書き換えるような、悪意を持って作成された
    リビジョンを含むリポジトリから、履歴の取り込みを行い、

  - 当該リビジョンを作業領域に取り出した場合
    (update 以外にも、merge や graft、rebase 等でも発生)

上記のすべてが成立するケースにおいて、.hg/hgrc 等の書き換えなどを
経由して、任意の処理が実行される危険性があります。

公開されている野良リポジトリにアクセスする機会のある方や、意図せず
に破壊的な変更をコミットしてしまううっかり屋さん(笑)とリポジトリを
共用しているような方は、Windows/Mac を利用しているなら、早々に更新
しておいた方が良いでしょう。

なお、単純な文字大小を利用した .hg ディレクトリ配下への攻撃自体は、
前から対処されていたのですが、CVE-2014-9390 は、以下のような特殊文
字による偽装を使って、文字列チェックをすり抜ける手口のようです。

  - Windows NTFS では ~
  - Mac OS X HFS+ では特殊な Unicode 文字

このメールの投函時点で、CVE-2014-9390 の詳細に触れているのは、この
障害に対処する版の Git のリリースノートぐらいですね。


Redhat にはエントリポイント的なページはあるものの、詳細情報は記載
されておらず、"MITRE CVE dictionary" で検索しても、該当なし扱いで
した。


詳細情報の公開は、関連ツール類の対処完了を待ってからなのかな?

参考までに、以下が CVE-2014-9390 向けと目される修正です。各変更の
コミットログや、追加されたコメント等を参照すれば、詳細も把握できる
かと。

  encoding: add hfsignoreclean to clean out HFS-ignored characters
  darwin: omit ignorable codepoints when normcase()ing a file path
  pathauditor: check for codepoints ignored on OS X
  pathauditor: check for Windows shortname aliases

Toshi MARUYAMA

unread,
Dec 19, 2014, 1:50:36 AM12/19/14
to mercur...@googlegroups.com
まるやまです。
このツイートによると、
https://twitter.com/indygreg/status/545701974671233024
hg-gitのMLへのこの投稿がきっかけのようです。
https://groups.google.com/forum/#!msg/hg-git/v14TKMk5RVc/y4u_5NQ0wrwJ

以上です。

Katsunori Fujiwara

unread,
Dec 19, 2014, 1:59:06 AM12/19/14
to mercurial-ja
藤原です。

2014年12月19日 15:30 FUJIWARA Katsunori <flying...@gmail.com>:

> 公開されている野良リポジトリにアクセスする機会のある方や、意図せず
> に破壊的な変更をコミットしてしまううっかり屋さん(笑)とリポジトリを
> 共用しているような方は、Windows/Mac を利用しているなら、早々に更新
> しておいた方が良いでしょう。

「更新しておいた方が良いでしょう」と言ったものの、Windows 版に関し
ては、まだインストーラが公開されていないみたいですから、暫くは「怪
しい野良リポジトリにはアクセスしない」方針で行くしかないですねぇ……

Mac OS 版に関しても、各位の使用しているパッケージ管理ツールの対応
次第な面がありますが、PyPi 経由であれば最新版が入手可能になってい
るみたいなので、これを機会に pip の使用に移行する、という手も。

https://pypi.python.org/pypi/Mercurial

Windows 版でも、pip 経由でインストールという手が使えなくもないです
が、お手軽さではやはりバイナリインストールから一段劣りますよねぇ……

--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

Yuya Nishihara

unread,
Dec 20, 2014, 12:51:38 AM12/20/14
to mercur...@googlegroups.com
On Fri, 19 Dec 2014 15:59:04 +0900, Katsunori Fujiwara wrote:
> 2014年12月19日 15:30 FUJIWARA Katsunori <flying...@gmail.com>:
> > 公開されている野良リポジトリにアクセスする機会のある方や、意図せず
> > に破壊的な変更をコミットしてしまううっかり屋さん(笑)とリポジトリを
> > 共用しているような方は、Windows/Mac を利用しているなら、早々に更新
> > しておいた方が良いでしょう。
>
> 「更新しておいた方が良いでしょう」と言ったものの、Windows 版に関し
> ては、まだインストーラが公開されていないみたいですから、暫くは「怪
> しい野良リポジトリにはアクセスしない」方針で行くしかないですねぇ……

CVE-2014-9390 に対処したインストーラーがリリースされました。

http://tortoisehg.bitbucket.org/
https://bitbucket.org/tortoisehg/thg/wiki/ReleaseNotes#!tortoisehg-323
https://bitbucket.org/tortoisehg/files/downloads

TortoiseHg GUI の修正点については、 3.2.2 のリリースノートを参照してください。

FUJIWARA Katsunori

unread,
Jan 1, 2015, 11:59:29 PM1/1/15
to mercur...@googlegroups.com
藤原です。

年末でバタバタしていて、セキュリティ問題以外の 3.2.3 での修正点の
説明が出来ず仕舞いでしたので、追記しておきます。

========================
コアコマンドに関する修正:
========================

- update: add tests for untracked local file
- update: don't overwrite untracked ignored files on update

  作業領域中の無視対象ファイルと、マージ対象リビジョン中のファイル
  の衝突の際に、無視対象ファイルを上書きしてしまう問題の修正です。

- log: fix log -f slow path to actually follow history

  --follow 付きの "hg log" の revsets が、複製・改名元の履歴を遡ら
  ない問題の修正です。が、性能劣化を防ぐために、完全な修正には至っ
  ていない模様です。

  複製・改名元の履歴を確実に遡りたい場合は、follow(filename) を明
  確に指定した方が良い模様です。

- log: fix log revset instability

  hg log が出力する履歴の順序が、実行時に不安定になる問題の修正です。

========================
コマンド横断で影響する修正:
========================

- context: stop setting None for modified or added nodes
- manifest: disallow setting the node id of an entry to None

  マニフェスト(= 各リビジョンでの管理対象ファイル一覧)の比較を厳
  密にするための、特殊な情報の追加です (高速化にも寄与している筈)

========================
同梱エクステンションに関する修正:
========================

- largefiles: don't actually remove largefiles in an addremove dry run

  addremove での --dry-run 指定が機能しない問題の修正です。

- rebase: ignore negative state when updating back to original wc parent

  rebase 終了時の「元親リビジョンでの作業領域更新」の際に、不正な
  リビジョンで更新されてしまう問題の修正です。


2014年12月19日金曜日 15時30分55秒 UTC+9 FUJIWARA Katsunori:
Reply all
Reply to author
Forward
0 new messages