Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Aug 2000 22:48:05 +0200 (CEST)
From:      Luigi Rizzo <luigi@info.iet.unipi.it>
To:        freebsd-security@freefall.freebsd.org
Cc:        Luigi Rizzo <luigi@info.iet.unipi.it>
Subject:   Re: [avalon@COOMBS.ANU.EDU.AU: Ip packet filtering with bridging on freebsd] (fwd)
Message-ID:  <200008182048.WAA09758@info.iet.unipi.it>

next in thread | raw e-mail | index | archive | help
I was informed by a few people of a thread on alleged problems with
ipfw+bridging, so i think i should say a few things on the subject.

Darren was complaining that net/bridge.c was missing some sanity
checks on packets before passing them to ip_fw_chk().  I looked at
his proposed fix on -security archives (i am not subscribed to the
list, this is why i did not react).

I am not sure which version of FreeBSD Darren refers to -- the
missing checks were there when i committed the code to 3.x and 4.x
-- only thing, they are|were located in /sys/netinet/ip_fw.c,
function ip_fw_chk() near this section of code:

        if (pip) { /* normal ip packet */
            ip = *pip;
            offset = (ip->ip_off & IP_OFFMASK);
        } else { /* bridged or non-ip packet */
            struct ether_header *eh = mtod(*m, struct ether_header *);
            switch (ntohs(eh->ether_type)) {
            case ETHERTYPE_IP :
		...
and the checks are here, doing all things which are in
Darren's proposed patch.

So i think RELENG_3 and RELENG_4_0_RELEASE are safe from this point
of view.

This part of the code got in fact nuked in rev 1.134 of ip_fw.c
when Archie Cobbs did his changes to ether_input(); but with a
subsequent change to net/bridge.c on June 2th Archie also removed
ipfw support for bridged packets.

So we lost some functionality in RELENG_4, 4.1 and CURRENT (including
some problems with bridging of multicast traffic), but i do not
believe that we lost safety.

Remember, RELENG_3 is still safe and good for doing ipfw filtering
on bridged packets (modulo other bugs that i am unaware of), and
so is the floppy image that you can get from my dummynet page.

Speaking of Archie's changes to ether_input():
I did like the idea of putting common parts from the drivers into
ether_input().  I disagreed (by email both to the list and to
Archie) on the way this was done (e.g. without testing that bridging
still worked as before, and eventually removing some functionality);
but being idle like i was has never been a good excuse for stopping
progress in FreeBSD so in a sense i think Archie did the right
thing and whatever was lost in the process may be fixed in the
future should someone have a strong need.

Hope this clarifies things -- sorry for not reacting earlier but
i am not subscribing to -security (so please Cc me) and did not know
it was such a big deal.

	cheers
	luigi
-----------------------------------+-------------------------------------
  Luigi RIZZO, luigi@iet.unipi.it  . Dip. di Ing. dell'Informazione
  http://www.iet.unipi.it/~luigi/  . Universita` di Pisa
  TEL/FAX: +39-050-568.533/522     . via Diotisalvi 2, 56126 PISA (Italy)
  Mobile   +39-347-0373137
-----------------------------------+-------------------------------------


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-security" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200008182048.WAA09758>