How to handle people dismissing io_uring as insecure? (2024)

Stale reputations and “once bitten” attitudes

  • Several comments compare io_uring’s reputation to PHP, Perl, Btrfs, MySQL, CoffeeScript, etc.: people freeze their opinion at an early, painful experience and ignore later improvements.
  • This “scar tissue” leads many to avoid a technology entirely, even if it is now materially better.

Where the “io_uring is insecure” meme comes from

  • The Wikipedia article is seen as a major source: it cites Google’s claim that ~60% of 2022 kernel exploits submitted to their bug bounty involved io_uring and notes it was disabled on Android, ChromeOS, and Google servers.
  • A later Wikipedia addition asserting that io_uring is now “no less secure than anything else” is criticized as being poorly supported and self-citing this very discussion.
  • Some point out Android’s history of shipping old kernels, implying many issues were already fixed upstream, but others note io_uring still has a steady stream of serious bugs and Google continues to find CVEs.

CVE counts and their meaning

  • One comment lists io_uring CVEs per year, showing a rising count through 2024, with some high‑severity issues still in 2025.
  • Others argue CVE volume is hard to interpret: it scales with adoption, kernel policy tends to assign CVEs liberally, and many entries are ordinary bugs or panics.
  • There is disagreement on whether this history justifies labeling io_uring “insecure,” or simply “complex and still maturing.”

Security model gaps: filtering and containers

  • A concrete security weakness today: io_uring “syscalls” cannot be filtered as precisely as classic syscalls via seccomp‑BPF/eBPF/LSMs, which weakens standard container hardening.
  • You can block io_uring globally (disable its syscalls or compile it out), but that makes software depending on it harder to deploy in locked‑down environments.
  • Security tool authors dislike that io_uring was designed with little initial consideration for filtering/auditing and later grew features like ioctl support, which are notoriously hard to sandbox.

Usage, threat models, and complexity

  • Some would happily use io_uring on dedicated, performance‑critical systems (HPC, finance, specialized servers), but avoid it in multi‑tenant or highly locked‑down environments until filtering/auditing catches up.
  • Others highlight non‑security concerns: the API is hard to use correctly; buffer and completion management can easily introduce subtle races and catastrophic failures under load.
  • A counterpoint is that per‑thread rings and careful design can simplify things, and io_uring uniquely enables fully async patterns (e.g., async file open) that improve concurrency models.

How to respond to “io_uring is insecure”

  • Several comments stress: don’t start from “critics are wrong.” Instead, acknowledge the real history of critical bugs and Google’s decision to disable it, then:
    • Present concrete data (CVE history, severity trends, comparison to other subsystems).
    • Be explicit about what io_uring does and does not change: it increases kernel attack surface; it doesn’t automatically make an individual application’s logic less secure.
    • Admit that trust must be rebuilt over time via a long period of quiet operation and better integration with security tooling.
  • Practical strategies suggested:
    • Formal verification of the front‑end validation layer to address both real flaws and reputation.
    • Gaining vendor endorsements (RHEL enabling it by default, major clouds allowing it in managed runtimes).
    • Being honest about trade‑offs: if your software targets environments where seccomp‑based hardening is standard, you may need to avoid or gate io_uring.
  • One meta‑point: it is acceptable to “agree to disagree”—for some threat models, disabling io_uring entirely remains a rational choice.