MacOS X Circumvents Apache Security
cloudscout writes: "This Report at SecurityFocus.com warns of a problem with the Apache webserver running under Apple's new MacOS X operating system with the case-insensitive HFS+ filesystem. HFS+ is the default (and recommended) filesystem for MacOS X, yet its case-insensitive nature circumvents directory-based security in the Apache webserver that comes with the operating system. The Server version of MacOS X ships with a module that fixes this problem, but this module isn't available unless you purchase MacOS X Server. So much for Apple's boast about 'giving back to the open-source community.'"
From looking through SecurityFocus, this doesn't appear to be the only problem.
From looking through SecurityFocus, this doesn't appear to be the only problem.
download the patch, it's been there since last Tuesday... http://www.opensource.apple.com/projects/darwin/da rwinserver
Looks like the Server components just weren't posted yet, but they are now: http://www.opensource.apple.com/projects/darwin/da rwinserver/. This should fix the problem.
Macintouch reported today (2001-06-15) that Apple's mod_hfs_apple.c which fixes the problem is available as part of the Darwin Server source code, but also notes that it has not been tested on any 'client' version of Mac OS X.
DO NOT LEAVE IT IS NOT REAL
Some strategically placed tolower() calls in the source would fix this I think. My guess is that the module from apple basically does this too. I got a Darwin/OSX box at home. I will take a gander amd make a patch if I have the time. Shouldn't be a biggie
Hey, you got the source, fix it. You don't even need apple's module. Maybe a #ifdef DARWIN macro for this would be an idea.
--
Slashdot didn't accept your submission? hackerheaven.org will!
So how does Apache handle the Windows (NT or whatever) filesystem. Last time I looked that was case-insensitive too
Apache uses ap_os_canonical_filename() which on case sensitive unices is a macro to replace it with the filename, but the util_win32.c provides an ap_os_canonical_filename function which converts the name to lowercase thus allowing "This" and "ThiS" to match (both being returned as "this"), so something similar is needed on case-insensitive MacOS machines.
Did you honestly think Apple is going to release portions of their code, that they paid good money to programmers to write, that isn't GPLed?
I was thinking mod_speling might be a ready solution to this issue, but it might not work in the way I was hoping. This bug seems to come up during the parsing of access control settings (early in the request phase), whereas I think mod_speling comes in later, during the mapping of URLs to permitted filesystem points. I think. Nonetheless, even if it can't fix the problem out of the box, I think mod_speling could perhaps be adapted to this purpose if someone knew what they were doing. I'd take a shot myself, but my understanding of Apache's architecture is too weak to be of much value here, I think. Oh well.
DO NOT LEAVE IT IS NOT REAL
(Do not leave there is no (oidvay) cabal.)
DO NOT LEAVE IT IS NOT REAL
The posts on SecurityFocus don't illuminate how the Win32 version of Apache gets around the problem, but I'm sure some enterprising soul could find the saving code in the source somewhere...
DO NOT LEAVE IT IS NOT REAL
This is a problem that Apple saw coming, and handled, sorta, with a custom mod_whatever that tried to address the problem. Why they didn't release it (either as source or, if necessary, as a binary) with OSX client is a big question, and an unfortunate decision on their part, but at least it already exists. Maybe this negative publicity will get them to release it &/or fold it into the next update to the operating system.
Really though, if you're using OSX for the new &/or Unixy stuff, then you need to run it on a UFS partition so that things like this won't bite you in the ass. If you need support for OS9/Classic, then either it or the Unix stuff needs to go onto a different partition. If not, you'll constantly be hitting these sorts of problems...
DO NOT LEAVE IT IS NOT REAL
The headline makes it sound like the error was intentional, this is clearly in the wrong topic as well, should have been bug!
My other sig is extremely clever...
So how does Apache handle the Windows (NT or whatever) filesystem. Last time I looked that was case-insensitive too. The code must be there already - just a compile time option perhaps? Or is this also a security hole waiting to be exploited?
--
Every bloody emperor has his hand up history's skirt [Peter Hammill/VdGG]