[Bug 217292] ipfw lookup on fields other than IP source and destination address doesn't work for IPv6

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Feb 22 12:03:11 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=217292

            Bug ID: 217292
           Summary: ipfw lookup on fields other than IP source and
                    destination address doesn't work for IPv6
           Product: Base System
           Version: 11.0-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: crest at bultmann.eu

The ipfw lookup action allows ipfw to match the specified field in a packet
against a table. I wanted to use this to dynamically allow/deny TCP and UDP
ports without changing the ruleset itself.

A reduced version of the ipfw script looks like this:

    # Create the table
    ipfw table tcp_open create type number algo number:array

    # Apply existing state
    ipfw add check-state

    # Establish new state
    ipfw add allow tcp from any to any lookup dst-port tcp_open keep-state
setup

    # Open port 22/tcp
    ipfw table tcp_open add 22

This works as expected for IPv4, but the IPv6 code path in
sys/netpfil/ipfw/ip_fw2.c:1517 can't deal with anything other than lookups on
the source/destination IPv6 address yet neither does the ipfw manpage mention
this limitation nor does ipfw refuse to load rules which can match IPv6 packets
against lookup actions on fields other than the IP addresses.

In my ruleset this "just" blocked all incoming IPv6 connections, but in other
rulesets it could just as easily expose IPv6 services to attackers.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list