リポジトリブラウザのセキュリティホールについて

影響するバージョン

  • 2.4.2以前のバージョン。このセキュリティホールは2.5.0以降では修正されています。
  • リポジトリのアクセス権限を設定していない場合、もしくは全てのユーザがリードできる環境では影響は受けません。

概要

TracLightningのリポジトリブラウザでは、ユーザ/グループ毎にリポジトリの各ディレクトリへのアクセス制御ができるようになっています。しかしながら、TracLightning2.4.2以前のバージョンでは、複数のユーザでリポジトリへのアクセスを繰り返していると、下記のような問題が生じます。

  • アクセス権を許していないユーザでもディレクトリを閲覧できてしまうことがある
  • アクセス権を持つユーザがディレクトリを閲覧できないことがある

上記の影響はTracのリポジトリブラウザ上での問題のため、Subversionのリポジトリ自身への影響はありません。

原因

Trac内部でリポジトリを保持するオブジェクトをキャッシュしていますが、認証ユーザの情報の引き継ぎが正しく行われておらず、以前の認証ユーザ情報を保持したまま、他のユーザへのリポジトリ表示処理にリポジトリオブジェクトを利用してしまうためです。

解決方法

TracLightningのインストールディレクトリの下のpython\share\trac\conf\trac.iniの下記の行を

repository_type = svn
次のように変更することにより解決することができます。
repository_type = direct-svnfs