Last modified : 2001.07.13

追記 2001.07.13 15:00:7/12に追記していた内容は全て一旦削除しました。きちんと自分で検証もせずに情報を上げてしまって申し訳ありません。篠田さんにもご迷惑をお掛けしてしまい、申し訳ございませんでした。
倉庫一覧へ
トップページに戻る

Mac OS XのApacheをHFS+上で使う際の問題について

Feel Like Macさんの2001-06-13のRecent Changesで、「 BUGTRAQ“Mac OS X - Apache & Case Insensitive Filesystems” の一連のスレッドで、Mac OS X におけるApache と HFS+ の問題が議論されています。」との記述を見つけた。Feel Like Macさんによれば、これはMac OS X (Serverではない) において再現性のある問題のようです。この一連のスレッド、およびmod_hfs_apple (を含むApache Modulesのtar.gz) のソースの解説を読んでみた。以下に、自分なりに全てをまとめてみる事にした。
※以下の文章は、英語力の弱い私が訳したものであり、その内容を鵜呑みにしないで下さい。また私は、以下の文章に一切の責任を持ちません。この問題に興味のある方は、必ず上記BUGTRAQのスレッドをご一読の上、ご自分で判断して下さい。

HFS+はファイル名の大文字と小文字を区別しない (=Case Insensitive) ファイルシステムであるため、Apacheのdirectory protectionを使って特定ディレクトリ以下のファイルを隠したとしても、URLの大文字・小文字を意図的に変えることで隠したファイルの閲覧が可能になってしまう。例えば、

原文の抜粋訳文
Consider the following file:

/Library/WebServer/Documents/test/index.html

And the following configuration:

<Location /test>
Order deny,allow
Deny from all
</Location>

Or, using a Directory option:

<Directory /Library/WebServer/Documents/test>
Order deny,allow
Deny from all
</Directory>

The following request will result in a 403 Forbidden as excpected:

GET /test/index.html

But the following request will happily serve the file:

GET /TeSt/index.html
以下の様なファイルがあるとする。

/Library/WebServer/Documents/test/index.html

で、以下の様に設定する。

<Location /test>
Order deny,allow
Deny from all
</Location>

もしくはDirectory optionを使って、以下の様に設定したとする

<Directory /Library/WebServer/Documents/test>
Order deny,allow
Deny from all
</Directory>

この状態で、

GET /test/index.html

としても当然のように、403 Forbiddenのエラーが返されるわけだが、

GET /TeSt/index.html

の様に (一部大文字に入れ替え) すると、index.htmlは見事に表示されてしまう。

上記の問題は、.htaccessファイルを/testにおいてアクセス制限をかければ、index.htmlが取得されることはないのだが、

<Files ~ "^\.(ht|HT|Ht|hT)">
Order allow,deny
Deny from all
</Files>

としておかないと、http://somesever/somedir/.HtaccessなどとURLを指定された場合、.htaccess自身 (及びそこに書かれているpassword) を露呈してしまう。
さらに怖いのは、PerlのCGIの拡張子を「.epl」とした場合、URLで、/somedir/hoge.ePlなどと指定されると、そのCGI自体のソースコードを露呈してしまう事である。

この問題を改善するには、文字の大小を区別しないHFS+上でなく、区別するUFS上でApacheを使うことである。
もしくは、HFS+上でも文字の大小を区別するためのModuleである、mod_hfs_appleをApacheに組み込むことである。

(Mac OS X ServerのApacheには、既にmod_hfs_appleが組み込まれており、この問題は発生しない)

なお、mod_hfs_appleのDarwin向けソースコードが有るので、それをmakeして組み込めば、この問題は解決するかも知れない。
このソースコードは、http://www.opensource.apple.com/projects/darwin/darwinserver/ApacheModulesに含まれている。
(訳注:この意見の投稿者は、mod_hfs_appleのDL先を提示しただけで、これで直るかどうかは判らないと述べている。)

以下に、上記ソースコード中の解説文から一文を引用し、訳してみる。
That is what this modules does. Consequently, when this module is installed, some "pseudo-case-sensitivity" is enforced when Apache deals with HFS volumes.
これを解決するのが、このモジュールである。従って、このモジュールを組み込むことで、HFSボリューム上にあるApacheでも大文字・小文字を区別するようになる。

追記 2001.06.22 18:45:MacSecurity.orgのJun12,2001のNewsでも、この問題が載っているのを見つけた。ただ、
We suggest you read up, and determine whether this problem effects you.
って最後の一文は、mod_hfs_appleで直るとは明言してないと思うのだが。


追記 2001.07.13 15:00:7/12に追記していた内容は全て一旦削除しました。きちんと自分で検証もせずに情報を上げてしまって申し訳ありません。篠田さんにもご迷惑をお掛けしてしまい、申し訳ございませんでした。


倉庫一覧へ
トップページに戻る
サイト内のコンテンツは全てリンクフリーです
vm_converter@mac.com