/cgi-bin/perl.exe?&my_script.pl
.
Unfortunately this technique allows anyone on the Internet to execute an
arbitrary set of Perl commands on your server by invoking such scripts as
/cgi-bin/perl.exe?&-e+unlink+%3C*%3E
(when run, this URL
removes every file in the server's current directory). This is
not a good idea.
A current Netscape technical note suggests encapsulating your Perl scripts
in a .bat file. However, because of a related problem with batch scripts,
this is no safer.
Because the EMWACS, Purveyor and WebSite NT servers all use the File Manager extension associations, you can execute perl scripts on these servers without placing perl.exe into cgi-bin. They are safe from this bug.
Consider test.bat: @echo off echo Content-type: text/plain echo echo Hello World! If this is called as "/cgi-bin/test.bat?&dir" you get the output of the CGI program, followed by a directory listing. It appears that the server is doing system("test.bat &dir") which the command interpreter is handling (not unreasonably) in the same way /bin/sh would - execute it, and if things go OK, execute the dir command.
.bat
files safely by wrapping them
in a compiled .exe
file. The .exe
file
first checks the command line parameters extremely carefully for
things that might be misinterpreted by DOS, then invokes a
command.com
subshell, and executes the .bat
.
This requires some care, and it might be easier to do everything in compiled code. Brian Kendig [email protected] reports that Netscape is aware of the problem and is working on a wrapper script with the functionality described above.
This hole has been fixed in version 1.1c. You should upgrade to this version with the patch provided at the WebSite home page.
Detailed information on the actions necessary to close the WebSite .bat file security hole can be found at this page provided by WebSite's developer.
The EMWACS NT server, from which Purveyor is derived, also appears to be safe from this problem.
Microsoft has released a patch for this bug, available at http://www.microsoft.com/infoserv. In addition, all copies of the IIS server downloaded after 3/5/96 should be free of this bug. If you use this server, you should check the creation date of your server binary and upgrade it if necessary.
Recently it has come to light that example C code
(cgi_src/util.c
) long distributed with the NCSA httpd as an
example of how to write safe CGI scripts ommitted
the newline character from the list of characters that are shouldn't be
passed to shells. This ommission introduces a serious bug into
any CGI scripts that were built on top of this example code: a remote
user can exploit this bug to force the CGI script to execute any
arbitrary Unix command. This is another example of the
dangers of executing shell commands from CGI
scripts.
In addition, the NCSA server source code trees itself contains the
same bug (versions 1.5a and earlier). The faulty subroutine is
identical, but in this case is found in the file
src/util.c
as opposed to cgi_src/util.c
.
After looking through the server source code, I haven't found a place
where a user-provided string is passed to a shell after being
processed by this subroutine, so I don't think this
represents a actual security hole. However, it's best to apply the
patch shown below to be safe.
The Apache server, versions 1.02 and earlier, also contains this hole
in both its cgi_src
and src/
subdirectories.
It's not unlikely that the same problem is present in other
derivatives of the NCSA source code.
The patch to fix the holes in the two util.c
files is
simple. "phf" and any CGI scripts that use this library should be
recompiled after applying this patch (the GNU patch program can be
found at
ftp://prep.ai.mit.edu/pub/gnu/patch-2.1.tar.gz). You should apply
this patch twice, once while inside the cgi_src/ subdirectory, and
once within the src/ directory itself:
tulip% cd ~www/ncsa/cgi_src tulip% patch -f < ../util.patch tulip% cd ../src tulip% patch -f < ../util.patch ---------------------------------- cut here ---------------------------------- *** ./util.c.old Tue Nov 14 11:38:40 1995 --- ./util.c Thu Feb 22 20:37:07 1996 *************** *** 139,145 **** l=strlen(cmd); for(x=0;cmd[x];x++) { ! if(ind("&;`'\"|*?~<>^()[]{}$\\",cmd[x]) != -1){ for(y=l+1;y>x;y--) cmd[y] = cmd[y-1]; l++; /* length has been increased */ --- 139,145 ---- l=strlen(cmd); for(x=0;cmd[x];x++) { ! if(ind("&;`'\"|*?~<>^()[]{}$\\\n",cmd[x]) != -1){ for(y=l+1;y>x;y--) cmd[y] = cmd[y-1]; l++; /* length has been increased */ ---------------------------------- cut here ----------------------------------
There have, however been two well-publicized recent episodes in which the system used by the Netscape Secure Commerce Server to encrypt sensitive communications was cracked. In the first episode, a single message encrypted with Netscape's less secure 40-bit encryption key was cracked by brute force using a network of workstations. The 128-bit key used for communications within the U.S. and Canada is considered immune from this type of attack.
In the second episode, it was found that the random number generator used within the server to generate encryption keys was relatively predictable, allowing a cracking program to quickly guess at the correct key. This hole has been closed in the recent releases of the software, and you should upgrade to the current version if you rely on encryption for secure communications. Both the server and the browser need to be upgraded in order to completely close this hole. See http://home.netscape.com/newsref/std/random_seed_security.html for details.
As far as the security of the WebSTAR server itself goes, there is reason to think that WebSTAR is more secure than its Unix and Windows counterparts. Because the Macintosh does not have a command shell, and because it does not allow remote logins, it is reasonable to expect that the Mac is inherently more secure than the other platforms. In fact this expectation has been borne out so far: no specific security problems are known in either WebStar or its shareware ancestor MacHTTP.
Recently a consortium of Macintosh Internet software development companies, including StarNine, the developer of WebStar, posted a $10,000 reward to anyone who could read a password-protected Web page on a Macintosh running WebStar software. As described in an article about the challenge in Tidbits#317/04-Mar-96, after 45 days no one had stepped forward to claim the prize.
Although one cannot "break in" to a Macintosh host in the conventional way, potential security holes do exist: