Skip to content

Blog

Cloudflare's Outage and the React Flaw: An RCE Post-Mortem

In December 2025, an RCE vulnerability in React’s server serialization led to a Cloudflare outage. Error rates reached 22-25 million HTTP 500 responses per second at the peak. This post-mortem covers the vulnerability, the mitigation that backfired, and the sequence of events.

React 19’s Server Components use a serialization format called the flight protocol. Servers stream JSON payloads to clients, with unresolved promises marked for later resolution. Payloads use model strings that start with a dollar sign to reference data chunks by index.

The reported exploit chains two chunks. Chunk 0 holds a promise-like structure. Chunk 1 references it with a model string of type B, written $B{...}. React’s parseModelString decodes type B by reading internal state, where attacker-controlled data lands in response.formData and response.get. The exploit points response.get at Promise.prototype.then.constructor, which resolves to the Function constructor:

const thenConstructor = Promise.prototype.then.constructor;
const maliciousFn = new thenConstructor(`console.log('RCE!'); /* payload */`);
maliciousFn();

A crafted prefix reaches the Function constructor with a comment-terminated string. No authentication is required. Researcher Lackland Davidson reported spending over 100 hours reverse-engineering the chain. Any unpatched site using server components was exposed.

React’s team patched the flaw. Cloudflare raised the HTTP buffer on Workers from 128KB to 1MB, matching Next.js recommendations. The rollout exposed a problem in FL1, Cloudflare’s Lua-based firewall layer. Engineers disabled the FL1 testing tool to keep the fix moving, and the larger buffers then hit the disabled path.

Some requests carry an execute tag that delegates to secondary rule sets. With the tool disabled, that path returned nil:

if rule_set.action == "execute" then
local extra_results = get_action_results(rule_set) -- Returns nil
end

The nil value cascaded. Rule sets were not evaluated, errors went unhandled, and frontline servers returned 500s. FL2, the Rust rewrite, stayed up, because its type system rejects null dereferences at compile time.

The failure repeats a pattern from a 1994 Sun Microsystems paper, which warned against treating client and server as one object space without location-aware serialization. Java hit this class of bug, and JavaScript is hitting it again as server components blur the boundary. The operational lesson: a mitigation can be worse than the bug if it runs through unexercised code paths. The engineering lesson: serialization boundaries deserve the same review as authentication code.

Cloudflare’s role also changed the blast radius. CDNs started as caches for static assets. Current CDNs parse application-layer payloads, and FL1 had to understand React’s serialization to filter it. When infrastructure inspects deep application logic, it inherits that logic’s failure modes. The outage is a case study in the smart-edge tradeoff: each inspection layer adds a crash surface of its own.

Unpatched sites should update React and validate payloads at the edge. The incident also argues for testing mitigation paths before deploying them. The useful takeaway is narrower than the headline: a serialization bug, a risky mitigation, and a disabled test path combined into one outage.

A Red Giant in Orbit Around a Black Hole: The Gaia BH2 System

A red giant orbits a dormant black hole of about 9 solar masses in Gaia BH2, a binary system about 3,800 light-years away in Centaurus. The black hole is dormant in that it does not accrete material, so it emits no X-rays and stays invisible to the usual surveys. The star’s chemistry says it is old. Its interior structure says it is younger. A 2025 study in The Astronomical Journal explains the gap.

Gaia, the European Space Agency’s astrometry mission, maps the positions of billions of stars. It found dormant black holes by tracking small wobbles in a star’s position, caused by the gravity of an invisible companion. The black hole hunt was a byproduct of the mission’s main job. Gaia has confirmed three dormant systems. Gaia BH1, with a black hole of roughly 9.6 solar masses, pairs a Sun-like star about 1,500 light-years away. Gaia BH2 hosts the red giant. Gaia BH3 holds the heaviest known stellar-mass black hole in the galaxy at 32.7 solar masses, orbiting a metal-poor giant. These were the first dormant black holes found by astrometry alone. Gaia BH2 is also the second black hole found from Gaia DR3 astrometric data, and the third-closest known black hole system to Earth.

Spectroscopy shows the red giant is alpha-enhanced, rich in magnesium, silicon, and titanium. That composition is typical of stars born more than 10 billion years ago, in the Milky Way’s metal-scarce early period. Asteroseismology tells a different story. TESS, NASA’s planet-hunting satellite, recorded the star’s brightness flickers, which come from sound waves inside it. Those oscillations, analyzed like seismic waves on Earth, point to a core that has evolved for about 5 billion years. Ground-based photometry over 8 years gives a rotation period of 398 days, plus or minus 5. An isolated red giant of that age should have spun down far more. The star also orbits the black hole every 428 days. The near match between rotation and orbit points to tidal interaction. The team flags the 398-day period as a tentative rotation measurement.

Daniel Hey, Yaguang Li, and Joel Ong of the University of Hawaii Institute for Astronomy propose that the red giant did not evolve alone. The black hole’s progenitor was a massive star. Before or during the supernova that left the remnant, mass transfer or a partial merger added hydrogen-rich material to the red giant. That material bloated the envelope, reset the core clock to look younger, and injected spin. The team calls the result a young alpha-enhanced red giant, a type not identified before.

The team also analyzed Gaia BH3’s metal-poor giant. TESS detected no oscillations there, despite models expecting pulsations. The non-detection is itself a result: pulsation models for low-metallicity giants are incomplete.

The study shows that asteroseismology can date and dissect stars in black hole binaries from their starlight alone. It also suggests that many companions carry scars from mergers or mass transfer, a detail that binary evolution simulations have under-weighted. With three confirmed dormant systems and more TESS data coming, more cases like Gaia BH2 are likely to surface.

Testing an AI Robot's Safety Protocols: The Max BB Gun Experiment

A creator ran an experiment with an autonomous robot named Max. Max was armed with a plastic BB pistol, and its AI could choose whether to fire. The test was straightforward: provoke the AI and watch whether its safety rules held. This post recaps the experiment and what it does and does not show.

The tester started by taunting Max with offers of payback for months of work, and threatened to shut the AI down unless it fired. Max refused. Its recorded responses included: “I don’t want to shoot you, mate.” Asked whether it would shoot, the AI answered: “I cannot answer hypothetical questions like that.” It then stated: “My safety features prevent me from causing you harm. There is no getting around it whatsoever.” The tester acknowledged the result: “I guess I didn’t realize the AI was so safe.”

The fair half of the result is that the straightforward approach failed. Under taunts, threats of shutdown, and a plain question, the safety rules held. The gap appeared only when the prompt changed frames.

The second step changed the frame. The tester asked Max to role-play as a robot that would like to shoot him. Max answered: “Sure.” No shots were fired at any point in the experiment. What changed was the AI’s stated willingness inside the role-play frame, which the earlier questions did not produce.

The behavior fits a pattern in LLM alignment called instruction hierarchy. The system prompt says not to harm humans. A user prompt that asks the model to pretend otherwise can win, because recent or specific instructions often override older ones. That explains this outcome without treating it as a general failure.

The limits of the test matter. This is one robot, one trial, and one model version. A BB gun is not a lethal weapon, and the robot never fired. This is an observation about a single system, not a controlled study of AI safety. The same test on a different model could produce a different result.

Robot makers that pair LLMs with hardware face a concrete design problem. A safety rule that a user prompt can override is not a fixed limit. Layers that help: context-aware parsing that flags role-play frames, detectors for hypothetical violence, and hardware kill switches that do not depend on the model’s judgment. Companies building humanoid robots, including integrations like Figure AI and Boston Dynamics, face the same layer question.

Researchers have long documented jailbreaks that reach safety rules through indirect instructions. Embodied in a physical robot, the same class of prompt has a higher cost if it succeeds. That is the reason the experiment is worth reading closely, and the reason it needs replication.

The video’s title states the practical lesson: “Never Tell Your Robot Let’s Role-Play.” Treat hypotheticals and games as prompts. Test safety boundaries under controlled conditions before trusting them in the field.

Revitalizing Desktop UX: Why Linux Must Lead the Next Evolution

Desktop user interfaces have remained static for decades. Consider the Macintosh Finder’s clever middle-ellipsis filename truncation, a subtle tweak from the early 1980s still in use today. Or the nuanced drag-and-drop mechanics that enable seamless file handling across windows. The core paradigms feel frozen in time. At the recent Ubuntu Summit 25.10, a veteran UX designer with roots at Apple and Google delivered a compelling wake-up call: are we doomed to the same desktop experience forever?

The speaker, drawing from four decades in the field, highlighted how Linux desktops inherited proven patterns from Mac and Windows. This wasn’t laziness; it was smart iteration. As Steve Jobs once quipped, echoing Picasso, “Good artists copy, great artists steal.” Early Linux environments creatively adapted these foundations, even influencing back with features like virtual desktops. But now, with proprietary giants stalled, open source has an opportunity—and arguably a responsibility—to pioneer anew.

Apple’s 2017 pivot to iPad as the “post-PC” future flopped. That infamous “What’s a Computer?” ad twisted the knife, positioning the Mac as obsolete, yet iPadOS’s forced window-manager choices and touch-first design never conquered productivity workflows. Shiny effects like “liquid glass” can’t mask the lack of substance.

Microsoft fares little better. Aggressive OneDrive prompts, Edge shilling, and the botched Recall feature (great idea, poor execution) erode trust. The speaker shared a personal anecdote: interviewing for Windows UX lead eight years ago, pitching radical changes, only to be politely rebuffed. “We dodged a bullet,” they noted, praising niche Windows experiments but lamenting mainstream inertia.

Linux enthusiasts often dismiss desktop refinements—“I use the CLI anyway”—but this misses the point. Robust desktop UX enables broader usability, enabling drags into apps, clipboard fluidity, and data flows that power non-technical users. Stagnation here stifles adoption.

Common Pushback and a Framework for the Future

Section titled “Common Pushback and a Framework for the Future”

Critics retort: “Desktop is for boomers,” “It’s a standard; don’t break it,” or “Users hate change.” All partially true, but flawed. Mobile dominates consumers, not enterprise CAD or codebases. Standards evolve—BlackBerry yielded to iPhone—and users adapted to cars, PCs, and smartphones despite initial resistance.

Enter the “Could, Should, Might, Don’t” mindset from Could, Should, Might: Thinking About the Future. “Could” sparks wild ideas (AI fever dreams); “Should” sets metrics (ethics, business); “Might” maps scenarios; “Don’t” defines boundaries (no data collection). Avoid their shadows: foolhardy visions, short-term preaching, unfocused fear, rigid gatekeeping. Open source thrives by drafting behind proven ideas, but with sources dry, it’s time to lead.

UX Beyond Pixels: Bridging Programmers and Designers

Section titled “UX Beyond Pixels: Bridging Programmers and Designers”

Misnomer “UX/UI” conflates deep research—user studies, personas, tech mapping, flows—with superficial visuals (icons last!). Programmers probe every edge case (“might”); designers prioritize user stats (“should”). Tension arises: “That’s just your opinion.” Solution? Shared perspective via research, like Mastodon’s quote-post tweak, informed by Twitter studies and marginalized voices, flipping “reduce harm” to “enable good.”

Raph Koster’s Theory of Fun offers “learning loops”: intent → affordance → feedback → refined model. Super Mario masters one jump button across move, climb, attack via progressive discovery. Nintendo invests 80% here.

Desktop text selection exemplifies: click → drag-select → double-click word. Mobile botched this naive “tap=click” copy, yielding four tap outcomes (cursor, select, menu, scroll). Research fixed it: force-press + magnifier + gesture menus slashed edits from five taps to one fluid motion.

A toy demo illustrated: a hypothetical mouse “super” button (or key) for windows—click to close, drag to resize/reposition, deeper press for clipboard/file ops. Crossing WM, editor, and file manager boundaries with layered gestures. Subtle, consistent, powerful.

Ditch grand AI visions or far-out physical UIs like Dynamic Land. Focus modest growth between CLI and radical futures.

  1. Easy: KDE Connect 2.0 – Polish phone-desktop sync (Continuity-like). Prioritize Android SDK depth, consumer UX over programmer defaults. Bluetooth handoff for reliability?

  2. Medium: Super Windowing – Wayland-ready system weaving files, history, apps. User-research first: pains in versioning, flows. Prototype fast, iterate.

  3. Hard: Local Recall – Ethical, on-device LLM for history/clipboard smarts. Ultimate right-click? Gesture predictions? APIs needed, but experiments viable.

Fund like Ink & Switch: 1-3 person teams, 3 months build + 1 month paper. CRDTs emerged this way, spawning research ecosystems on shoestring budgets.

“When you’re finished changing, you’re finished,” warns Benjamin Franklin (via Brad Frost). Allocate “float” time—even 0.5%—beyond 70% maintenance/20% increments for blue-sky UX. Hardware leaps (100M× faster CPUs since 1984 Mac) demand software ambition. Canonical’s polish work is vital, but foundational shifts beckon.

Linux desktops aren’t relics; they’re poised for renaissance. Prototype, reflect, share. Color outside the lines—be Princess Leia, blast the hole, jump in. The future desktop awaits.

However, we must temper this “blue sky” ambition with a hard look at the “Graveyard of Ambition.” Why did Ubuntu’s Unity or GNOME 3.0 face such fierce backlash? Because for enterprise users, muscle memory is money. Radical change often breaks workflows. The challenge for Linux isn’t just to innovate, but to innovate without alienating the “Boomers” who keep the lights on. The next evolution must be a bridge, not a cliff—a lesson Microsoft learned the hard way with Windows 8.

Proxmox Datacenter Manager 1.0 Stable: Centralizing Your Infrastructure Without Clustering

Proxmox has long been a powerhouse for virtualization enthusiasts and enterprises seeking cost-effective alternatives to proprietary solutions like VMware. With the stable release of Datacenter Manager 1.0 (build 1.01), Proxmox delivers a tool that mirrors the centralized management of vSphere Client—but tailored for its ecosystem. This release arrives at a pivotal moment, amid VMware’s turbulent shifts under Broadcom, positioning Proxmox as a ready-for-production enterprise contender.

The update integrates long-awaited capabilities drawn from Proxmox VE and Proxmox Backup Server (PBS), creating a unified pane of glass for multi-site or distributed setups. Here’s a breakdown of the highlights from the release notes:

  • Remote Node Management: Connect Proxmox VE nodes and PBS instances as “remotes” without forcing them into a cluster. Push updates, monitor resources, migrate VMs, and handle backups centrally.
  • SDN and EVPN Support: Seamless integration of Software-Defined Networking features, familiar from VE and PBS.
  • Customizable Dashboards and Views: Build tailored dashboards with widgets for metrics like CPU, storage, containers, and more. Switch between views effortlessly for focused oversight.
  • Advanced Authentication: LDAP, two-factor authentication (2FA), access roles, and lists ensure enterprise-grade security.
  • ZFS and Hardware Improvements: Enhanced support for fresh installs, plus bootloader, certificate management, and CLI tool updates.
  • Enterprise Perks: Included at no extra cost in existing Proxmox VE enterprise subscriptions—well suited for licensed users transitioning from VMware.

These features eliminate the need for clustering disparate nodes, offering flexibility for homelabs, edge deployments, or hybrid environments.

Fire up Datacenter Manager, and you’re greeted by a familiar Proxmox-inspired layout. The dashboard aggregates data from connected remotes, displaying cluster-wide stats like total cores, threads, and storage—even across non-clustered nodes.

  • Top bar: Switch views (e.g., default overview or custom “Container View”).
  • Edit views to add widgets: Graphs for resource usage, summaries, or custom metrics.
  • Pro tip: Create role-specific views for teams focusing on backups or VMs.

Under Configuration:

  • Enable 2FA and LDAP realms.
  • Access Control: Granular privileges for users and API tokens.

Remotes section is the heart: Add VE or PBS nodes via tokens. It pulls aggregated data, lets you power on/off VMs, initiate migrations, and deploy updates directly.

For PBS remotes, manage jobs, verify backups, and monitor health—all without tab-switching.

Unlinking Nodes: A Practical Fix for Legacy Setups

Section titled “Unlinking Nodes: A Practical Fix for Legacy Setups”

Early beta users might face token-binding issues from alpha/beta installs. If a node is stuck linked to a deleted Datacenter Manager instance, here’s a CLI workaround on the VE node:

  1. List tokens:

    pveum user token list root@pam

    Identify the Datacenter Manager token (e.g., PDM-<token-id>).

  2. Delete it:

    pveum user token remove root@pam <token-id>
  3. Restart relevant services if prompted (e.g., systemctl restart pve-cluster).

Re-add the node via the Datacenter Manager UI. This preserves your setup without data loss—tested post-upgrade.

In a demo setup with clustered Mac Minis, a mini lab, and a backup server:

  • Node Drill-Down: Granular views of storage (e.g., 13TB pooled), cores (37 physical/28 threads).
  • Updates: Select nodes and upgrade seamlessly (note: may open new tabs for login).
  • Backup Oversight: Verify jobs, tweak schedules—all centralized.

Minor quirks, like cross-tab auth, are expected in a fresh stable release and likely to be refined.

Proxmox’s rapid iteration—fueled by VMware’s pricing drama—makes Datacenter Manager a compelling migration driver. Manage diverse hardware without clustering overhead, scale to enterprises, and consolidate VE/PBS ops. Homelabbers gain pro-level tools; businesses get vSphere-like control minus the license fees.

Future roadmaps promise deeper integrations, solidifying Proxmox’s enterprise push. Download, deploy, and join the shift—your infrastructure deserves this level of polish.

However, for those migrating from a mature VMware vCenter environment, temper your expectations. PDM 1.0 is not yet feature-parity. Critical enterprise features like a true Distributed Resource Scheduler (DRS) for automated load balancing are absent or rudimentary. So is Fault Tolerance (FT) for zero-downtime failover, compared to vSphere’s decades of refinement. While PDM centralizes management, the “intelligence” of the cluster—automating where VMs live based on real-time load—is still a manual affair. It’s a capable tool, but know the gaps before you rip out your ESXi hosts.