23th Jul 2002 [SBWID-5548]
COMMAND
Pyramid BenHur Firewall active FTP portfilter ruleset results in a
firewall leak
SYSTEMS AFFECTED
BenHur Firewall release 3 with update 066 fix 2, and earlier release
PROBLEM
In Dr. Peter Bieringer of AERAsec Network Services and Security GmbH,
advisory [ae-200207-028] :
http://www.aerasec.de/security/advisories/txt/ae-200207-028-BenHur-activeFTPruleset.txt
In short, Source port 20 on a client can be used to connect to services
on ports between 1024 and 65096 (release "Update 066 fix 2") or 1024
and 65535 (initial installed release)
One can connect to the ports using e.g. netcat: "nc -p 20 $benhur
$remoteport"
This makes it possible to connect to several active TCP ports on
BenHur:
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN
-> Squid
protected by Squid-ACL against misuse from outside
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN
-> BenHur Webadministration
not protected by IPv4-ACL, see below
tcp 0 0 0.0.0.0:4557 0.0.0.0:* LISTEN
-> HylaFAX client server
(possible access not tested)
tcp 0 0 0.0.0.0:4559 0.0.0.0:* LISTEN
-> HylaFAX client server
(possible access not tested)
tcp 0 0 0.0.0.0:6105 0.0.0.0:* LISTEN
-> ISDN client server monitor and connection trigger program
(possible access not tested)
Especially the BenHur Web administration port is interesting:
# nc -p 20 ***.***.***.*** 8888
GET / HTTP/1.0
HTTP/1.1 401 Authorization Required
Date: Tue, 09 Jul 2002 09:53:51 GMT
Server: Apache/1.3.0 (Unix) Debian/GNU
WWW-Authenticate: Basic realm="Ben-Hur Administration"
Connection: close
Content-Type: text/html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>401 Authorization Required</TITLE>
</HEAD><BODY>
<H1>Authorization Required</H1>
This server could not verify that you
are authorized to access the document you
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.<P>
</BODY></HTML>
Two issues:
a) Information disclosure about Apache Version, OS and Firewall software.
b) Dictionary or brute-force attack on password is possible.
SOLUTION
At the moment only experimental update 067 (19 Jul 2002)
Patch
=====
Update hints, select experimental updates by change of setting:
"configuration->admin->update-host-einstellungen->url-pfad"
to "updates_experimental"
Or dedicated download for customers at
https://www.ben-hur.de/updates_experimental
Workaround
==========
There are several solutions to close such holes in general:
1) For masqueraded active FTP connection, the destination port on the
firewall is always mapped to a port in the range 61000-65095 by the
module "ip_masq_ftp". Therefore a rule like chain:
input ACCEPT tcp ------ 0xFF 0x00ppp0 0.0.0.0/00.0.0.0/0 20 -> 61000:65095
would be more appropriate. The above translates to the following lines
replacing the corresponding lines in the /etc/init.d/ben-hur.ipchains
in script quoted above:
$IPCHAINS -A input --source-port 20 -d $WORLD 61000:65095 -p tcp \
-i $IFACE_WWW -j ACCEPT
$IPCHAINS -A output --source-port 20 -d $HOME 1024:65535 -p tcp \
-i $IFACE_LAN -j ACCEPT
Note1: in the original setup, the script contains a (not security
related) bug in the port range for the output chain on the internal
interface.
Note2: this improvement is also done in BenHur software update 067.
2) If the firewall itself uses active FTP, then the local portrange
should be generally moved to a less dangerous region, e.g. 32768-60999
by using:
sysctl -w net.ipv4.ip_local_port_range="32768 60099"
or equivalently:
echo "32768 60099" >/proc/sys/net/ipv4/ip_local_port_range
You are advised to ensure that the range used for ip_local_port_range
does not conflict with any LISTENING ports on the firewall itself
If not able to move the local port range for now, you should at least
reduce the impact by a second more selective rule for the input chain:
LOCALPORTRANGE="`cat /proc/sys/net/ipv4/ip_local_port_range | awk '{ print $1 ":" $2 }'`"
$IPCHAINS -A input --source-port 20 -d $WORLD $LOCALPORTRANGE -p tcp -i $IFACE_WWW -j ACCEPT
Normally this results in following ruleset chain:
input ACCEPT tcp ------ 0xFF 0x00ppp0 0.0.0.0/00.0.0.0/0 20 -> 1024:4999
BTW: RPC services (using portmapper for registration) always uses
dynamic ports, which are requested by asking the kernel for a free port
out of local port range first. Therefore, modifying the
ip_local_port_range parameter does not ensure a protection of RPC
services behind the firewall.
Note: BenHur firewall don't need filter rules for outgoing active FTP
in general, software update 067 doesn't contain such rule.
3) Restrict the LISTENING socket bindings of the daemons as much as
possible (making them listen only on the local interface and thus
making connections from the outside impossible), and/or employ an ACL
system:
* Daemon-built-in-ACLs
* tcp_wrapper (if possible)
* creating dedicated block rules for active server ports >= 1024
TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2025 AOH