FreeBSD 9.2-RELEASE において,使用しているパッケージに既知の脆弱性がないかどうか調べるとき,pkg audit -F の出力を確認する。このたびバージョン管理ソフトウェア subversion-1.8.1 にいくつかの脆弱性が報告されたので,1.8.10_3 にバージョンアップすることにした。
# pkg audit -F Fetching vuln.xml.bz2: 100% 456kB 233.6k/s 00:02 ... subversion-1.8.1 is vulnerable: subversion -- mod_dav_svn vulnerability WWW: http://portaudit.FreeBSD.org/1839f78c-9f2b-11e3-980f-20cf30e32f6d.html subversion-1.8.1 is vulnerable: subversion -- several vulnerabilities CVE: CVE-2014-3528 CVE: CVE-2014-3522 WWW: http://portaudit.FreeBSD.org/83a418cc-2182-11e4-802c-20cf30e32f6d.html subversion-1.8.1 is vulnerable: subversion -- multiple vulnerabilities CVE: CVE-2013-4558 CVE: CVE-2013-4505 WWW: http://portaudit.FreeBSD.org/e3244a7b-5603-11e3-878d-20cf30e32f6d.html subversion-1.8.1 is vulnerable: svnserve is vulnerable to a local privilege escalation vulnerability via symlink attack. CVE: CVE-2013-4277 WWW: http://portaudit.FreeBSD.org/f8a913cc-1322-11e3-8ffa-20cf30e32f6d.html ...
ところが,この新しいバージョンの subversion ports は mod_dav_svn(HTTP トランスポート上で — 要するに,Web サーバ経由で — subversion のリポジトリを操作するための apache モジュール)の自動インストールを行わないように変更されていた。このため apache22 Web サーバをリスタートさせると次のようなエラーが出力されてしまう。
# apachectl restart Performing sanity check on apache22 configuration: Syntax error on line 2 of /usr/local/etc/apache22/Includes/svn.conf: Unknown DAV provider: svn
ちなみに svn.conf の内容は以下のようなものである。2行目がエラーとなったわけである。
<Location /svn> Dav svn SVNParentPath /usr/local/var/svn AuthType Digest AuthName "Subversion Repository" AuthDigestProvider file AuthUserFile /usr/local/etc/apache22/.htdigest <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
ports の変更情報である /usr/ports/UPDATING を確認すると,2014.6.16 以降,subversion-1.8.10_3 から mod_dav_svn-1.8.10_3 を別途組み込まなければならなくなったことが判明。では,これをインストール。ところが apache のバージョンの問題で make がうまくいかない。
# cd /usr/ports/www/mod_dav_svn # make install clean ===> mod_dav_svn-1.8.10_3 is marked as broken: : Error from bsd.apache.mk. apache22 is installed (or APACHE_PORT is defined) and port requires apache. *** [all] Error code 1 Stop in /usr/ports/www/mod_dav_svn.
Google で検索してもこれの対処方法は見当たらなかった。んー。でも,/usr/ports/UPDATING をつぶさに読むとちゃんと書いてあった。2014.7.13 以降,ports の apache デフォルト・バージョンが apache24 に変更となり,すなわち,上記のエラーは,mod_dav_svn ports がインストールの前提パッケージとしてデフォルト・バージョン apache24 を要求しているにもかかわらず,すでに apache22 が組み込まれているために apache24 をインストールできず,make 処理を続行できない,ということを示しているのである。ここで apache22 を引き続きデフォルト・バージョンとしたい場合は /etc/make.conf に以下を追加せよとのことだった。
DEFAULT_VERSIONS+=apache=2.2
これで make がうまくいくようになった。mod_dav_svn.so 等の apache モジュールがコンパイルされ,所定の場所にインストールされ,
LoadModule dav_svn_module libexec/apache22/mod_dav_svn.so LoadModule authz_svn_module libexec/apache22/mod_authz_svn.so #LoadModule dontdothat_module libexec/apache22/mod_dontdothat.so
そろそろ apache24 に移行すべきなんだろうか。
オライリージャパン