Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-98547— af_packet: fix integer overflow in prb_calc_retire_blk_tmo()

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

在 Linux 内核中,以下漏洞已得到修复: af_packet:修复 prb_calc_retire_blk_tmo() 中的整数溢出问题 函数使用 32 位整数进行算术计算: 根据对验证逻辑的理解, 由用户控制,而 仅拒绝小于等于 0 的整数值或未对齐页大小的值。因此,256 MiB 的块大小可以通过验证(且 甚至为此提供了 回退机制)。 当 为 (即 256 MiB)时,乘以 8 后会发生溢出,结果为 (即 -2147483648)。若网卡报告的速率为 1 Gbps(此时除数 ),该函数最终会返回 。 触发该

AI Predicted 7.8 Difficulty: Easy

Affected Version Matrix 18

VendorProduct Version RangeStatus
Linux Linux f6fb8f100b807378fda19e83e5ac6828b638603a< 02afd75649a4e001031ed82153a5c39312ec0737 affected
f6fb8f100b807378fda19e83e5ac6828b638603a< eb5b3838b9200dac04bfe33483db0ee8287456fb affected
f6fb8f100b807378fda19e83e5ac6828b638603a< 297acc571d5813db76b147c745b91031d5f9c960 affected
f6fb8f100b807378fda19e83e5ac6828b638603a< be1aacff399d519cc48d6b34354a54dd79041140 affected
f6fb8f100b807378fda19e83e5ac6828b638603a< b2bcc6a254d6f27823a56787668ae4ee8cdb6e71 affected
f6fb8f100b807378fda19e83e5ac6828b638603a< 6279211e7d2456ecd195d236c9ee5e5c6fa5a17a affected
f6fb8f100b807378fda19e83e5ac6828b638603a< 218a944b9e035d4b47d59c69af6ca13319da15fb affected
f6fb8f100b807378fda19e83e5ac6828b638603a< 56d82862a0a243ac14ba11b6d7b57ddc2d064b95 affected
… +10 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-98547

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
af_packet: fix integer overflow in prb_calc_retire_blk_tmo()
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: af_packet: fix integer overflow in prb_calc_retire_blk_tmo() prb_calc_retire_blk_tmo() computes in 32-bit int arithmetic: mbits = (blk_size_in_bytes * 8) / (1024 * 1024); If I'm reading the validation right, tp_block_size is user controlled and packet_set_ring() only rejects values that are <= 0 as int or not page aligned, so a 256MiB block goes right through (and alloc_one_pg_vec_page() even has a vzalloc fallback for it). 0x10000000 * 8 wraps to INT_MIN, and on a NIC reporting 1 Gbps (div == 1) the function ends up returning -2047. The condition is actually (8 * size) mod 2^32 >= 2^31 && div == 1, so the trigger set is [256,512), [768,1024), [1280,1536) and [1792,2048) MiB. Other sizes wrap to non-negative values and faster links divide the unsigned value back below 2^31, which is why this doesn't blow up for everyone. What makes it fatal is what happens next in init_prb_bdqc(): p1->interval_ktime = ms_to_ktime(prb_calc_retire_blk_tmo(...)); hrtimer_start(&p1->retire_blk_timer, p1->interval_ktime, HRTIMER_MODE_REL_SOFT); A negative relative timeout expires immediately. The callback unconditionally returns HRTIMER_RESTART, and hrtimer_forward() turns the negative interval into hrtimer_resolution: if (interval < hrtimer_resolution) interval = hrtimer_resolution; So the SOFT timer re-fires at the maximum rate forever, holding sk_receive_queue.lock each pass. One CPU spins in softirq until the socket is closed. Repeat with more rings and the machine is gone. The overflow itself is ancient - it was introduced together with TPACKET_V3 in f6fb8f100b80 ("af-packet: TPACKET_V3 flexible buffer implementation."). Its effect prior to f7460d2989fa ("net: af_packet: Use hrtimer to do the retire operation", v6.18) was not as clear-cut, though: the return value was stored into an unsigned short retire_blk_tov, so a negative result was truncated, and a 0-jiffy delay loop could be programmed as well. Neither is nearly as detrimental as the immediate maximum-rate spin the hrtimer conversion turned it into. (Unrelated to CVE-2019-20812 - that one was the ethtool failure path returning 0, which now returns DEFAULT_PRB_RETIRE_TOV.) Reproducer, needs CAP_NET_RAW (a --network host container has it by default) and a 1 Gbps NIC (QEMU e1000 works): int fd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); bind(fd, ...); int v = TPACKET_V3; setsockopt(fd, SOL_PACKET, PACKET_VERSION, &v, sizeof(v)); struct tpacket_req3 req = { .tp_block_size = 0x10000000, .tp_block_nr = 1, .tp_frame_size = 2048, .tp_frame_nr = 0x10000000 / 2048, .tp_retire_blk_tov = 0, }; setsockopt(fd, SOL_PACKET, PACKET_RX_RING, &req, sizeof(req)); Compute in 64 bits instead. The operands are already bounded by the existing validation, so nothing else changes. If you'd prefer a different fix, just say so and I'll respin.
Source: CVE Program / CVE List V5
CVSS Information
N/A
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux f6fb8f100b807378fda19e83e5ac6828b638603a ~ 02afd75649a4e001031ed82153a5c39312ec0737 -
Linux Linux 3.2 -

II. Public POCs for CVE-2026-98547

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-98547

请登录查看更多情报信息。

Patches & Fixes for CVE-2026-98547 (7)

Same Patch Batch · Linux · 2026-10-18 · 436 CVEs total

CVE-2026-98583 nfc: nfcmrvl: validate helper command length before pull
CVE-2026-98570 net: ipv6: keep room for the mac header in dst_dev_overhead()
CVE-2026-98571 net: stmmac: clear stale buf->page after recycling on skb build failure
CVE-2026-98572 bpf: Fix immediate JMP JEQ/JNE on MIPS32
CVE-2026-98573 net: skbuff: fix pull-bound underflow in skb_checksum_setup_ipv6()
CVE-2026-98574 net: bcmgenet: stop Tx NAPI before disabling the queues
CVE-2026-98575 nfc: pn533: fix OOB read in pn533_acr122_is_rx_frame_valid()
CVE-2026-98576 nfc: llcp: fix slab-out-of-bounds reads when logging service names
CVE-2026-98577 nfc: llcp: fix WKS SAP hijacking via prefix match in nfc_llcp_wks_sap()
CVE-2026-98578 nfc: st21nfca: validate ISO15693 inventory length
CVE-2026-98579 nfc: llcp: fix sdreq TLV list leak on parse/alloc/send failure
CVE-2026-98580 nfc: llcp: Fix race condition in accept_queue lifecycle
CVE-2026-98581 nfc: llcp: Fix list corruption / refcount desync in nfc_llcp_recv_dm()
CVE-2026-98582 nfc: st21nfca: validate received frame size
CVE-2026-98594 tg3: clean up PHYLIB resources on probe failure
CVE-2026-98591 bpf: Fix bounds check for skb-backed dynptrs
CVE-2026-98592 net: spacemit: clear TX descriptor on fragment mapping failure
CVE-2026-98593 s390/debug: Fix NULL pointer dereference in debug_info_copy()
CVE-2026-98590 bpf: Fix bpf_sock context code generation
CVE-2026-98595 udp: remove a disconnected socket from the 4-tuple hash table

Showing top 20 of 436 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2026-98547

No comments yet


Leave a comment