{"id":34934,"date":"2026-10-09T16:32:29","date_gmt":"2026-10-09T08:32:29","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-19574"},"modified":"2026-10-09T16:32:29","modified_gmt":"2026-10-09T08:32:29","slug":"cve-2026-19574","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-19574","title":{"rendered":"CVE-2026-19574 [HIGH] &#8211; The ARM64 MMU back-end allocated address space identifiers (ASIDs) for memory domains with"},"content":{"rendered":"<p>The ARM64 MMU back-end allocated address space identifiers (ASIDs) for memory domains with a bare round-robin counter in arch_mem_domain_init() (arch\/arm64\/core\/mmu.c). VM_ASID_BITS is 8, so only 255 ASIDs exist; once the counter wrapped, arch_mem_domain_init() could hand an ASID to a new domain while a still-live domain held the same one. Domain-private mappings are installed non-global (MT_NG), so the ASID is the only tag separating one domain&#8217;s cached translations from another&#8217;s in the TLB.<\/p>\n<p>The context-switch path in z_arm64_swap_ptables() only flushes the TLB when the outgoing and incoming domains carry the same ASID, which does not cover a duplicate reached through a third domain: for domains A and C sharing an ASID and an unrelated domain B, the schedule A -&gt; B -&gt; C never takes the flush branch, so the ASID-tagged entries A populated remain resident while C runs. Under SMP two live domains sharing an ASID can additionally be resident on two CPUs at once, which the architecture does not allow for distinct translation-table sets.<\/p>\n<p>Triggering the wrap requires a CONFIG_USERSPACE application on ARM64 that creates more than 255 memory domains over its lifetime; k_mem_domain_init() and k_mem_domain_deinit() are supervisor-only APIs and are not exposed as syscalls, so an unprivileged thread cannot drive the counter directly. Once two live domains alias, however, a user-mode thread in one domain can read and write memory belonging to the other domain&#8217;s partitions and thread stacks with that domain&#8217;s permissions, defeating the memory-domain isolation boundary.<\/p>\n<p>The fix scans the live domain_list before assigning an ASID, advances the round-robin counter past ASIDs already in use, and returns -ENOMEM when all are taken, so domain creation fails closed instead of silently aliasing.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The ARM64 MMU back-end allocated address space identifiers (ASIDs) for memory domains with a bare round-robin counter in arch_mem_domain_init() (arch\/arm64\/core\/mmu.c). VM_ASID_BITS is 8, so only 255 <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-34934","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/34934","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=34934"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=34934"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=34934"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}