Hello,
On Mon, Aug 28, 2023 at 05:13:29PM +0200, [email protected] wrote:
> >Synopsis: pf nat-to doesn't match a crafted packet
> >Category: system
> >Environment:
> System : OpenBSD 7.3
> Details : OpenBSD 7.3 (GENERIC.MP) #2080: Sat Mar 25 14:20:25 MDT
> 2023
>
> [email protected]:/usr/src/sys/arch/arm64/compile/GENERIC.MP
>
> Architecture: OpenBSD.arm64
> Machine : arm64
> >Description:
> I was testing a seemingly valid Internet packet going out my gateway
> but the pf firewall doesn't match nat-to to this one for some reason. I'm
> possibly overlooking something but every other packet exiting my gateway is
> nat'ed. What causes this? How can this be exploited?
>
> >How-To-Repeat:
> Here is the tcpdump from the host 1 hop behind the NAT router:
>
> 16:59:08.438082 192.168.177.13 > 49.12.42.182: icmp: host 7.198.187.211
> unreachable [icmp cksum ok] for 11.69.44.241.52699 > 7.198.187.211.55672: udp
> 51351 [tos 0x9c] (ttl 147, id 17124, len 51419, optlen=40 NOP RR{39}=
> RR{#106.155.117.54 233.26.79.111 129.127.249.242 60.117.146.16 179.39.29.224
> 213.65.49.78 0.16.45.109 252.168.188.0 123.108.138.224}) (ttl 64, id 65443,
> len 96)
> 0000: 4500 0060 ffa3 0000 4001 ad81 c0a8 b10d E..`....@.......
> 0010: 310c 2ab6 0301 55aa 0000 0000 4f9c c8db 1.*...U.....O...
> 0020: 42e4 0000 9311 c756 0b45 2cf1 07c6 bbd3 B......V.E,.....
> 0030: 0107 2704 6a9b 7536 e91a 4f6f 817f f9f2 ..'.j.u6..Oo....
> 0040: 3c75 9210 b327 1de0 d541 314e 0010 2d6d <u...'...A1N..-m
> 0050: fca8 bc00 7b6c 8ae0 cddb d978 0000 0000 ....{l.....x....
>
> and here is the tcpdump on the pppoe interface:
>
can you check there is a state in pf(4) matching ICMP dest unreachable
packet?
in order to handle icmp unreachable message there must be matching
state in pf(4).
refer to pf_test_state_icmp() where translation of ICMP error messages
happens.
hope it helps
regards
sashan