Re: ipf 4.1.32RC4 crashes Solaris9

Joseph Tam <[email protected]>
Newsgroups gmane.comp.security.firewalls.ipfilter
Message-ID <30915_1239581566_49E2837E_30915_7975_1_Pine.GSO.4.64.0904121707140.27938@mnc.zngu.hop.pn>
On Sun, 12 Apr 2009, Darren Reed wrote:

> > I was afraid you were going to ask that.  I deleted those core dumps.
> > Let's see, it's now 2am on Easter Sunday -- it shouldn't be too
> > disruptive
> > to cause another crash: add UDP port rules ... swap in firewall rules
> > .. resolve apache log file to generate DNS traffic, bingo! core dump.
> 
> That sounds too easily repeatable... are you saying that some specific
> rules and/or course of action could make it happen?

If you mean if there is a direct cause and effect, probably not.
It took a few minutes of DNS resolving before it crashed, and even then,
it may have crashed without my help.  I notice that one of the arguments
to fr_derefrule is an IP address, and for this particular dump, it did
not correspond to the resolving client but some other client.

So other than the observation that I made that adding UDP port filtering
rule will cause a crash eventually, that about as specific as I can be.

These are the rules I swapped in replacing a blanket UDP pass rule.
Group 120 are inbound UDP packets.

 	# Pass in traffic to my DNS resolving cache / content server
 	pass in quick from $local_net to to $my_ip1 port = 53 keep state group 120
 	pass in quick from any to $my_ip2 port = 53 keep state group 120

 	# Squelch noisy services
 	block return-icmp-as-dest(port-unr) in quick from $local_net to any port 136 >< 139 group 120
 	block return-icmp-as-dest(port-unr) in quick from $local_net to any port = 427 group 120
 	block return-icmp-as-dest(port-unr) in quick from any to 255.255.255.255/32 port = 67 group 120

 	# ... falls through to block and log rule

> >     # adb -k unix.0 vmcore.0
> >     physmem 3df9f
> >     adb: warning: dump is from SunOS 5.9 Generic_122300-31; dcmds and
> > macros may not match kernel implementation
> >     0x118b8a8/i
> >     bcopy+0x4b8:    ld        [%i0], %i4
> >
> > Does that help?  (I'm keeping the core files this time in case you ask
> > something else).
> 
> And stack trace output from $C?

 	$C
 	000002a1006a9fc1 bcopy+0x4b8(300035cc4ec, 2a1006aaa5e, 30, 89522465, ffffffffffffffe8, 30)
 	000002a1006aa181 ce_wput+0x264(30001e25818, 3000502dd40, 0, 30001015510, 22, 30)
 	000002a1006aa291 putnext+0x21c(0, 3000502dd40, 2, 30001e1ded8, 14, 2a1006aaae0)
 	000002a1006aa341 pfilmodwput+0x40(300010d12f0, 30001e1ded8, 20, 0, 7d9e2f2, fffe)
 	000002a1006aa401 putnext+0x21c(0, 3000502dd40, 0, 8000000, 800, ba9617670800)
 	000002a1006aa4b1 ip_wput_frag+0xb30(e, 0, 10000, 300010d1060, 30004c74740, 300038e2a58)
 	000002a1006aa611 ip_wput_ire+0x16ac(10000, 300000742b0, 3, ffff, 89522441, 300099a9440)
 	000002a1006aa801 ip_wput_pktoptions+0x56c(30003752910, 0, 89522465, 3000368c4d8, 0, 0)
 	000002a1006aa8d1 ip_wput+0x78(300032233c0, 300099a9440, 20, 8, 0, 0)
 	000002a1006aa991 putnext+0x21c(0, 30001199f40, 20, 0, 3, 10)
 	000002a1006aaa41 udp_wput+0x6bc(30001fae428, ffff, 3b, 3000368c4ec, 0, 10)
 	000002a1006aab21 putnext+0x21c(0, 30004c74740, 20, 300099a9440, 0, 10)
 	000002a1006aabd1 strput+0x270(30003221c20, 0, 0, 2a1006ab698, 0, 0)
 	000002a1006aadc1 kstrputmsg+0x36c(30002ccd740, 30003223650, 0, 0, 0, 0)
 	000002a1006aaea1 sosend_dgram+0x25c(0, 300039beef8, 10, 2a1006aba00, 8, 1c)
 	000002a1006aaf91 sosendmsg+0x3f4(0, 300039beef8, 7, 20, 0, 0)
 	000002a1006ab051 sendit+0x15c(2a1006aba00, 8, 30002ccd740, 8, 0, 0)
 	000002a1006ab121 sendto+0x78(3, 69ed8, 33, 0, ffbffcb0, 10)
 	000002a1006ab241 sendto32+0x3c(3, 69ed8, 33, 0, ffbffcb0, 10)
 	000002a1006ab2f1 syscall_trap32+0xa8(3, 69ed8, 33, 0, ffbffcb0, 10)

Joseph Tam <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.