{"id":3591,"date":"2026-10-16T19:07:16","date_gmt":"2026-10-16T19:07:16","guid":{"rendered":"https:\/\/thedigitalfortress.us\/?p=3591"},"modified":"2026-10-16T19:07:16","modified_gmt":"2026-10-16T19:07:16","slug":"researchers-demonstrate-openbsd-root-exploit-chaining-37-year-old-shared-memory-bug","status":"publish","type":"post","link":"https:\/\/thedigitalfortress.us\/?p=3591","title":{"rendered":"Researchers Demonstrate OpenBSD Root Exploit Chaining 37-Year-Old Shared-Memory Bug"},"content":{"rendered":"<div>\n<p><span class=\"p-author\"><i class=\"icon-font icon-user\">\ue804<\/i><span class=\"author\">Swati Khandelwal<\/span><i class=\"icon-font icon-calendar\">\ue802<\/i><span class=\"author\">Oct 16, 2026<\/span><\/span><span class=\"p-tags\">Vulnerability \/ OpenBSD<\/span><\/p>\n<\/div>\n<div id=\"articlebody\">\n<div class=\"separator\" style=\"clear: both;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgqmitTMm5t8BBKfynqzFAKqJSzh_s7fQczmMm5u95RLUUzuWMubd5DeM8e8EH6YOpP-_gvbYwn8Cd3flsL-nGIupBw5HOo49Orr7J2rqhI99J7U4LcXW6shlxd3w0zFAng1mLw5xGb-F9GRmpDK82GC1-Dcb1gPcvkgl4wVi0-QTEGalDwPmelGE0TtNU\/s1700-nu-rw-lo-l85-e365\/openbsd.jpg\" style=\"clear: left; display: block; float: left;  text-align: center;\"><\/a><\/div>\n<p>A local privilege escalation exploit published today gains root on OpenBSD 7.9 by chaining a roughly 37-year-old integer overflow with a separate kernel flaw, bypassing OpenBSD&#8217;s KARL kernel-address randomization and its SMAP and SMEP hardware protections. Security firm Calif, which found and reported the flaws, published a <a href=\"https:\/\/calif.io\/research\/big-fish\">detailed writeup<\/a> and full proof-of-concept code after OpenBSD shipped patches for both issues in September.<\/p>\n<p>The integer overflow in the shmat(4) attach function was fixed in <a href=\"https:\/\/www.openbsd.org\/errata79.html\">errata 018<\/a>, shipped September 14 as a reliability fix. The reference-counting use-after-free that completes the chain was fixed separately in errata 026, shipped September 30 as a security fix.<\/p>\n<p>Both are available through <code>syspatch<\/code> and cover all architectures. OpenBSD 7.8 also received the integer-overflow fix.<\/p>\n<p>The integer overflow, the entry point for the full chain, is classified as a reliability fix, not a security fix.<\/p>\n<p>No CVE has been assigned for either flaw as of publication. There is no evidence that the vulnerabilities have been used in attacks.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/ai-agent-methods-d\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Cybersecurity\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEh-69Sxi6ukfnlM_EpqEB_hRVymcXAcWTNAJetA9huKutPZuG0OOBUvByDCtP_HokC-gM-AzjX0ZhgneUFVzjCyIduRINFj6Yf0JXRFE17_z82UioyT9eoxH2-XQDoD_hInCxc8V2bQrmtnMN-GUR63bseKn7pLRISqlvUJlfuJq8pgCL-Fot7sQDas9D05\/s728-nu-rw-lo-l85-e365\/nudge-3-d.png\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>The shared-memory attachment counter <code>shm_nattch<\/code> is defined as a signed 16-bit <code>short<\/code> with a maximum value of 32,767 in <a href=\"https:\/\/raw.githubusercontent.com\/weiss\/original-bsd\/master\/sys\/sys\/shm.h\">original BSD sources<\/a> dating to 1988. OpenBSD inherited the type and never widened it.<\/p>\n<p>The exploit maps 127 shared-memory segments and forks 259 processes, pushing the counter past its maximum and wrapping it to \u221232,643. A race condition then triggers a use-after-free: the corrupted reference count causes the kernel to free memory that other processes still use.<\/p>\n<p>A separate out-of-bounds write overwrites multicast-membership counters in the kernel. When the affected socket closes, the resulting decrements modify page-table entries, switching a user-memory mapping to supervisor-accessible and bypassing SMAP and SMEP. The exploit then overwrites a function pointer at a predictable kernel address to run its own code.<\/p>\n<p><iframe loading=\"lazy\" title=\"Big Fish: Exploiting a 37-Year-Old Kernel Bug in OpenBSD\" width=\"500\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/7FO_6nwNCCs?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>\u00abWhile OpenBSD&#8217;s KARL relinks the kernel binary to randomize both function and data addresses, the kernel&#8217;s memory allocators remain deterministic,\u00bb researcher Andrew Griffiths wrote. Both the boot-time and best-fit allocators lack base-address randomization, so early-boot structures, including function pointers in the lo0 and enc0 network-interface handlers, land at the same addresses across reboots on the same hardware. The exploit needs no information-disclosure vulnerability.<\/p>\n<p>Beyond the two errata, Calif proposes four categories of hardening: safe-unlinking for kernel linked lists (already used by FreeBSD and NetBSD), randomization of the page-table self-referential mapping, kernel-allocator randomization, and compiler-based bounds checking.<\/p>\n<p>Calif said it reported the flaws to OpenBSD \u00abearlier this year.\u00bb The <a href=\"https:\/\/github.com\/califio\/publications\/tree\/main\/MADBugs\/openbsd\">proof-of-concept exploit code<\/a> is available on GitHub.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ue804Swati Khandelwal\ue802Oct 16, 2026Vulnerability \/ OpenBSD A local privilege escalation exploit published today gains root on OpenBSD 7.9 by chaining a roughly 37-year-old integer overflow with a separate kernel flaw,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":3592,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[3826,610,3825,3729,120,2140,605,61,3827],"class_list":["post-3591","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-37yearold","tag-bug","tag-chaining","tag-demonstrate","tag-exploit","tag-openbsd","tag-researchers","tag-root","tag-sharedmemory"],"_links":{"self":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/posts\/3591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3591"}],"version-history":[{"count":0,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/posts\/3591\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/media\/3592"}],"wp:attachment":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}