Files
Florian Westphal 763fdf8385 netfilter: nf_conntrack_sip: widen NAT rewrite delta to s32 in sip_help_tcp()
JIRA: https://redhat.atlassian.net/browse/RHEL-185609
Upstream Status: commit db3d0e0e5d4b

commit db3d0e0e5d4bc5ab4fe445b9f413d1b486508ca5
Author: Xiang Mei <xmei5@asu.edu>
Date:   Sun Jul 12 16:42:01 2026 -0700

    netfilter: nf_conntrack_sip: widen NAT rewrite delta to s32 in sip_help_tcp()

    sip_help_tcp() stores the size change of each NAT-rewritten SIP message
    in s16 diff and accumulates it in s16 tdiff, but a single message can
    grow by more than S16_MAX while the packet stays under the 65535
    enlarge_skb() limit: nf_nat_sip() rewrites every matching URI, and a long
    Contact list expands the message by tens of kilobytes. diff then wraps,
    and "datalen = datalen + diff - msglen" yields a huge unsigned datalen,
    so the next iteration's ct_sip_get_header() reads past the linearized skb
    tail.

    Widen diff, tdiff and the seq_adjust hook to s32. Both are bounded by the
    65535 byte packet limit, and the seqadj core is already s32
    (nf_ct_seqadj_set() takes s32), so no previously accepted input is
    rejected.

      BUG: KASAN: use-after-free in ct_sip_get_header (net/netfilter/nf_conntrack_sip.c:464)
      Read of size 1 at addr ffff888010800000 by task ksoftirqd/1/25
       ct_sip_get_header (net/netfilter/nf_conntrack_sip.c:464)
       sip_help_tcp (net/netfilter/nf_conntrack_sip.c:1694)
       nf_confirm (net/netfilter/nf_conntrack_proto.c:183)
       nf_hook_slow (net/netfilter/core.c:619)
       ip6_output (net/ipv6/ip6_output.c:246)
       ip6_forward (net/ipv6/ip6_output.c:690)
       ipv6_rcv (net/ipv6/ip6_input.c:351)
       __netif_receive_skb_one_core (net/core/dev.c:6212)
       process_backlog (net/core/dev.c:6676)
       __napi_poll (net/core/dev.c:7735)
       net_rx_action (net/core/dev.c:7955)
       handle_softirqs (kernel/softirq.c:622)
       run_ksoftirqd (kernel/softirq.c:1076)
       ...

    Fixes: f5b321bd37 ("netfilter: nf_conntrack_sip: add TCP support")
    Reported-by: Weiming Shi <bestswngs@gmail.com>
    Link: https://patch.msgid.link/netfilter-devel/20260712234201.3213635-1-xmei5@asu.edu
    Assisted-by: Claude:claude-opus-4-8
    Signed-off-by: Xiang Mei <xmei5@asu.edu>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>

Signed-off-by: Florian Westphal <fwestpha@redhat.com>
2026-08-04 18:40:11 +02:00
..