kernel-4.18.0-553.143.1.el8_10

エラータID: AXSA:2026-1337:51

Release date: 
Thursday, July 23, 2026 - 18:32
Subject: 
kernel-4.18.0-553.143.1.el8_10
Affected Channels: 
Asianux Server 8 for x86_64
Severity: 
High
Description: 

Please update

CVE-2025-71066
In the Linux kernel, the following vulnerability has been resolved: net/sched: ets: Always remove class from active list before deleting in ets_qdisc_change zdi-disclosures@trendmicro.com says: The vulnerability is a race condition between `ets_qdisc_dequeue` and `ets_qdisc_change`. It leads to UAF on `struct Qdisc` object. Attacker requires the capability to create new user and network namespace in order to trigger the bug. See my additional commentary at the end of the analysis. Analysis: static int ets_qdisc_change(struct Qdisc *sch, struct nlattr *opt, struct netlink_ext_ack *extack) { ... // (1) this lock is preventing .change handler (`ets_qdisc_change`) //to race with .dequeue handler (`ets_qdisc_dequeue`) sch_tree_lock(sch); for (i = nbands; i < oldbands; i++) { if (i >= q->nstrict && q->classes[i].qdisc->q.qlen) list_del_init(&q->classes[i].alist); qdisc_purge_queue(q->classes[i].qdisc); } WRITE_ONCE(q->nbands, nbands); for (i = nstrict; i < q->nstrict; i++) { if (q->classes[i].qdisc->q.qlen) { // (2) the class is added to the q->active list_add_tail(&q->classes[i].alist, &q->active); q->classes[i].deficit = quanta[i]; } } WRITE_ONCE(q->nstrict, nstrict); memcpy(q->prio2band, priomap, sizeof(priomap)); for (i = 0; i < q->nbands; i++) WRITE_ONCE(q->classes[i].quantum, quanta[i]); for (i = oldbands; i < q->nbands; i++) { q->classes[i].qdisc = queues[i]; if (q->classes[i].qdisc != &noop_qdisc) qdisc_hash_add(q->classes[i].qdisc, true); } // (3) the qdisc is unlocked, now dequeue can be called in parallel // to the rest of .change handler sch_tree_unlock(sch); ets_offload_change(sch); for (i = q->nbands; i < oldbands; i++) { // (4) we're reducing the refcount for our class's qdisc and // freeing it qdisc_put(q->classes[i].qdisc); // (5) If we call .dequeue between (4) and (5), we will have // a strong UAF and we can control RIP q->classes[i].qdisc = NULL; WRITE_ONCE(q->classes[i].quantum, 0); q->classes[i].deficit = 0; gnet_stats_basic_sync_init(&q->classes[i].bstats); memset(&q->classes[i].qstats, 0, sizeof(q->classes[i].qstats)); } return 0; } Comment: This happens because some of the classes have their qdiscs assigned to NULL, but remain in the active list. This commit fixes this issue by always removing the class from the active list before deleting and freeing its associated qdisc Reproducer Steps (trimmed version of what was sent by zdi-disclosures@trendmicro.com) ``` DEV="${DEV:-lo}" ROOT_HANDLE="${ROOT_HANDLE:-1:}" BAND2_HANDLE="${BAND2_HANDLE:-20:}" # child under 1:2 PING_BYTES="${PING_BYTES:-48}" PING_COUNT="${PING_COUNT:-200000}" PING_DST="${PING_DST:-127.0.0.1}" SLOW_TBF_RATE="${SLOW_TBF_RATE:-8bit}" SLOW_TBF_BURST="${SLOW_TBF_BURST:-100b}" SLOW_TBF_LAT="${SLOW_TBF_LAT:-1s}" cleanup() { tc qdisc del dev "$DEV" root 2>/dev/null } trap cleanup EXIT ip link set "$DEV" up tc qdisc del dev "$DEV" root 2>/dev/null || true tc qdisc add dev "$DEV" root handle "$ROOT_HANDLE" ets bands 2 strict 2 tc qdisc add dev "$DEV" parent 1:2 handle "$BAND2_HANDLE" \ tbf rate "$SLOW_TBF_RATE" burst "$SLOW_TBF_BURST" latency "$SLOW_TBF_LAT" tc filter add dev "$DEV" parent 1: protocol all prio 1 u32 match u32 0 0 flowid 1:2 tc -s qdisc ls dev $DEV ping -I "$DEV" -f -c "$PING_COUNT" -s "$PING_BYTES" -W 0.001 "$PING_DST" \ >/dev/null 2>&1 & tc qdisc change dev "$DEV" root handle "$ROOT_HANDLE" ets bands 2 strict 0 tc qdisc change dev "$DEV" root handle "$ROOT_HANDLE" ets bands 2 strict 2 tc -s qdisc ls dev $DEV tc qdisc del dev "$DEV" parent ---truncated---
CVE-2025-71089
In the Linux kernel, the following vulnerability has been resolved: iommu: disable SVA when CONFIG_X86 is set Patch series "Fix stale IOTLB entries for kernel address space", v7. This proposes a fix for a security vulnerability related to IOMMU Shared Virtual Addressing (SVA). In an SVA context, an IOMMU can cache kernel page table entries. When a kernel page table page is freed and reallocated for another purpose, the IOMMU might still hold stale, incorrect entries. This can be exploited to cause a use-after-free or write-after-free condition, potentially leading to privilege escalation or data corruption. This solution introduces a deferred freeing mechanism for kernel page table pages, which provides a safe window to notify the IOMMU to invalidate its caches before the page is reused. This patch (of 8): In the IOMMU Shared Virtual Addressing (SVA) context, the IOMMU hardware shares and walks the CPU's page tables. The x86 architecture maps the kernel's virtual address space into the upper portion of every process's page table. Consequently, in an SVA context, the IOMMU hardware can walk and cache kernel page table entries. The Linux kernel currently lacks a notification mechanism for kernel page table changes, specifically when page table pages are freed and reused. The IOMMU driver is only notified of changes to user virtual address mappings. This can cause the IOMMU's internal caches to retain stale entries for kernel VA. Use-After-Free (UAF) and Write-After-Free (WAF) conditions arise when kernel page table pages are freed and later reallocated. The IOMMU could misinterpret the new data as valid page table entries. The IOMMU might then walk into attacker-controlled memory, leading to arbitrary physical memory DMA access or privilege escalation. This is also a Write-After-Free issue, as the IOMMU will potentially continue to write Accessed and Dirty bits to the freed memory while attempting to walk the stale page tables. Currently, SVA contexts are unprivileged and cannot access kernel mappings. However, the IOMMU will still walk kernel-only page tables all the way down to the leaf entries, where it realizes the mapping is for the kernel and errors out. This means the IOMMU still caches these intermediate page table entries, making the described vulnerability a real concern. Disable SVA on x86 architecture until the IOMMU can receive notification to flush the paging cache before freeing the CPU kernel page table pages.
CVE-2026-31411
In the Linux kernel, the following vulnerability has been resolved: net: atm: fix crash due to unvalidated vcc pointer in sigd_send() Reproducer available at [1]. The ATM send path (sendmsg -> vcc_sendmsg -> sigd_send) reads the vcc pointer from msg->vcc and uses it directly without any validation. This pointer comes from userspace via sendmsg() and can be arbitrarily forged: int fd = socket(AF_ATMSVC, SOCK_DGRAM, 0); ioctl(fd, ATMSIGD_CTRL); // become ATM signaling daemon struct msghdr msg = { .msg_iov = &iov, ... }; *(unsigned long *)(buf + 4) = 0xdeadbeef; // fake vcc pointer sendmsg(fd, &msg, 0); // kernel dereferences 0xdeadbeef In normal operation, the kernel sends the vcc pointer to the signaling daemon via sigd_enq() when processing operations like connect(), bind(), or listen(). The daemon is expected to return the same pointer when responding. However, a malicious daemon can send arbitrary pointer values. Fix this by introducing find_get_vcc() which validates the pointer by searching through vcc_hash (similar to how sigd_close() iterates over all VCCs), and acquires a reference via sock_hold() if found. Since struct atm_vcc embeds struct sock as its first member, they share the same lifetime. Therefore using sock_hold/sock_put is sufficient to keep the vcc alive while it is being used. Note that there may be a race with sigd_close() which could mark the vcc with various flags (e.g., ATM_VF_RELEASED) after find_get_vcc() returns. However, sock_hold() guarantees the memory remains valid, so this race only affects the logical state, not memory safety. [1]: https://gist.github.com/mrpre/1ba5949c45529c511152e2f4c755b0f3
CVE-2026-43499
In the Linux kernel, the following vulnerability has been resolved: rtmutex: Use waiter::task instead of current in remove_waiter() remove_waiter() is used by the slowlock paths, but it is also used for proxy-lock rollback in rt_mutex_start_proxy_lock() when invoked from futex_requeue(). In the latter case waiter::task is not current, but remove_waiter() operates on current for the dequeue operation. That results in several problems: 1) the rbtree dequeue happens without waiter::task::pi_lock being held 2) the waiter task's pi_blocked_on state is not cleared, which leaves a dangling pointer primed for UAF around. 3) rt_mutex_adjust_prio_chain() operates on the wrong top priority waiter task Use waiter::task instead of current in all related operations in remove_waiter() to cure those problems. [ tglx: Fixup rt_mutex_adjust_prio_chain(), add a comment and amend the changelog ]
CVE-2026-46113
In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Fix shadow paging use-after-free due to unexpected GFN The shadow MMU computes GFNs for direct shadow pages using sp->gfn plus the SPTE index. This assumption breaks for shadow paging if the guest page tables are modified between VM entries (similar to commit aad885e77496, "KVM: x86/mmu: Drop/zap existing present SPTE even when creating an MMIO SPTE", 2026-03-27). The flow is as follows: - a PDE is installed for a 2MB mapping, and a page in that area is accessed. KVM creates a kvm_mmu_page consisting of 512 4KB pages; the kvm_mmu_page is marked by FNAME(fetch) as direct-mapped because the guest's mapping is a huge page (and thus contiguous). - the PDE mapping is changed from outside the guest. - the guest accesses another page in the same 2MB area. KVM installs a new leaf SPTE and rmap entry; the SPTE uses the "correct" GFN (i.e. based on the new mapping, as changed in the previous step) but that GFN is outside of the [sp->gfn, sp->gfn + 511] range; therefore the rmap entry cannot be found and removed when the kvm_mmu_page is zapped. - the memslot that covers the first 2MB mapping is deleted, and the kvm_mmu_page for the now-invalid GPA is zapped. However, rmap_remove() only looks at the [sp->gfn, sp->gfn + 511] range established in step 1, and fails to find the rmap entry that was recorded by step 3. - any operation that causes an rmap walk for the same page accessed by step 3 then walks a stale rmap and dereferences a freed kvm_mmu_page. This includes dirty logging or MMU notifier invalidations (e.g., from MADV_DONTNEED). The underlying issue is that KVM's walking of shadow PTEs assumes that if a SPTE is present when KVM wants to install a non-leaf SPTE, then the existing kvm_mmu_page must be for the correct gfn. Because the only way for the gfn to be wrong is if KVM messed up and failed to zap a SPTE... which shouldn't happen, but *actually* only happens in response to a guest write. That bug dates back literally forever, as even the first version of KVM assumes that the GFN matches and walks into the "wrong" shadow page. However, that was only an imprecision until 2032a93d66fa ("KVM: MMU: Don't allocate gfns page for direct mmu pages") came along. Fix it by checking for a target gfn mismatch and zapping the existing SPTE. That way the old SP and rmap entries are gone, KVM installs the rmap in the right location, and everyone is happy.
CVE-2026-53166
REJECTED
CVE-2026-53266
In the Linux kernel, the following vulnerability has been resolved: netfilter: bridge: make ebt_snat ARP rewrite writable The ebtables SNAT target keeps the Ethernet source address rewrite behind skb_ensure_writable(skb, 0). This is intentional: at the bridge ebtables hooks the Ethernet header is addressed through skb_mac_header()/eth_hdr(), while skb->data points at the Ethernet payload. Asking skb_ensure_writable() for ETH_HLEN bytes would check the payload, not the Ethernet header, and would reintroduce the small packet regression fixed by commit 63137bc5882a. However, the optional ARP sender hardware address rewrite is different. It writes through skb_store_bits() at an offset relative to skb->data: skb_store_bits(skb, sizeof(struct arphdr), info->mac, ETH_ALEN) skb_header_pointer() only safely reads the ARP header; it does not make the later sender hardware address range writable. If that range is still held in a nonlinear skb fragment backed by a splice-imported file page, skb_store_bits() maps the frag page and copies the new MAC address directly into it. Ensure the ARP SHA range is writable before reading the ARP header and before calling skb_store_bits().
CVE-2026-53359
In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Fix shadow paging use-after-free due to unexpected role Commit 0cb2af2ea66ad ("KVM: x86: Fix shadow paging use-after-free due to unexpected GFN") fixed a shadow paging mismatch between stored and computed GFNs; the bug could be triggered by changing a PDE mapping from outside the guest, and then deleting a memslot. The rmap_remove() call would miss entries created after the PDE change because the GFN of the leaf SPTE does not match the GFN of the struct kvm_mmu_page. A similar hole however remains if the modified PDE points to a non-leaf page. In this case the gfn can be made to match, but the role does not match: the original large 2MB page creates a kvm_mmu_page with direct=1, while the new 4KB needs a kvm_mmu_page with direct=0. However, kvm_mmu_get_child_sp() does not compare the role, and therefore reuses the page. The next step is installing a leaf (4KB) SPTE on the new path which records an rmap entry under the gfn resolved by the walk. But when that child is zapped its parent kvm_mmu_page has direct=1 and kvm_mmu_page_get_gfn() computes the gfn for the 4KB page as sp->gfn + index instead of using sp->shadowed_translation[] (or sp->gfns[] in older kernels). It therefore fails to remove the recorded entry. When the memslot is dropped the shadow page is freed but the rmap entry survives, as in the scenario that was already fixed. Code that later walks that gfn (dirty logging, MMU notifier invalidation, and so on) dereferences an sptep that lies in the freed page, causing the use-after-free.

Solution: 

Update packages.

Additional Info: 

N/A

Download: 

SRPMS
  1. kernel-4.18.0-553.143.1.el8_10.src.rpm
    MD5: b57b27239932b2ef69a5becfc1a2b778
    SHA-256: 0574bfd0f57e87ad726f888bb121157c0ac3d91b4093b3f7bdec0564b3f8c8c0
    Size: 132.41 MB

Asianux Server 8 for x86_64
  1. bpftool-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 096bbc68ecc057c9c900aa2045ededf8
    SHA-256: 856d299d9c933f30607dde8b69c298464e61e9f6d737a08991ddbfb93191938a
    Size: 11.33 MB
  2. kernel-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: fbe9fad4825b536923c68a9e3e9f74ef
    SHA-256: e16b3c65578d23e3ad53045751ed2495d30ec2f4b2f0df65d667d1a65f986dd7
    Size: 10.60 MB
  3. kernel-abi-stablelists-4.18.0-553.143.1.el8_10.noarch.rpm
    MD5: e5a8c94201e36c677257f286c72ab4d3
    SHA-256: 2a49f050ccf412fbb24765c2e484adcbf327f15915b1a6821c60fd11853143dd
    Size: 10.62 MB
  4. kernel-core-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: b413c475ab5313d8eb0ad521f3ccb370
    SHA-256: b87aa9d711ab13caa7edf0691bd6fb87f2bf1ef8c9219e1b9af197d0436209e0
    Size: 43.65 MB
  5. kernel-cross-headers-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 51ab0ed59902d831ecd87d17e7615cd6
    SHA-256: 530b20d2fd3e47e4e96722e9e24a71b19156a9243fdd3385a87c9adca18976a4
    Size: 15.94 MB
  6. kernel-debug-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 8ba1ff97cbd2df5cbf2c8c762f8779d6
    SHA-256: e4c9b21f022ada6be4af1186da12b3767121a174274bf5243670f543c7ba99f4
    Size: 10.60 MB
  7. kernel-debug-core-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: ee266b245728041e1c45c20b61063bb5
    SHA-256: caf39d712fd12a5e36a619409c687505a1d824d1cf793360feea81a37fc06ec3
    Size: 72.95 MB
  8. kernel-debug-devel-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 42a30d15a88239b6485ce6f0c8df86a0
    SHA-256: e049b3bfb5e46aa70c83e11b37243d50021d4c3c8c55d2e03f82f371627a9029
    Size: 24.45 MB
  9. kernel-debug-modules-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: faf0d49dafbf07de6482e32cb546c807
    SHA-256: f056f3ac808a6ee4bbe18a2034599d72787d9ccd8de4c9768f44d650c5ddd3c1
    Size: 66.05 MB
  10. kernel-debug-modules-extra-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 9d57fe42edaf4bbf0c26c5834450534e
    SHA-256: 996c92d34d683f2dd3b7176db0b87d0a04af257d70abbcc28c38add2347dd7d2
    Size: 11.98 MB
  11. kernel-devel-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 89e799df62424e2e5abbd33ace8e20a8
    SHA-256: 58ab4c59fcc2a18d6d32849e7f4d3707d7ed258694a691f2b54114768b48a85a
    Size: 24.25 MB
  12. kernel-doc-4.18.0-553.143.1.el8_10.noarch.rpm
    MD5: 60803ea02b8f15a7a70503621058a141
    SHA-256: 1e725fb745721e0a2d3556530e44757c7d17bb735f6dff2fc6bf8db8f65bf9eb
    Size: 28.47 MB
  13. kernel-headers-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 746c8bef227e794deff7e489bd762823
    SHA-256: 35be6135e7ae884169282a2831b91a6f5bdbb50e63271abc1511d27387f377b4
    Size: 11.95 MB
  14. kernel-modules-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 8d388d59460a7e8e83a4cb69a677d058
    SHA-256: e8978769a71f54e7aec17eba793eda158e40b93a9c2b2f0466ad7b8e4532b4bb
    Size: 36.44 MB
  15. kernel-modules-extra-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 855a49890c4ca4b2a511f5820b9f1d87
    SHA-256: 2a318c4c1439011d07a89c5772e8c90fd7e3103c6fc4416679c6d3488474c235
    Size: 11.29 MB
  16. kernel-tools-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 6783c5605ab857f030f2ea3f79b175f0
    SHA-256: 7731a3818b61a57b3c4aee071bf448721426b0ec6937025f87a018fbf3ac15d1
    Size: 10.82 MB
  17. kernel-tools-libs-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: f37c28dc2b06fde044fbcad906bbc343
    SHA-256: c8cb85aa7f24b085080fbb1d32b8efebcac9150cbf7a09291530cb499e6dc645
    Size: 10.61 MB
  18. kernel-tools-libs-devel-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: f0b85389029906472de110afb2a22e26
    SHA-256: aa5899c7b397576da2195e8e16a4e21cfc2ac8a21923a0509c4cb35f554e5bd7
    Size: 10.60 MB
  19. perf-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: e5f84bbd2013f9e2568a653fcce41cd0
    SHA-256: 586cb137249bee3a7855567275b335e28f22d8a01e2127f84a25e73d9658bd82
    Size: 12.92 MB
  20. python3-perf-4.18.0-553.143.1.el8_10.x86_64.rpm
    MD5: 19e8ced26d6df38cc0cae261a9e7be35
    SHA-256: 1258d14527499724df35c267849e48b968481bc32dc543a93145beeb6591b588
    Size: 10.72 MB