[6849] in bugtraq

home help back first fref pref prev next nref lref last post

Re: FreeBSD 2.2.5R - FreeBSD Current "SMURF" Vulnerability

daemon@ATHENA.MIT.EDU (Joe Traister)
Thu May 28 16:57:04 1998

Date: 	Wed, 27 May 1998 13:58:09 -0400
Reply-To: Joe Traister <traister@GATE.NET>
From: Joe Traister <traister@GATE.NET>
X-To:         "J.A. Terranson" <sysadmin@MFN.ORG>
To: BUGTRAQ@NETSPACE.ORG
In-Reply-To:  <01BD8963.DBB4D1B0@w3svcs.mfn.org>

I opened PR kern/5294 against 2.2.5R and provided a patch for this problem
in December, currently the PR is 'suspended, awaiting committer'.  See

http://www.freebsd.org/cgi/query-pr.cgi?pr=5294

On Wed, 27 May 1998, J.A. Terranson wrote:

> Here's the entire thread, from discovery to patch (you just gotta love it
> when you can go from A to B in less than 24 hours!!!).  I found the comment
> by "Snob Art Genre" to be a perfect example of finding the good in *everything* :)
>
>
> (5/26/98-2206 J.A. Terranson [sysadmin@mfn.org])
>         FBSD (2.2.5R) machines will
>         always respond to a broadcasted echo request.  For example:
>
>         W2>ping 10.1.1.255
>         PING 10.1.1.255 (10.1.1.255): 56 data bytes
>         64 bytes from 10.1.1.20: icmp_seq=1 ttl=255 time=4.746 ms
>         64 bytes from 10.1.1.23: icmp_seq=1 ttl=255 time=45.864 ms (DUP!)
>         lots of these dups...
>
>         In fact, 1 dup for every FBSD machine on the subnet
>
> (5/27/98-0038 Andrew McNaughton [andrew@squiz.co.nz])
>         This contradicts the CERT Advisory below which states that FreeBSD does not
>         have the problem.
>
>         Either the CERT report is wrong, a problem has been introduced since, or
>         it's specific to the way you've set up your boxes.
>         <snip>
>
>         <CERT Advisory CA-98.01.smurf attached>
>
> (5/27/98-0057 J.A. Terranson [sysadmin@mfn.org])
>         I am running fairly plain-jane FBSD 2.2.5 from FTP.FREEBSD.ORG...
>         CERT is *wrong*
>
> (5/27/98-0150 Andrew McNaughton [andrew@squiz.co.nz])
>         Now confirmed here also pining from my mac, which has the same problem.
>
>         CERT and BugTRAQ should be notified.  Not sure if this should wait for a
>         patch to be issued.
>
> (5/27/98-0217 J.A. Terranson [sysadmin@mfn.org])
>         I assume you guys have been following the thread...
>
>         I will not report this to bugtraq untill you guys tell me there's
>         a patch...
>
> (5/27/98-0248 Alex G. Bulushev [bag@sinbin.demos.su])
>         CERT report is wrong i check -current (Apr 23) and found
>         that it respond to broadcast ping, default net.inet.icmp.bmcastecho=1,
>         but it alsow respond to broadcast after sysctl -w net.inet.icmp.bmcastecho=0
>         the good news is that in both case it not respond from aliases :)
>
> (5/27/98-0350 Bart Smit [bit@signature.nl])
>         Well,  sysctl -w net.inet.icmp.bmcastecho=0  does not help, contrary to
>         what you'd expect from the advisory...
>
> (5/27/98-0540 Steinar Haug [sthaugh@nethelp.no])
>
>         The problematic code is the following, from the icmp_input() routine in
>         sys/netinet/ip_icmp.c:
>
>         <snip>
>         I found it just as logical to simply remove the whole test, but I'll let
>         somebody else decide on whether this is the correct fix. I also changed
>         the initialization of the icmpbmcastecho variable, so it now defaults to
>         off (no multicast/broadcast echo). The following patch is against
>         2.2-980506-SNAP (ip_icmp.c,v 1.22.2.2), but should work equally well
>         against FreeBSD-current.
>
>         Late breaking news: I just checked -current on ftp.cdrom.com, and it
>         now has the IN_MULTICAST test removed. Still initializes icmpbmcastecho
>         to 1, though. I think it *should* default to 0 (off).
>
> (5/27/98-1021 Snob Art Genre [benedict@echonyc.com])
>         > W2>ping 10.1.1.255
>         > PING 10.1.1.255 (10.1.1.255): 56 data bytes
>         > 64 bytes from 10.1.1.20: icmp_seq=1 ttl=255 time=4.746 ms
>         > 64 bytes from 10.1.1.23: icmp_seq=1 ttl=255 time=45.864 ms (DUP!)
>         >       lots of these dups...
>
>         I've always found this useful, for when I want to build a complete ARP
>         cache for the local network.  I use it with NeXTStep all the time.
>
>         Perhaps the behavior should be modified to respond to broadcast pings
>         iff they're from a directly connected network, otherwise ignore?
>
> (5/27/98-1021 David Greenman [dg@root.com])
> >Well,  sysctl -w net.inet.icmp.bmcastecho=0  does not help, contrary to
> >what you'd expect from the advisory...
>
>    That's because the logic for it was broken in the kernel. I just fixed it
> yesterday. Diff attached (line numbers in -stable will vary slightly).
>
> -DG
>
> David Greenman
> Co-founder/Principal Architect, The FreeBSD Project
>
> Index: ip_icmp.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/netinet/ip_icmp.c,v
> retrieving revision 1.29
> retrieving revision 1.30
> diff -c -r1.29 -r1.30
> *** ip_icmp.c   1997/08/25 16:29:27     1.29
> --- ip_icmp.c   1998/05/26 11:34:30     1.30
> ***************
> *** 375,382 ****
>
>         case ICMP_ECHO:
>                 if (!icmpbmcastecho
> !                   && (m->m_flags & (M_MCAST | M_BCAST)) != 0
> !                   && IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) {
>                         icmpstat.icps_bmcastecho++;
>                         break;
>                 }
> --- 375,381 ----
>
>         case ICMP_ECHO:
>                 if (!icmpbmcastecho
> !                   && (m->m_flags & (M_MCAST | M_BCAST)) != 0) {
>                         icmpstat.icps_bmcastecho++;
>                         break;
>                 }
> ***************
> *** 385,392 ****
>
>         case ICMP_TSTAMP:
>                 if (!icmpbmcastecho
> !                   && (m->m_flags & (M_MCAST | M_BCAST)) != 0
> !                   && IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) {
>                         icmpstat.icps_bmcasttstamp++;
>                         break;
>                 }
> --- 384,390 ----
>
>         case ICMP_TSTAMP:
>                 if (!icmpbmcastecho
> !                   && (m->m_flags & (M_MCAST | M_BCAST)) != 0) {
>                         icmpstat.icps_bmcasttstamp++;
>                         break;
>                 }
>
>
> (5/27/98-1025 David Greenman [dg@root.com])
> >Late breaking news: I just checked -current on ftp.cdrom.com, and it
> >now has the IN_MULTICAST test removed. Still initializes icmpbmcastecho
> >to 1, though. I think it *should* default to 0 (off).
>
>    I noticed the bug last week when cdrom.com was the target of a smurf
> attack. It took a few days to get Garrett's opinion on how to fix it, and
> I committed the fix yesterday.
>
> -DG
>

--
Joe Traister       | He had that rare weird electricity about him -- that
traister@gate.net  | extremely wild and heavy presence that you only see in
Director of NetOps | a person who has abandoned all hope of ever behaving
CyberGate, Inc.    | "normally."  -- Hunter S. Thompson

home help back first fref pref prev next nref lref last post