Centos-kernel-stream-9/net/sched
Augusto Caringi bccf7d48eb Merge: CVE-2025-22055: net: fix geneve_opt length integer overflow
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/6769

JIRA: https://issues.redhat.com/browse/RHEL-87973
CVE: CVE-2025-22055

```
commit b27055a08ad4b415dcf15b63034f9cb236f7fb40
Author: Lin Ma <linma@zju.edu.cn>
Date:   Thu Apr 3 00:56:32 2025 +0800

    net: fix geneve_opt length integer overflow

    struct geneve_opt uses 5 bit length for each single option, which
    means every vary size option should be smaller than 128 bytes.

    However, all current related Netlink policies cannot promise this
    length condition and the attacker can exploit a exact 128-byte size
    option to *fake* a zero length option and confuse the parsing logic,
    further achieve heap out-of-bounds read.

    One example crash log is like below:

    [    3.905425] ==================================================================
    [    3.905925] BUG: KASAN: slab-out-of-bounds in nla_put+0xa9/0xe0
    [    3.906255] Read of size 124 at addr ffff888005f291cc by task poc/177
    [    3.906646]
    [    3.906775] CPU: 0 PID: 177 Comm: poc-oob-read Not tainted 6.1.132 #1
    [    3.907131] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
    [    3.907784] Call Trace:
    [    3.907925]  <TASK>
    [    3.908048]  dump_stack_lvl+0x44/0x5c
    [    3.908258]  print_report+0x184/0x4be
    [    3.909151]  kasan_report+0xc5/0x100
    [    3.909539]  kasan_check_range+0xf3/0x1a0
    [    3.909794]  memcpy+0x1f/0x60
    [    3.909968]  nla_put+0xa9/0xe0
    [    3.910147]  tunnel_key_dump+0x945/0xba0
    [    3.911536]  tcf_action_dump_1+0x1c1/0x340
    [    3.912436]  tcf_action_dump+0x101/0x180
    [    3.912689]  tcf_exts_dump+0x164/0x1e0
    [    3.912905]  fw_dump+0x18b/0x2d0
    [    3.913483]  tcf_fill_node+0x2ee/0x460
    [    3.914778]  tfilter_notify+0xf4/0x180
    [    3.915208]  tc_new_tfilter+0xd51/0x10d0
    [    3.918615]  rtnetlink_rcv_msg+0x4a2/0x560
    [    3.919118]  netlink_rcv_skb+0xcd/0x200
    [    3.919787]  netlink_unicast+0x395/0x530
    [    3.921032]  netlink_sendmsg+0x3d0/0x6d0
    [    3.921987]  __sock_sendmsg+0x99/0xa0
    [    3.922220]  __sys_sendto+0x1b7/0x240
    [    3.922682]  __x64_sys_sendto+0x72/0x90
    [    3.922906]  do_syscall_64+0x5e/0x90
    [    3.923814]  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    [    3.924122] RIP: 0033:0x7e83eab84407
    [    3.924331] Code: 48 89 fa 4c 89 df e8 38 aa 00 00 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 1a 5b c3 0f 1f 84 00 00 00 00 00 48 8b 44 24 10 0f 05 <5b> c3 0f 1f 80 00 00 00 00 83 e2 39 83 faf
    [    3.925330] RSP: 002b:00007ffff505e370 EFLAGS: 00000202 ORIG_RAX: 000000000000002c
    [    3.925752] RAX: ffffffffffffffda RBX: 00007e83eaafa740 RCX: 00007e83eab84407
    [    3.926173] RDX: 00000000000001a8 RSI: 00007ffff505e3c0 RDI: 0000000000000003
    [    3.926587] RBP: 00007ffff505f460 R08: 00007e83eace1000 R09: 000000000000000c
    [    3.926977] R10: 0000000000000000 R11: 0000000000000202 R12: 00007ffff505f3c0
    [    3.927367] R13: 00007ffff505f5c8 R14: 00007e83ead1b000 R15: 00005d4fbbe6dcb8

    Fix these issues by enforing correct length condition in related
    policies.

    Fixes: 925d844696 ("netfilter: nft_tunnel: add support for geneve opts")
    Fixes: 4ece477870 ("lwtunnel: add options setting and dumping for geneve")
    Fixes: 0ed5269f9e ("net/sched: add tunnel option support to act_tunnel_key")
    Fixes: 0a6e77784f ("net/sched: allow flower to match tunnel options")
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Link: https://patch.msgid.link/20250402165632.6958-1-linma@zju.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>```

Signed-off-by: CKI Backport Bot <cki-ci-bot+cki-gitlab-backport-bot@redhat.com>

---

<small>Created 2025-04-22 09:01 UTC by backporter - [KWF FAQ](https://red.ht/kernel_workflow_doc) - [Slack #team-kernel-workflow](https://redhat-internal.slack.com/archives/C04LRUPMJQ5) - [Source](https://gitlab.com/cki-project/kernel-workflow/-/blob/main/webhook/utils/backporter.py) - [Documentation](https://gitlab.com/cki-project/kernel-workflow/-/blob/main/docs/README.backporter.md) - [Report an issue](https://issues.redhat.com/secure/CreateIssueDetails!init.jspa?pid=12334433&issuetype=1&priority=4&summary=backporter+webhook+issue&components=kernel-workflow+/+backporter)</small>

Approved-by: Florian Westphal <fwestpha@redhat.com>
Approved-by: Antoine Tenart <atenart@redhat.com>
Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com>

Merged-by: Augusto Caringi <acaringi@redhat.com>
2025-05-21 18:34:51 -03:00
..
Kconfig net: sched: Remove NET_ACT_IPT from Kconfig 2024-05-14 13:13:25 +02:00
Makefile net/sched: Retire ipt action 2024-05-14 13:13:23 +02:00
act_api.c net/sched: act_api: deny mismatched skip_sw/skip_hw flags for actions created by classifiers 2024-11-22 11:07:15 +01:00
act_bpf.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_connmark.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_csum.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_ct.c sched: act_ct: avoid -Wflex-array-member-not-at-end warning 2024-11-22 11:07:14 +01:00
act_ctinfo.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_gact.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_gate.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_ife.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_meta_mark.c
act_meta_skbprio.c
act_meta_skbtcindex.c
act_mirred.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_mpls.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_nat.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_pedit.c net: sched: Annotate struct tc_pedit with __counted_by 2024-09-06 15:01:45 +02:00
act_police.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_sample.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_simple.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_skbedit.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
act_skbmod.c net/sched: act_skbmod: convert comma to semicolon 2024-11-22 11:07:14 +01:00
act_tunnel_key.c net: fix geneve_opt length integer overflow 2025-04-22 09:01:10 +00:00
act_vlan.c tc: adjust network header after 2nd vlan push 2024-11-22 11:07:15 +01:00
cls_api.c net: sched: refine software bypass handling in tc_run 2025-01-20 12:01:29 -05:00
cls_basic.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
cls_bpf.c net: sched: refine software bypass handling in tc_run 2025-01-20 12:01:29 -05:00
cls_cgroup.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
cls_flow.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
cls_flower.c net: fix geneve_opt length integer overflow 2025-04-22 09:01:10 +00:00
cls_fw.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
cls_matchall.c net: sched: refine software bypass handling in tc_run 2025-01-20 12:01:29 -05:00
cls_route.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
cls_u32.c Merge: net: sched: refine software bypass handling in tc_run 2025-02-04 15:39:51 +01:00
em_canid.c net: fill in MODULE_DESCRIPTION()s for net/sched 2024-05-14 13:13:25 +02:00
em_cmp.c net: fill in MODULE_DESCRIPTION()s for net/sched 2024-05-14 13:13:25 +02:00
em_ipset.c
em_ipt.c
em_meta.c net: fill in MODULE_DESCRIPTION()s for net/sched 2024-05-14 13:13:25 +02:00
em_nbyte.c net: fill in MODULE_DESCRIPTION()s for net/sched 2024-05-14 13:13:25 +02:00
em_text.c net: fill in MODULE_DESCRIPTION()s for net/sched 2024-05-14 13:13:25 +02:00
em_u32.c net: fill in MODULE_DESCRIPTION()s for net/sched 2024-05-14 13:13:25 +02:00
ematch.c net_sched: reject TCF_EM_SIMPLE case for complex ematch module 2023-05-10 20:48:49 +02:00
sch_api.c rtnetlink: do not depend on RTNL for IFLA_TXQLEN output 2024-12-10 10:37:54 +01:00
sch_blackhole.c
sch_cake.c sched: sch_cake: add bounds checks to host bulk flow fairness counts 2025-04-07 16:47:52 -04:00
sch_cbs.c net_sched: sch_cbs: implement lockless cbs_dump() 2024-09-06 15:01:58 +02:00
sch_choke.c net: sched: fix ordering of qlen adjustment 2025-01-08 17:42:32 +01:00
sch_codel.c net_sched: sch_codel: implement lockless codel_dump() 2024-09-06 15:02:02 +02:00
sch_drr.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_etf.c net_sched: sch_tfs: implement lockless etf_dump() 2024-09-06 15:02:03 +02:00
sch_ets.c net_sched: sch_ets: implement lockless ets_dump() 2024-09-06 15:02:04 +02:00
sch_fifo.c pfifo_tail_enqueue: Drop new packet when sch->limit == 0 2025-02-18 15:35:45 +00:00
sch_fq.c net_sched: sch_fq: don't follow the fast path if Tx is behind now 2025-01-08 17:37:42 +01:00
sch_fq_codel.c net_sched: sch_fq_codel: implement lockless fq_codel_dump() 2024-09-06 15:02:05 +02:00
sch_fq_pie.c net_sched: sch_fq_pie: implement lockless fq_pie_dump() 2024-09-06 15:02:06 +02:00
sch_frag.c net: Don't include filter.h from net/sock.h 2022-07-13 10:49:16 +02:00
sch_generic.c net: fix races in netdev_tx_sent_queue()/dev_watchdog() 2024-11-22 11:07:15 +01:00
sch_gred.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_hfsc.c net_sched: sch_hfsc: implement lockless accesses to q->defcls 2024-09-06 15:02:07 +02:00
sch_hhf.c net_sched: sch_hhf: implement lockless hhf_dump() 2024-09-06 15:02:07 +02:00
sch_htb.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_ingress.c bpf: Fix too early release of tcx_entry 2024-11-06 19:04:03 +01:00
sch_mq.c net: sched: add rcu annotations around qdisc->qdisc_sleeping 2023-10-13 09:03:10 +02:00
sch_mqprio.c Merge: CNB96: net/ethtool: rebase to v6.11 2024-10-19 08:11:42 +00:00
sch_mqprio_lib.c net: sched: Fill in missing MODULE_DESCRIPTION for qdiscs 2024-05-14 13:13:20 +02:00
sch_mqprio_lib.h net/sched: mqprio: allow per-TC user input of FP adminStatus 2023-10-13 09:03:07 +02:00
sch_multiq.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_netem.c Merge: CVE-2024-46800: sch/netem: fix use after free in netem_dequeue 2024-11-11 08:29:31 +00:00
sch_pie.c net_sched: sch_pie: implement lockless pie_dump() 2024-09-06 15:02:08 +02:00
sch_plug.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_prio.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_qfq.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_red.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_sfb.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_sfq.c net_sched: sch_sfq: annotate data-races around q->perturb_period 2024-09-06 15:02:11 +02:00
sch_skbprio.c net_sched: sch_skbprio: implement lockless skbprio_dump() 2024-09-06 15:02:09 +02:00
sch_taprio.c net: sched: consistently use rcu_replace_pointer() in taprio_change() 2024-11-22 11:07:15 +01:00
sch_tbf.c net/sched: Add module aliases for cls_,sch_,act_ modules 2024-09-06 15:01:42 +02:00
sch_teql.c rtnetlink: do not depend on RTNL for IFLA_TXQLEN output 2024-12-10 10:37:54 +01:00