* [PATCH net 0/6] Netfilter fixes for net
@ 2021-07-23 15:54 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2021-07-23 15:54 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba
Hi,
The following patchset contains Netfilter fixes for net:
1) Memleak in commit audit error path, from Dongliang Mu.
2) Avoid possible false sharing for flowtable timeout updates
and nft_last use.
3) Adjust conntrack timestamp due to garbage collection delay,
from Florian Westphal.
4) Fix nft_nat without layer 3 address for the inet family.
5) Fix compilation warning in nfnl_hook when ingress support
is disabled, from Arnd Bergmann.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit 5f119ba1d5771bbf46d57cff7417dcd84d3084ba:
net: decnet: Fix sleeping inside in af_decnet (2021-07-16 14:06:16 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git HEAD
for you to fetch changes up to 217e26bd87b2930856726b48a4e71c768b8c9bf5:
netfilter: nfnl_hook: fix unused variable warning (2021-07-23 14:45:03 +0200)
----------------------------------------------------------------
Arnd Bergmann (1):
netfilter: nfnl_hook: fix unused variable warning
Dongliang Mu (1):
netfilter: nf_tables: fix audit memory leak in nf_tables_commit
Florian Westphal (1):
netfilter: conntrack: adjust stop timestamp to real expiry value
Pablo Neira Ayuso (3):
netfilter: flowtable: avoid possible false sharing
netfilter: nft_last: avoid possible false sharing
netfilter: nft_nat: allow to specify layer 4 protocol NAT only
net/netfilter/nf_conntrack_core.c | 7 ++++++-
net/netfilter/nf_flow_table_core.c | 6 +++++-
net/netfilter/nf_tables_api.c | 12 ++++++++++++
net/netfilter/nfnetlink_hook.c | 2 ++
net/netfilter/nft_last.c | 20 +++++++++++++-------
net/netfilter/nft_nat.c | 4 +++-
6 files changed, 41 insertions(+), 10 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2022-02-04 15:18 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2022-02-04 15:18 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba
Hi,
The following patchset contains Netfilter fixes for net:
1) Don't refresh timeout for SCTP flows in CLOSED state.
2) Don't allow access to transport header if fragment offset is set on.
3) Reinitialize internal conntrack state for retransmitted TCP
syn-ack packet.
4) Update MAINTAINER file to add the Netfilter group tree. Moving
forward, Florian Westphal has access to this tree so he can also
send pull requests.
5) Set on IPS_HELPER for entries created via ctnetlink, otherwise NAT
might zap it.
All patches from Florian Westphal.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit ed14fc7a79ab43e9f2cb1fa9c1733fdc133bba30:
net: sparx5: Fix get_stat64 crash in tcpdump (2022-02-03 19:01:15 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git HEAD
for you to fetch changes up to d1ca60efc53d665cf89ed847a14a510a81770b81:
netfilter: ctnetlink: disable helper autoassign (2022-02-04 05:39:57 +0100)
----------------------------------------------------------------
Florian Westphal (6):
netfilter: conntrack: don't refresh sctp entries in closed state
netfilter: nft_payload: don't allow th access for fragments
netfilter: conntrack: move synack init code to helper
netfilter: conntrack: re-init state for retransmitted syn-ack
MAINTAINERS: netfilter: update git links
netfilter: ctnetlink: disable helper autoassign
MAINTAINERS | 4 +-
include/uapi/linux/netfilter/nf_conntrack_common.h | 2 +-
net/netfilter/nf_conntrack_netlink.c | 3 +-
net/netfilter/nf_conntrack_proto_sctp.c | 9 ++++
net/netfilter/nf_conntrack_proto_tcp.c | 59 +++++++++++++++-------
net/netfilter/nft_exthdr.c | 2 +-
net/netfilter/nft_payload.c | 9 ++--
7 files changed, 61 insertions(+), 27 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2022-02-10 23:10 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2022-02-10 23:10 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba
Hi,
The following patchset contains Netfilter fixes for net:
1) Add selftest for nft_synproxy, from Florian Westphal.
2) xt_socket destroy path incorrectly disables IPv4 defrag for
IPv6 traffic (typo), from Eric Dumazet.
3) Fix exit value selftest nft_concat_range.sh, from Hangbin Liu.
4) nft_synproxy disables the IPv4 hooks if the IPv6 hooks fail
to be registered.
5) disable rp_filter on router in selftest nft_fib.sh, also
from Hangbin Liu.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit 7db788ad627aabff2b74d4f1a3b68516d0fee0d7:
nfp: flower: fix ida_idx not being released (2022-02-08 21:06:35 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git HEAD
for you to fetch changes up to bbe4c0896d25009a7c86285d2ab024eed4374eea:
selftests: netfilter: disable rp_filter on router (2022-02-11 00:01:04 +0100)
----------------------------------------------------------------
Eric Dumazet (1):
netfilter: xt_socket: fix a typo in socket_mt_destroy()
Florian Westphal (1):
selftests: netfilter: add synproxy test
Hangbin Liu (2):
selftests: netfilter: fix exit value for nft_concat_range
selftests: netfilter: disable rp_filter on router
Pablo Neira Ayuso (2):
netfilter: nft_synproxy: unregister hooks on init error path
selftests: netfilter: synproxy test requires nf_conntrack
net/netfilter/nft_synproxy.c | 4 +-
net/netfilter/xt_socket.c | 2 +-
tools/testing/selftests/netfilter/Makefile | 2 +-
.../selftests/netfilter/nft_concat_range.sh | 2 +-
tools/testing/selftests/netfilter/nft_fib.sh | 1 +
tools/testing/selftests/netfilter/nft_synproxy.sh | 117 +++++++++++++++++++++
6 files changed, 124 insertions(+), 4 deletions(-)
create mode 100755 tools/testing/selftests/netfilter/nft_synproxy.sh
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2023-06-27 6:52 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2023-06-27 6:52 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet
Hi,
The following patchset contains Netfilter fixes for net:
1) Reset shift on Boyer-Moore string match for each block,
from Jeremy Sowden.
2) Fix acccess to non-linear area in DCCP conntrack helper,
from Florian Westphal.
3) Fix kernel-doc warnings, by Randy Dunlap.
4) Bail out if expires= does not show in SIP helper message,
or make ct_sip_parse_numerical_param() tristate and report
error if expires= cannot be parsed.
5) Unbind non-anonymous set in case rule construction fails.
6) Fix underflow in chain reference counter in case set element
already exists or it cannot be created.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-06-27
Thanks.
----------------------------------------------------------------
The following changes since commit 6709d4b7bc2e079241fdef15d1160581c5261c10:
net: nfc: Fix use-after-free caused by nfc_llcp_find_local (2023-06-26 10:57:23 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-06-27
for you to fetch changes up to b389139f12f287b8ed2e2628b72df89a081f0b59:
netfilter: nf_tables: fix underflow in chain reference counter (2023-06-26 17:18:55 +0200)
----------------------------------------------------------------
netfilter pull request 23-06-27
----------------------------------------------------------------
Florian Westphal (1):
netfilter: conntrack: dccp: copy entire header to stack buffer, not just basic one
Ilia.Gavrilov (1):
netfilter: nf_conntrack_sip: fix the ct_sip_parse_numerical_param() return value.
Jeremy Sowden (1):
lib/ts_bm: reset initial match offset for every block of text
Pablo Neira Ayuso (2):
netfilter: nf_tables: unbind non-anonymous set if rule construction fails
netfilter: nf_tables: fix underflow in chain reference counter
Randy Dunlap (1):
linux/netfilter.h: fix kernel-doc warnings
include/linux/netfilter.h | 4 +--
lib/ts_bm.c | 4 ++-
net/netfilter/nf_conntrack_proto_dccp.c | 52 +++++++++++++++++++++++++++++++--
net/netfilter/nf_conntrack_sip.c | 2 +-
net/netfilter/nf_tables_api.c | 6 +++-
5 files changed, 60 insertions(+), 8 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2023-07-05 23:04 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2023-07-05 23:04 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet
Hi,
The following patchset contains Netfilter fixes for net:
1) Fix missing overflow use refcount checks in nf_tables.
2) Do not set IPS_ASSURED for IPS_NAT_CLASH entries in GRE tracker,
from Florian Westphal.
3) Bail out if nf_ct_helper_hash is NULL before registering helper,
from Florent Revest.
4) Use siphash() instead siphash_4u64() to fix performance regression,
also from Florian.
5) Do not allow to add rules to removed chains via ID,
from Thadeu Lima de Souza Cascardo.
6) Fix oob read access in byteorder expression, also from Thadeu.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-07-06
Thanks.
----------------------------------------------------------------
The following changes since commit c451410ca7e3d8eeb31d141fc20c200e21754ba4:
Merge branch 'mptcp-fixes' (2023-07-05 10:51:14 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-07-06
for you to fetch changes up to caf3ef7468f7534771b5c44cd8dbd6f7f87c2cbd:
netfilter: nf_tables: prevent OOB access in nft_byteorder_eval (2023-07-06 00:53:14 +0200)
----------------------------------------------------------------
netfilter pull request 23-07-06
----------------------------------------------------------------
Florent Revest (1):
netfilter: conntrack: Avoid nf_ct_helper_hash uses after free
Florian Westphal (2):
netfilter: conntrack: gre: don't set assured flag for clash entries
netfilter: conntrack: don't fold port numbers into addresses before hashing
Pablo Neira Ayuso (1):
netfilter: nf_tables: report use refcount overflow
Thadeu Lima de Souza Cascardo (2):
netfilter: nf_tables: do not ignore genmask when looking up chain by id
netfilter: nf_tables: prevent OOB access in nft_byteorder_eval
include/net/netfilter/nf_conntrack_tuple.h | 3 +
include/net/netfilter/nf_tables.h | 31 ++++-
net/netfilter/nf_conntrack_core.c | 20 ++--
net/netfilter/nf_conntrack_helper.c | 4 +
net/netfilter/nf_conntrack_proto_gre.c | 10 +-
net/netfilter/nf_tables_api.c | 174 ++++++++++++++++++-----------
net/netfilter/nft_byteorder.c | 14 +--
net/netfilter/nft_flow_offload.c | 6 +-
net/netfilter/nft_immediate.c | 8 +-
net/netfilter/nft_objref.c | 8 +-
10 files changed, 178 insertions(+), 100 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2023-11-15 18:45 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2023-11-15 18:45 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains Netfilter fixes for net:
1) Remove unused variable causing compilation warning in nft_set_rbtree,
from Yang Li. This unused variable is a left over from previous
merge window.
2) Possible return of uninitialized in nf_conntrack_bridge, from
Linkui Xiao. This is there since nf_conntrack_bridge is available.
3) Fix incorrect pointer math in nft_byteorder, from Dan Carpenter.
Problem has been there since 2016.
4) Fix bogus error in destroy set element command. Problem is there
since this new destroy command was added.
5) Fix race condition in ipset between swap and destroy commands and
add/del/test control plane. This problem is there since ipset was
merged.
6) Split async and sync catchall GC in two function to fix unsafe
iteration over RCU. This is a fix-for-fix that was included in
the previous pull request.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-11-15
Thanks.
----------------------------------------------------------------
The following changes since commit 4b7b492615cf3017190f55444f7016812b66611d:
af_unix: fix use-after-free in unix_stream_read_actor() (2023-11-14 10:51:13 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-11-15
for you to fetch changes up to 8837ba3e58ea1e3d09ae36db80b1e80853aada95:
netfilter: nf_tables: split async and sync catchall in two functions (2023-11-14 16:16:21 +0100)
----------------------------------------------------------------
netfilter pull request 23-11-15
----------------------------------------------------------------
Dan Carpenter (1):
netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval()
Jozsef Kadlecsik (1):
netfilter: ipset: fix race condition between swap/destroy and kernel side add/del/test
Linkui Xiao (1):
netfilter: nf_conntrack_bridge: initialize err to 0
Pablo Neira Ayuso (2):
netfilter: nf_tables: bogus ENOENT when destroying element which does not exist
netfilter: nf_tables: split async and sync catchall in two functions
Yang Li (1):
netfilter: nft_set_rbtree: Remove unused variable nft_net
include/net/netfilter/nf_tables.h | 4 +-
net/bridge/netfilter/nf_conntrack_bridge.c | 2 +-
net/netfilter/ipset/ip_set_core.c | 14 +++----
net/netfilter/nf_tables_api.c | 60 ++++++++++++++++--------------
net/netfilter/nft_byteorder.c | 5 ++-
net/netfilter/nft_meta.c | 2 +-
net/netfilter/nft_set_rbtree.c | 2 -
7 files changed, 47 insertions(+), 42 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2023-12-06 18:03 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2023-12-06 18:03 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains Netfilter fixes for net:
1) Incorrect nf_defrag registration for bpf link infra, from D. Wythe.
2) Skip inactive elements in pipapo set backend walk to avoid double
deactivation, from Florian Westphal.
3) Fix NFT_*_F_PRESENT check with big endian arch, also from Florian.
4) Bail out if number of expressions in NFTA_DYNSET_EXPRESSIONS mismatch
stateful expressions in set declaration.
5) Honor family in table lookup by handle. Broken since 4.16.
6) Use sk_callback_lock to protect access to sk->sk_socket in xt_owner.
sock_orphan() might zap this pointer, from Phil Sutter.
All of these fixes address broken stuff for several releases.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-12-06
Thanks.
----------------------------------------------------------------
The following changes since commit 54d4434da824460a190d547404530eff12a7907d:
Merge branch 'hv_netvsc-fix-race-of-netvsc-vf-register-and-slave-bit' (2023-11-21 13:15:05 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-12-06
for you to fetch changes up to 7ae836a3d630e146b732fe8ef7d86b243748751f:
netfilter: xt_owner: Fix for unsafe access of sk->sk_socket (2023-12-06 17:52:15 +0100)
----------------------------------------------------------------
netfilter pull request 23-12-06
----------------------------------------------------------------
D. Wythe (1):
netfilter: bpf: fix bad registration on nf_defrag
Florian Westphal (2):
netfilter: nft_set_pipapo: skip inactive elements during set walk
netfilter: nf_tables: fix 'exist' matching on bigendian arches
Pablo Neira Ayuso (2):
netfilter: nf_tables: bail out on mismatching dynset and set expressions
netfilter: nf_tables: validate family when identifying table via handle
Phil Sutter (1):
netfilter: xt_owner: Fix for unsafe access of sk->sk_socket
net/netfilter/nf_bpf_link.c | 10 +++++-----
net/netfilter/nf_tables_api.c | 5 +++--
net/netfilter/nft_dynset.c | 13 +++++++++----
net/netfilter/nft_exthdr.c | 4 ++--
net/netfilter/nft_fib.c | 8 ++++++--
net/netfilter/nft_set_pipapo.c | 3 +++
net/netfilter/xt_owner.c | 16 ++++++++++++----
7 files changed, 40 insertions(+), 19 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2024-01-24 19:12 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-01-24 19:12 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains Netfilter fixes for net:
1) Update nf_tables kdoc to keep it in sync with the code, from George Guo.
2) Handle NETDEV_UNREGISTER event for inet/ingress basechain.
3) Reject configuration that cause nft_limit to overflow, from Florian Westphal.
4) Restrict anonymous set/map names to 16 bytes, from Florian Westphal.
5) Disallow to encode queue number and error in verdicts. This reverts
a patch which seems to have introduced an early attempt to support for
nfqueue maps, which is these days supported via nft_queue expression.
6) Sanitize family via .validate for expressions that explicitly refer
to NF_INET_* hooks.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-01-24
Thanks.
----------------------------------------------------------------
The following changes since commit 32f2a0afa95fae0d1ceec2ff06e0e816939964b8:
net/sched: flower: Fix chain template offload (2024-01-24 01:33:59 +0000)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-24-01-24
for you to fetch changes up to d0009effa8862c20a13af4cb7475d9771b905693:
netfilter: nf_tables: validate NFPROTO_* family (2024-01-24 20:02:40 +0100)
----------------------------------------------------------------
netfilter pull request 24-01-24
----------------------------------------------------------------
Florian Westphal (3):
netfilter: nft_limit: reject configurations that cause integer overflow
netfilter: nf_tables: restrict anonymous set and map names to 16 bytes
netfilter: nf_tables: reject QUEUE/DROP verdict parameters
George Guo (1):
netfilter: nf_tables: cleanup documentation
Pablo Neira Ayuso (2):
netfilter: nft_chain_filter: handle NETDEV_UNREGISTER for inet/ingress basechain
netfilter: nf_tables: validate NFPROTO_* family
include/net/netfilter/nf_tables.h | 49 +++++++++++++++++++++++++++++++--------
net/netfilter/nf_tables_api.c | 20 ++++++++--------
net/netfilter/nft_chain_filter.c | 11 +++++++--
net/netfilter/nft_compat.c | 12 ++++++++++
net/netfilter/nft_flow_offload.c | 5 ++++
net/netfilter/nft_limit.c | 23 ++++++++++++------
net/netfilter/nft_nat.c | 5 ++++
net/netfilter/nft_rt.c | 5 ++++
net/netfilter/nft_socket.c | 5 ++++
net/netfilter/nft_synproxy.c | 7 ++++--
net/netfilter/nft_tproxy.c | 5 ++++
net/netfilter/nft_xfrm.c | 5 ++++
12 files changed, 121 insertions(+), 31 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2024-01-31 22:59 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-01-31 22:59 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains Netfilter fixes for net:
1) TCP conntrack now only evaluates window negotiation for packets in
the REPLY direction, from Ryan Schaefer. Otherwise SYN retransmissions
trigger incorrect window scale negotiation. From Ryan Schaefer.
2) Restrict tunnel objects to NFPROTO_NETDEV which is where it makes sense
to use this object type.
3) Fix conntrack pick up from the middle of SCTP_CID_SHUTDOWN_ACK packets.
From Xin Long.
4) Another attempt from Jozsef Kadlecsik to address the slow down of the
swap command in ipset.
5) Replace a BUG_ON by WARN_ON_ONCE in nf_log, and consolidate check for
the case that the logger is NULL from the read side lock section.
6) Address lack of sanitization for custom expectations. Restrict layer 3
and 4 families to what it is supported by userspace.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-01-31
Thanks.
----------------------------------------------------------------
The following changes since commit a2933a8759a62269754e54733d993b19de870e84:
selftests: bonding: do not test arp/ns target with mode balance-alb/tlb (2024-01-25 09:50:54 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-24-01-31
for you to fetch changes up to 8059918a1377f2f1fff06af4f5a4ed3d5acd6bc4:
netfilter: nft_ct: sanitize layer 3 and 4 protocol number in custom expectations (2024-01-31 23:14:14 +0100)
----------------------------------------------------------------
netfilter pull request 24-01-31
----------------------------------------------------------------
Jozsef Kadlecsik (1):
netfilter: ipset: fix performance regression in swap operation
Pablo Neira Ayuso (3):
netfilter: nf_tables: restrict tunnel object to NFPROTO_NETDEV
netfilter: nf_log: replace BUG_ON by WARN_ON_ONCE when putting logger
netfilter: nft_ct: sanitize layer 3 and 4 protocol number in custom expectations
Ryan Schaefer (1):
netfilter: conntrack: correct window scaling with retransmitted SYN
Xin Long (1):
netfilter: conntrack: check SCTP_CID_SHUTDOWN_ACK for vtag setting in sctp_new
include/linux/netfilter/ipset/ip_set.h | 4 ++++
include/net/netfilter/nf_tables.h | 2 ++
net/netfilter/ipset/ip_set_bitmap_gen.h | 14 ++++++++++---
net/netfilter/ipset/ip_set_core.c | 37 +++++++++++++++++++++++++--------
net/netfilter/ipset/ip_set_hash_gen.h | 15 ++++++++++---
net/netfilter/ipset/ip_set_list_set.c | 13 +++++++++---
net/netfilter/nf_conntrack_proto_sctp.c | 2 +-
net/netfilter/nf_conntrack_proto_tcp.c | 10 +++++----
net/netfilter/nf_log.c | 7 ++++---
net/netfilter/nf_tables_api.c | 14 ++++++++-----
net/netfilter/nft_ct.c | 24 +++++++++++++++++++++
net/netfilter/nft_tunnel.c | 1 +
12 files changed, 112 insertions(+), 31 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2024-04-04 10:43 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-04-04 10:43 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet
Hi,
The following patchset contains Netfilter fixes for net:
Patch #1 unlike early commit path stage which triggers a call to abort,
an explicit release of the batch is required on abort, otherwise
mutex is released and commit_list remains in place.
Patch #2 release mutex after nft_gc_seq_end() in commit path, otherwise
async GC worker could collect expired objects.
Patch #3 flush pending destroy work in module removal path, otherwise UaF
is possible.
Patch #4 and #6 restrict the table dormant flag with basechain updates
to fix state inconsistency in the hook registration.
Patch #5 adds missing RCU read side lock to flowtable type to avoid races
with module removal.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-04-04
Thanks.
----------------------------------------------------------------
The following changes since commit 72076fc9fe60b9143cd971fd8737718719bc512e:
Revert "tg3: Remove residual error handling in tg3_suspend" (2024-04-04 10:51:01 +0200)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-24-04-04
for you to fetch changes up to 1bc83a019bbe268be3526406245ec28c2458a518:
netfilter: nf_tables: discard table flag update with pending basechain deletion (2024-04-04 11:38:35 +0200)
----------------------------------------------------------------
netfilter pull request 24-04-04
----------------------------------------------------------------
Pablo Neira Ayuso (5):
netfilter: nf_tables: release batch on table validation from abort path
netfilter: nf_tables: release mutex after nft_gc_seq_end from abort path
netfilter: nf_tables: flush pending destroy work before exit_net release
netfilter: nf_tables: reject new basechain after table flag update
netfilter: nf_tables: discard table flag update with pending basechain deletion
Ziyang Xuan (1):
netfilter: nf_tables: Fix potential data-race in __nft_flowtable_type_get()
net/netfilter/nf_tables_api.c | 50 +++++++++++++++++++++++++++++--------------
1 file changed, 34 insertions(+), 16 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2024-05-22 23:13 Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 1/6] netfilter: nfnetlink_queue: acquire rcu_read_lock() in instance_destroy_rcu() Pablo Neira Ayuso
` (5 more replies)
0 siblings, 6 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-05-22 23:13 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains Netfilter fixes for net:
Patch #1 syzbot reports that nf_reinject() could be called without
rcu_read_lock() when flushing pending packets at nfnetlink
queue removal, from Eric Dumazet.
Patch #2 flushes ipset list:set when canceling garbage collection to
reference to other lists to fix a race, from Jozsef Kadlecsik.
Patch #3 restores q-in-q matching with nft_payload by reverting
f6ae9f120dad ("netfilter: nft_payload: add C-VLAN support").
Patch #4 fixes vlan mangling in skbuff when vlan offload is present
in skbuff, without this patch nft_payload corrupts packets
in this case.
Patch #5 fixes possible nul-deref in tproxy no IP address is found in
netdevice, reported by syzbot and patch from Florian Westphal.
Patch #6 removes a superfluous restriction which prevents loose fib
lookups from input and forward hooks, from Eric Garver.
My assessment is that patches #1, #2 and #5 address possible kernel
crash, anything else in this batch fixes broken features.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-05-23
Thanks.
----------------------------------------------------------------
The following changes since commit 4b377b4868ef17b040065bd468668c707d2477a5:
kprobe/ftrace: fix build error due to bad function definition (2024-05-17 19:17:55 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-24-05-23
for you to fetch changes up to 4878baa295a377fa9116dbeb43208272efc1cb1b:
netfilter: nft_fib: allow from forward/input without iif selector (2024-05-21 16:37:01 +0200)
----------------------------------------------------------------
netfilter pull request 24-05-23
----------------------------------------------------------------
Alexander Maltsev (1):
netfilter: ipset: Add list flush to cancel_gc
Eric Dumazet (1):
netfilter: nfnetlink_queue: acquire rcu_read_lock() in instance_destroy_rcu()
Eric Garver (1):
netfilter: nft_fib: allow from forward/input without iif selector
Florian Westphal (1):
netfilter: tproxy: bail out if IP has been disabled on the device
Pablo Neira Ayuso (2):
netfilter: nft_payload: restore vlan q-in-q match support
netfilter: nft_payload: skbuff vlan metadata mangle support
net/ipv4/netfilter/nf_tproxy_ipv4.c | 2 +
net/netfilter/ipset/ip_set_list_set.c | 3 ++
net/netfilter/nfnetlink_queue.c | 2 +
net/netfilter/nft_fib.c | 8 ++-
net/netfilter/nft_payload.c | 95 ++++++++++++++++++++++++++---------
5 files changed, 82 insertions(+), 28 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 1/6] netfilter: nfnetlink_queue: acquire rcu_read_lock() in instance_destroy_rcu()
2024-05-22 23:13 [PATCH net 0/6] Netfilter fixes for net Pablo Neira Ayuso
@ 2024-05-22 23:13 ` Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 2/6] netfilter: ipset: Add list flush to cancel_gc Pablo Neira Ayuso
` (4 subsequent siblings)
5 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-05-22 23:13 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
From: Eric Dumazet <edumazet@google.com>
syzbot reported that nf_reinject() could be called without rcu_read_lock() :
WARNING: suspicious RCU usage
6.9.0-rc7-syzkaller-02060-g5c1672705a1a #0 Not tainted
net/netfilter/nfnetlink_queue.c:263 suspicious rcu_dereference_check() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 1
2 locks held by syz-executor.4/13427:
#0: ffffffff8e334f60 (rcu_callback){....}-{0:0}, at: rcu_lock_acquire include/linux/rcupdate.h:329 [inline]
#0: ffffffff8e334f60 (rcu_callback){....}-{0:0}, at: rcu_do_batch kernel/rcu/tree.c:2190 [inline]
#0: ffffffff8e334f60 (rcu_callback){....}-{0:0}, at: rcu_core+0xa86/0x1830 kernel/rcu/tree.c:2471
#1: ffff88801ca92958 (&inst->lock){+.-.}-{2:2}, at: spin_lock_bh include/linux/spinlock.h:356 [inline]
#1: ffff88801ca92958 (&inst->lock){+.-.}-{2:2}, at: nfqnl_flush net/netfilter/nfnetlink_queue.c:405 [inline]
#1: ffff88801ca92958 (&inst->lock){+.-.}-{2:2}, at: instance_destroy_rcu+0x30/0x220 net/netfilter/nfnetlink_queue.c:172
stack backtrace:
CPU: 0 PID: 13427 Comm: syz-executor.4 Not tainted 6.9.0-rc7-syzkaller-02060-g5c1672705a1a #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/02/2024
Call Trace:
<IRQ>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
lockdep_rcu_suspicious+0x221/0x340 kernel/locking/lockdep.c:6712
nf_reinject net/netfilter/nfnetlink_queue.c:323 [inline]
nfqnl_reinject+0x6ec/0x1120 net/netfilter/nfnetlink_queue.c:397
nfqnl_flush net/netfilter/nfnetlink_queue.c:410 [inline]
instance_destroy_rcu+0x1ae/0x220 net/netfilter/nfnetlink_queue.c:172
rcu_do_batch kernel/rcu/tree.c:2196 [inline]
rcu_core+0xafd/0x1830 kernel/rcu/tree.c:2471
handle_softirqs+0x2d6/0x990 kernel/softirq.c:554
__do_softirq kernel/softirq.c:588 [inline]
invoke_softirq kernel/softirq.c:428 [inline]
__irq_exit_rcu+0xf4/0x1c0 kernel/softirq.c:637
irq_exit_rcu+0x9/0x30 kernel/softirq.c:649
instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline]
sysvec_apic_timer_interrupt+0xa6/0xc0 arch/x86/kernel/apic/apic.c:1043
</IRQ>
<TASK>
Fixes: 9872bec773c2 ("[NETFILTER]: nfnetlink: use RCU for queue instances hash")
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/nfnetlink_queue.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
index 00f4bd21c59b..f1c31757e496 100644
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -169,7 +169,9 @@ instance_destroy_rcu(struct rcu_head *head)
struct nfqnl_instance *inst = container_of(head, struct nfqnl_instance,
rcu);
+ rcu_read_lock();
nfqnl_flush(inst, NULL, 0);
+ rcu_read_unlock();
kfree(inst);
module_put(THIS_MODULE);
}
--
2.30.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net 2/6] netfilter: ipset: Add list flush to cancel_gc
2024-05-22 23:13 [PATCH net 0/6] Netfilter fixes for net Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 1/6] netfilter: nfnetlink_queue: acquire rcu_read_lock() in instance_destroy_rcu() Pablo Neira Ayuso
@ 2024-05-22 23:13 ` Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 3/6] netfilter: nft_payload: restore vlan q-in-q match support Pablo Neira Ayuso
` (3 subsequent siblings)
5 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-05-22 23:13 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
From: Alexander Maltsev <keltar.gw@gmail.com>
Flushing list in cancel_gc drops references to other lists right away,
without waiting for RCU to destroy list. Fixes race when referenced
ipsets can't be destroyed while referring list is scheduled for destroy.
Fixes: 97f7cf1cd80e ("netfilter: ipset: fix performance regression in swap operation")
Signed-off-by: Alexander Maltsev <keltar.gw@gmail.com>
Acked-by: Jozsef Kadlecsik <kadlec@netfilter.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/ipset/ip_set_list_set.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/netfilter/ipset/ip_set_list_set.c b/net/netfilter/ipset/ip_set_list_set.c
index 6c3f28bc59b3..54e2a1dd7f5f 100644
--- a/net/netfilter/ipset/ip_set_list_set.c
+++ b/net/netfilter/ipset/ip_set_list_set.c
@@ -549,6 +549,9 @@ list_set_cancel_gc(struct ip_set *set)
if (SET_WITH_TIMEOUT(set))
timer_shutdown_sync(&map->gc);
+
+ /* Flush list to drop references to other ipsets */
+ list_set_flush(set);
}
static const struct ip_set_type_variant set_variant = {
--
2.30.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net 3/6] netfilter: nft_payload: restore vlan q-in-q match support
2024-05-22 23:13 [PATCH net 0/6] Netfilter fixes for net Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 1/6] netfilter: nfnetlink_queue: acquire rcu_read_lock() in instance_destroy_rcu() Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 2/6] netfilter: ipset: Add list flush to cancel_gc Pablo Neira Ayuso
@ 2024-05-22 23:13 ` Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 4/6] netfilter: nft_payload: skbuff vlan metadata mangle support Pablo Neira Ayuso
` (2 subsequent siblings)
5 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-05-22 23:13 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Revert f6ae9f120dad ("netfilter: nft_payload: add C-VLAN support").
f41f72d09ee1 ("netfilter: nft_payload: simplify vlan header handling")
already allows to match on inner vlan tags by subtract the vlan header
size to the payload offset which has been popped and stored in skbuff
metadata fields.
Fixes: f6ae9f120dad ("netfilter: nft_payload: add C-VLAN support")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/nft_payload.c | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git a/net/netfilter/nft_payload.c b/net/netfilter/nft_payload.c
index 0a689c8e0295..a3cb5dbcb362 100644
--- a/net/netfilter/nft_payload.c
+++ b/net/netfilter/nft_payload.c
@@ -45,36 +45,27 @@ nft_payload_copy_vlan(u32 *d, const struct sk_buff *skb, u8 offset, u8 len)
int mac_off = skb_mac_header(skb) - skb->data;
u8 *vlanh, *dst_u8 = (u8 *) d;
struct vlan_ethhdr veth;
- u8 vlan_hlen = 0;
-
- if ((skb->protocol == htons(ETH_P_8021AD) ||
- skb->protocol == htons(ETH_P_8021Q)) &&
- offset >= VLAN_ETH_HLEN && offset < VLAN_ETH_HLEN + VLAN_HLEN)
- vlan_hlen += VLAN_HLEN;
vlanh = (u8 *) &veth;
- if (offset < VLAN_ETH_HLEN + vlan_hlen) {
+ if (offset < VLAN_ETH_HLEN) {
u8 ethlen = len;
- if (vlan_hlen &&
- skb_copy_bits(skb, mac_off, &veth, VLAN_ETH_HLEN) < 0)
- return false;
- else if (!nft_payload_rebuild_vlan_hdr(skb, mac_off, &veth))
+ if (!nft_payload_rebuild_vlan_hdr(skb, mac_off, &veth))
return false;
- if (offset + len > VLAN_ETH_HLEN + vlan_hlen)
- ethlen -= offset + len - VLAN_ETH_HLEN - vlan_hlen;
+ if (offset + len > VLAN_ETH_HLEN)
+ ethlen -= offset + len - VLAN_ETH_HLEN;
- memcpy(dst_u8, vlanh + offset - vlan_hlen, ethlen);
+ memcpy(dst_u8, vlanh + offset, ethlen);
len -= ethlen;
if (len == 0)
return true;
dst_u8 += ethlen;
- offset = ETH_HLEN + vlan_hlen;
+ offset = ETH_HLEN;
} else {
- offset -= VLAN_HLEN + vlan_hlen;
+ offset -= VLAN_HLEN;
}
return skb_copy_bits(skb, offset + mac_off, dst_u8, len) == 0;
--
2.30.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net 4/6] netfilter: nft_payload: skbuff vlan metadata mangle support
2024-05-22 23:13 [PATCH net 0/6] Netfilter fixes for net Pablo Neira Ayuso
` (2 preceding siblings ...)
2024-05-22 23:13 ` [PATCH net 3/6] netfilter: nft_payload: restore vlan q-in-q match support Pablo Neira Ayuso
@ 2024-05-22 23:13 ` Pablo Neira Ayuso
2024-05-23 9:26 ` Paolo Abeni
2024-05-22 23:13 ` [PATCH net 5/6] netfilter: tproxy: bail out if IP has been disabled on the device Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 6/6] netfilter: nft_fib: allow from forward/input without iif selector Pablo Neira Ayuso
5 siblings, 1 reply; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-05-22 23:13 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Userspace assumes vlan header is present at a given offset, but vlan
offload allows to store this in metadata fields of the skbuff. Hence
mangling vlan results in a garbled packet. Handle this transparently by
adding a parser to the kernel.
If vlan metadata is present and payload offset is over 12 bytes (source
and destination mac address fields), then subtract vlan header present
in vlan metadata, otherwise mangle vlan metadata based on offset and
length, extracting data from the source register.
This is similar to:
8cfd23e67401 ("netfilter: nft_payload: work around vlan header stripping")
to deal with vlan payload mangling.
Fixes: 7ec3f7b47b8d ("netfilter: nft_payload: add packet mangling support")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/nft_payload.c | 72 +++++++++++++++++++++++++++++++++----
1 file changed, 65 insertions(+), 7 deletions(-)
diff --git a/net/netfilter/nft_payload.c b/net/netfilter/nft_payload.c
index a3cb5dbcb362..e1af7b5e70c6 100644
--- a/net/netfilter/nft_payload.c
+++ b/net/netfilter/nft_payload.c
@@ -145,12 +145,12 @@ int nft_payload_inner_offset(const struct nft_pktinfo *pkt)
return pkt->inneroff;
}
-static bool nft_payload_need_vlan_copy(const struct nft_payload *priv)
+static bool nft_payload_need_vlan_adjust(u32 offset, u32 len)
{
- unsigned int len = priv->offset + priv->len;
+ unsigned int boundary = offset + len;
/* data past ether src/dst requested, copy needed */
- if (len > offsetof(struct ethhdr, h_proto))
+ if (boundary > offsetof(struct ethhdr, h_proto))
return true;
return false;
@@ -174,7 +174,7 @@ void nft_payload_eval(const struct nft_expr *expr,
goto err;
if (skb_vlan_tag_present(skb) &&
- nft_payload_need_vlan_copy(priv)) {
+ nft_payload_need_vlan_adjust(priv->offset, priv->len)) {
if (!nft_payload_copy_vlan(dest, skb,
priv->offset, priv->len))
goto err;
@@ -801,21 +801,79 @@ struct nft_payload_set {
u8 csum_flags;
};
+/* This is not struct vlan_hdr. */
+struct nft_payload_vlan_hdr {
+ __be16 h_vlan_proto;
+ __be16 h_vlan_TCI;
+};
+
+static bool
+nft_payload_set_vlan(const u32 *src, struct sk_buff *skb, u8 offset, u8 len,
+ int *vlan_hlen)
+{
+ struct nft_payload_vlan_hdr *vlanh;
+ __be16 vlan_proto;
+ __be16 vlan_tci;
+
+ if (offset >= offsetof(struct vlan_ethhdr, h_vlan_encapsulated_proto)) {
+ *vlan_hlen = VLAN_HLEN;
+ return true;
+ }
+
+ switch (offset) {
+ case offsetof(struct vlan_ethhdr, h_vlan_proto):
+ if (len == 2) {
+ vlan_proto = nft_reg_load16(src);
+ skb->vlan_proto = vlan_proto;
+ } else if (len == 4) {
+ vlanh = (struct nft_payload_vlan_hdr *)src;
+ __vlan_hwaccel_put_tag(skb, vlanh->h_vlan_proto,
+ ntohs(vlanh->h_vlan_TCI));
+ } else {
+ return false;
+ }
+ break;
+ case offsetof(struct vlan_ethhdr, h_vlan_TCI):
+ if (len != 2)
+ return false;
+
+ vlan_tci = ntohs(nft_reg_load16(src));
+ skb->vlan_tci = vlan_tci;
+ break;
+ default:
+ return false;
+ }
+
+ return true;
+}
+
static void nft_payload_set_eval(const struct nft_expr *expr,
struct nft_regs *regs,
const struct nft_pktinfo *pkt)
{
const struct nft_payload_set *priv = nft_expr_priv(expr);
- struct sk_buff *skb = pkt->skb;
const u32 *src = ®s->data[priv->sreg];
- int offset, csum_offset;
+ int offset, csum_offset, vlan_hlen = 0;
+ struct sk_buff *skb = pkt->skb;
__wsum fsum, tsum;
switch (priv->base) {
case NFT_PAYLOAD_LL_HEADER:
if (!skb_mac_header_was_set(skb))
goto err;
- offset = skb_mac_header(skb) - skb->data;
+
+ if (skb_vlan_tag_present(skb) &&
+ nft_payload_need_vlan_adjust(priv->offset, priv->len)) {
+ if (!nft_payload_set_vlan(src, skb,
+ priv->offset, priv->len,
+ &vlan_hlen))
+ goto err;
+
+ if (!vlan_hlen)
+ return;
+ }
+
+ offset = skb_mac_header(skb) - skb->data - vlan_hlen;
break;
case NFT_PAYLOAD_NETWORK_HEADER:
offset = skb_network_offset(skb);
--
2.30.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net 5/6] netfilter: tproxy: bail out if IP has been disabled on the device
2024-05-22 23:13 [PATCH net 0/6] Netfilter fixes for net Pablo Neira Ayuso
` (3 preceding siblings ...)
2024-05-22 23:13 ` [PATCH net 4/6] netfilter: nft_payload: skbuff vlan metadata mangle support Pablo Neira Ayuso
@ 2024-05-22 23:13 ` Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 6/6] netfilter: nft_fib: allow from forward/input without iif selector Pablo Neira Ayuso
5 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-05-22 23:13 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
From: Florian Westphal <fw@strlen.de>
syzbot reports:
general protection fault, probably for non-canonical address 0xdffffc0000000003: 0000 [#1] PREEMPT SMP KASAN PTI
KASAN: null-ptr-deref in range [0x0000000000000018-0x000000000000001f]
[..]
RIP: 0010:nf_tproxy_laddr4+0xb7/0x340 net/ipv4/netfilter/nf_tproxy_ipv4.c:62
Call Trace:
nft_tproxy_eval_v4 net/netfilter/nft_tproxy.c:56 [inline]
nft_tproxy_eval+0xa9a/0x1a00 net/netfilter/nft_tproxy.c:168
__in_dev_get_rcu() can return NULL, so check for this.
Reported-and-tested-by: syzbot+b94a6818504ea90d7661@syzkaller.appspotmail.com
Fixes: cc6eb4338569 ("tproxy: use the interface primary IP address as a default value for --on-ip")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/ipv4/netfilter/nf_tproxy_ipv4.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/ipv4/netfilter/nf_tproxy_ipv4.c b/net/ipv4/netfilter/nf_tproxy_ipv4.c
index 69e331799604..73e66a088e25 100644
--- a/net/ipv4/netfilter/nf_tproxy_ipv4.c
+++ b/net/ipv4/netfilter/nf_tproxy_ipv4.c
@@ -58,6 +58,8 @@ __be32 nf_tproxy_laddr4(struct sk_buff *skb, __be32 user_laddr, __be32 daddr)
laddr = 0;
indev = __in_dev_get_rcu(skb->dev);
+ if (!indev)
+ return daddr;
in_dev_for_each_ifa_rcu(ifa, indev) {
if (ifa->ifa_flags & IFA_F_SECONDARY)
--
2.30.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net 6/6] netfilter: nft_fib: allow from forward/input without iif selector
2024-05-22 23:13 [PATCH net 0/6] Netfilter fixes for net Pablo Neira Ayuso
` (4 preceding siblings ...)
2024-05-22 23:13 ` [PATCH net 5/6] netfilter: tproxy: bail out if IP has been disabled on the device Pablo Neira Ayuso
@ 2024-05-22 23:13 ` Pablo Neira Ayuso
5 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-05-22 23:13 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
From: Eric Garver <eric@garver.life>
This removes the restriction of needing iif selector in the
forward/input hooks for fib lookups when requested result is
oif/oifname.
Removing this restriction allows "loose" lookups from the forward hooks.
Fixes: be8be04e5ddb ("netfilter: nft_fib: reverse path filter for policy-based routing on iif")
Signed-off-by: Eric Garver <eric@garver.life>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/nft_fib.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/net/netfilter/nft_fib.c b/net/netfilter/nft_fib.c
index 37cfe6dd712d..b58f62195ff3 100644
--- a/net/netfilter/nft_fib.c
+++ b/net/netfilter/nft_fib.c
@@ -35,11 +35,9 @@ int nft_fib_validate(const struct nft_ctx *ctx, const struct nft_expr *expr,
switch (priv->result) {
case NFT_FIB_RESULT_OIF:
case NFT_FIB_RESULT_OIFNAME:
- hooks = (1 << NF_INET_PRE_ROUTING);
- if (priv->flags & NFTA_FIB_F_IIF) {
- hooks |= (1 << NF_INET_LOCAL_IN) |
- (1 << NF_INET_FORWARD);
- }
+ hooks = (1 << NF_INET_PRE_ROUTING) |
+ (1 << NF_INET_LOCAL_IN) |
+ (1 << NF_INET_FORWARD);
break;
case NFT_FIB_RESULT_ADDRTYPE:
if (priv->flags & NFTA_FIB_F_IIF)
--
2.30.2
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH net 4/6] netfilter: nft_payload: skbuff vlan metadata mangle support
2024-05-22 23:13 ` [PATCH net 4/6] netfilter: nft_payload: skbuff vlan metadata mangle support Pablo Neira Ayuso
@ 2024-05-23 9:26 ` Paolo Abeni
2024-05-23 15:12 ` Pablo Neira Ayuso
0 siblings, 1 reply; 20+ messages in thread
From: Paolo Abeni @ 2024-05-23 9:26 UTC (permalink / raw)
To: Pablo Neira Ayuso, netfilter-devel; +Cc: davem, netdev, kuba, edumazet, fw
On Thu, 2024-05-23 at 01:13 +0200, Pablo Neira Ayuso wrote:
> @@ -801,21 +801,79 @@ struct nft_payload_set {
> u8 csum_flags;
> };
>
> +/* This is not struct vlan_hdr. */
> +struct nft_payload_vlan_hdr {
> + __be16 h_vlan_proto;
> + __be16 h_vlan_TCI;
> +};
> +
> +static bool
> +nft_payload_set_vlan(const u32 *src, struct sk_buff *skb, u8 offset, u8 len,
> + int *vlan_hlen)
> +{
> + struct nft_payload_vlan_hdr *vlanh;
> + __be16 vlan_proto;
> + __be16 vlan_tci;
> +
> + if (offset >= offsetof(struct vlan_ethhdr, h_vlan_encapsulated_proto)) {
> + *vlan_hlen = VLAN_HLEN;
> + return true;
> + }
> +
> + switch (offset) {
> + case offsetof(struct vlan_ethhdr, h_vlan_proto):
> + if (len == 2) {
> + vlan_proto = nft_reg_load16(src);
I'm sorry but the above introduces build warning due to endianess
mismatch (host -> be)
> + skb->vlan_proto = vlan_proto;
> + } else if (len == 4) {
> + vlanh = (struct nft_payload_vlan_hdr *)src;
> + __vlan_hwaccel_put_tag(skb, vlanh->h_vlan_proto,
> + ntohs(vlanh->h_vlan_TCI));
> + } else {
> + return false;
> + }
> + break;
> + case offsetof(struct vlan_ethhdr, h_vlan_TCI):
> + if (len != 2)
> + return false;
> +
> + vlan_tci = ntohs(nft_reg_load16(src));
Similar things here htons() expect a be short int and is receiving a
u16, vlan_tci is 'be' and the assigned data uses host endianess.
Could you please address the above?
Thanks!
Paolo
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net 4/6] netfilter: nft_payload: skbuff vlan metadata mangle support
2024-05-23 9:26 ` Paolo Abeni
@ 2024-05-23 15:12 ` Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-05-23 15:12 UTC (permalink / raw)
To: Paolo Abeni; +Cc: netfilter-devel, davem, netdev, kuba, edumazet, fw
On Thu, May 23, 2024 at 11:26:45AM +0200, Paolo Abeni wrote:
> On Thu, 2024-05-23 at 01:13 +0200, Pablo Neira Ayuso wrote:
> > @@ -801,21 +801,79 @@ struct nft_payload_set {
> > u8 csum_flags;
> > };
> >
> > +/* This is not struct vlan_hdr. */
> > +struct nft_payload_vlan_hdr {
> > + __be16 h_vlan_proto;
> > + __be16 h_vlan_TCI;
> > +};
> > +
> > +static bool
> > +nft_payload_set_vlan(const u32 *src, struct sk_buff *skb, u8 offset, u8 len,
> > + int *vlan_hlen)
> > +{
> > + struct nft_payload_vlan_hdr *vlanh;
> > + __be16 vlan_proto;
> > + __be16 vlan_tci;
> > +
> > + if (offset >= offsetof(struct vlan_ethhdr, h_vlan_encapsulated_proto)) {
> > + *vlan_hlen = VLAN_HLEN;
> > + return true;
> > + }
> > +
> > + switch (offset) {
> > + case offsetof(struct vlan_ethhdr, h_vlan_proto):
> > + if (len == 2) {
> > + vlan_proto = nft_reg_load16(src);
>
> I'm sorry but the above introduces build warning due to endianess
> mismatch (host -> be)
>
> > + skb->vlan_proto = vlan_proto;
> > + } else if (len == 4) {
> > + vlanh = (struct nft_payload_vlan_hdr *)src;
> > + __vlan_hwaccel_put_tag(skb, vlanh->h_vlan_proto,
> > + ntohs(vlanh->h_vlan_TCI));
> > + } else {
> > + return false;
> > + }
> > + break;
> > + case offsetof(struct vlan_ethhdr, h_vlan_TCI):
> > + if (len != 2)
> > + return false;
> > +
> > + vlan_tci = ntohs(nft_reg_load16(src));
>
> Similar things here htons() expect a be short int and is receiving a
> u16, vlan_tci is 'be' and the assigned data uses host endianess.
>
>
> Could you please address the above?
Sure, I will post v2.
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net 0/6] Netfilter fixes for net
@ 2024-12-05 0:28 Pablo Neira Ayuso
0 siblings, 0 replies; 20+ messages in thread
From: Pablo Neira Ayuso @ 2024-12-05 0:28 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains Netfilter fixes for net:
1) Fix esoteric undefined behaviour due to uninitialized stack access
in ip_vs_protocol_init(), from Jinghao Jia.
2) Fix iptables xt_LED slab-out-of-bounds due to incorrect sanitization
of the led string identifier, reported by syzbot. Patch from
Dmitry Antipov.
3) Remove WARN_ON_ONCE reachable from userspace to check for the maximum
cgroup level, nft_socket cgroup matching is restricted to 255 levels,
but cgroups allow for INT_MAX levels by default. Reported by syzbot.
4) Fix nft_inner incorrect use of percpu area to store tunnel parser
context with softirqs, resulting in inconsistent inner header
offsets that could lead to bogus rule mismatches, reported by syzbot.
5) Grab module reference on ipset core while requesting set type modules,
otherwise kernel crash is possible by removing ipset core module,
patch from Phil Sutter.
6) Fix possible double-free in nft_hash garbage collector due to unstable
walk interator that can provide twice the same element. Use a sequence
number to skip expired/dead elements that have been already scheduled
for removal. Based on patch from Laurent Fasnach
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-12-05
Thanks.
----------------------------------------------------------------
The following changes since commit 04f5cb48995d51deed0af71aaba1b8699511313f:
Documentation: tls_offload: fix typos and grammar (2024-11-28 12:09:06 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-12-05
for you to fetch changes up to 7ffc7481153bbabf3332c6a19b289730c7e1edf5:
netfilter: nft_set_hash: skip duplicated elements pending gc run (2024-12-04 21:37:41 +0100)
----------------------------------------------------------------
netfilter pull request 24-12-05
----------------------------------------------------------------
Dmitry Antipov (1):
netfilter: x_tables: fix LED ID check in led_tg_check()
Jinghao Jia (1):
ipvs: fix UB due to uninitialized stack access in ip_vs_protocol_init()
Pablo Neira Ayuso (3):
netfilter: nft_socket: remove WARN_ON_ONCE on maximum cgroup level
netfilter: nft_inner: incorrect percpu area handling under softirq
netfilter: nft_set_hash: skip duplicated elements pending gc run
Phil Sutter (1):
netfilter: ipset: Hold module reference while requesting a module
include/net/netfilter/nf_tables_core.h | 1 +
net/netfilter/ipset/ip_set_core.c | 5 +++
net/netfilter/ipvs/ip_vs_proto.c | 4 +--
net/netfilter/nft_inner.c | 57 +++++++++++++++++++++++++++-------
net/netfilter/nft_set_hash.c | 16 ++++++++++
net/netfilter/nft_socket.c | 2 +-
net/netfilter/xt_LED.c | 4 ++-
7 files changed, 72 insertions(+), 17 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2024-12-05 0:29 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-22 23:13 [PATCH net 0/6] Netfilter fixes for net Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 1/6] netfilter: nfnetlink_queue: acquire rcu_read_lock() in instance_destroy_rcu() Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 2/6] netfilter: ipset: Add list flush to cancel_gc Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 3/6] netfilter: nft_payload: restore vlan q-in-q match support Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 4/6] netfilter: nft_payload: skbuff vlan metadata mangle support Pablo Neira Ayuso
2024-05-23 9:26 ` Paolo Abeni
2024-05-23 15:12 ` Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 5/6] netfilter: tproxy: bail out if IP has been disabled on the device Pablo Neira Ayuso
2024-05-22 23:13 ` [PATCH net 6/6] netfilter: nft_fib: allow from forward/input without iif selector Pablo Neira Ayuso
-- strict thread matches above, loose matches on Subject: below --
2024-12-05 0:28 [PATCH net 0/6] Netfilter fixes for net Pablo Neira Ayuso
2024-04-04 10:43 Pablo Neira Ayuso
2024-01-31 22:59 Pablo Neira Ayuso
2024-01-24 19:12 Pablo Neira Ayuso
2023-12-06 18:03 Pablo Neira Ayuso
2023-11-15 18:45 Pablo Neira Ayuso
2023-07-05 23:04 Pablo Neira Ayuso
2023-06-27 6:52 Pablo Neira Ayuso
2022-02-10 23:10 Pablo Neira Ayuso
2022-02-04 15:18 Pablo Neira Ayuso
2021-07-23 15:54 Pablo Neira Ayuso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).