The Apache Software Foundation Inc.s Apache HTTP Server has earned what many hope for and few achieve: an enviable security reputation. This achievement is especially striking when contrasted with Microsoft Corp.s IIS (Internet Information Services) Web server, which has gained the reputation of having more holes than Swiss cheese.
A study of Apache security advisories dating back to Apache 1.0 shows the servers last serious problem (one where remote attackers could run arbitrary code on the server) was announced in January 1997. This problem was a buffer overflow in Apaches cookie module that was fixed in Apache 1.1.3.
A group of less serious problems (including a buffer overflow in the servers logresolve utility) was announced and fixed in January 1998 with Apache 1.2.5. In the three and a half years since then, Apaches only remote security problems have been a handful of denial-of-service and information leakage problems (where attackers can see files or directory listings they shouldnt).
Why has Apache done so well and IIS fared so poorly?
Having published source code helps but isnt enough on its own—the widely used Berkeley Internet Name Domain Name server from Internet Software Consortium Corp. and Washington Universitys FTP server also have source code available, but both have poor security records.
Going over Apaches security advisories back to the servers Version 1.0 days shows that the secret—in addition to solid coding and scrutiny—lies in a minimalist design, careful attention to detail and a configuration process that makes it easy for administrators to know whats going on.
First, Apache doesnt install a lot of extras (though Linux distribution packagers sometimes do, which has been a source of problems because each add-on can be a potential security issue). A default build of Apache from source code doesnt install any Apache module (extensions) at all. You just get a bare-bones Web server.
By default, IIS is a much bigger product and has many more features. In a default Windows 2000 installation, IIS 5.0 installs with seven externally accessible dynamic link library file extensions accessible through 13 URL mappings, plus FrontPage Server Extensions. Every one of these eight components has had security updates since Windows 2000 was shipped.
Second, all Apache components run as nonprivileged users, so if a buffer overflow occurs, damage is limited. Conversely, IIS makes components with system-level permissions Web-accessible, and two remote root Index Server attacks (MS01-033 and MS01-025) and one remote root Internet Printing Protocol attack (MS01-023) have resulted.
Third, by default, Apache places all configuration settings in one file, httpd.conf, providing a single point of configuration. IIS settings need to be changed in several places.
eWeek Labs also found that when we manually removed all extensions from IIS, three (including the ones allowing the Index Server attacks) were silently restored by the Windows installer when we later removed the FrontPage components. This is documented, although unwelcome, behavior.