COOLJAPAN
← All posts

OxiRS 0.4.1 Released — Closing a Full Auth Bypass, 300 Fixes from a 308-Finding Hardening Audit

OxiRS 0.4.1 closes a full oxirs-fuseki authentication bypass, makes Raft storage genuinely fsync-durable, fixes a SPARQL parser that silently dropped FILTER clauses, and removes fabricated results from SHACL/AutoML/federation — 308 findings audited, ~300 fixed, 46,255 tests passing across 27 crates.

release oxirs rdf sparql security shacl knowledge-graph pure-rust wasm

A 38-scope multi-agent audit went looking for stubs, fabricated results, and silent data loss across all 27 crates — it found 308 of them, including a full authentication bypass in the SPARQL server.

Today we released OxiRS 0.4.1 — a workspace-wide production-readiness hardening pass that closes a complete oxirs-fuseki auth bypass, makes Raft storage genuinely fsync-durable, and fixes SPARQL parser bugs that were silently producing wrong query results instead of failing loud.

No C. No Fortran. No JVM. OxiRS’s Pure-Rust dependency tree compiles to a single static binary (or a WASM module) and runs everywhere Rust runs.
0.4.1 is the release where a systematic security and correctness audit went looking for every corner that tree had cut — from an auth layer that was wired up but never actually checked, to a cache that claimed to encrypt data it never touched — and fixed nearly all of it, in public, in the CHANGELOG.

Why OxiRS 0.4.1 is a game changer

Most “production-ready” RDF servers accumulate a specific kind of debt that no benchmark catches:

OxiRS 0.4.1 pays all four down, out loud:

All from a 308-finding audit (62 P0, 131 P1, 115 P2) across 38 work packages, ~300 fixed, plus 74 test regressions the full-suite gate caught and closed on the way out. 46,255 tests passing with --all-features (45,408 default), zero compilation warnings, across all 27 crates.

Technical Deep Dive: how you find 308 real findings

1. Scope the audit like a security review, not a linter. 38 scan agents ran per-crate, plus five cross-cutting lenses — fail-loud behavior, operational correctness, security, concurrency, and recent-diff risk — each independently verified before being counted. That structure is what catches an auth extractor that compiles cleanly and passes its own unit tests while never being called on the real request path.

2. Fix fabrication at the source, not the assertion. oxirs-shacl’s W3C conformance harness and oxirs-shacl-ai’s quality/AutoML metrics were rewritten to compute what they claim to compute, rather than patching the tests that had encoded the fabricated output as “expected.” The same applies to oxirs-federate’s query planner, which now genuinely decomposes a federated query instead of returning a pre-built plan.

3. Durability means fsync, not “in a struct.” DurableRaftStore in oxirs-cluster persists vote state, log entries, the state machine, and snapshots with an explicit write-temp/fsync/rename sequence — the same discipline oxirs-tdb’s WAL already used, now extended to consensus state. oxirs-tdb’s repair_page_checksums and superblock reads were also fixed to verify a page’s checksum before trusting it, instead of re-stamping a fresh checksum over already-corrupt bytes and reporting success.

4. A parser bug is a data-integrity bug. The oxirs CLI’s tdbupdate was collapsing every literal and blank-node position to an IRI before writing — silently corrupting a TDB-backed store for every other reader (tdbquery, tdbdump). Term kind is now preserved. oxirs-did’s StatusList2021 credential-status encoding is now genuinely GZIP-compressed before base64url, fixing interop with external W3C-compliant verifiers that had been silently failing to decode it.

Getting Started

The oxirs CLI stays intentionally off crates.io (publish = false, so it can optionally pull in C-FFI quarantine adapters without exposing them on a published surface). Build it from source:

git clone https://github.com/cool-japan/oxirs.git
cd oxirs
cargo install --path tools/oxirs

The other 25 OxiRS library crates are normally published — add just the SPARQL engine, or the full query layer:

[dependencies]
oxirs-core = "0.4.1"
oxirs-arq = "0.4.1"

Then put the hardened server to work:

oxirs init mykg --format memory
oxirs import mykg data.ttl --format turtle
oxirs query mykg "SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10"
oxirs serve mykg/oxirs.toml --port 3030

What’s New in 0.4.1

Tips

This is the foundation

OxiRS rides on SciRS2 (scirs2-core 0.6.4) for graph analytics and numerics, routes compression through the OxiARC family (0.3.6, including a new Pure-Rust oxiarc-bzip2), handles crypto and transport through OxiCrypto/OxiTLS (0.2.1), and leans on OxiSQL (oxisql-core/oxisql-sqlite-compat 0.4.0) for its SQLite-compatible GeoSPARQL backend. Alongside siblings like OxiZ (SMT) and OxiRAG, OxiRS gives you an end-to-end auditable, JVM-free, C-free path from bytes on disk to a reasoned SPARQL answer — one that a 308-finding audit just checked doesn’t cut corners you can’t see.

Repository: https://github.com/cool-japan/oxirs

Star the repo if you want a knowledge graph where “authenticated,” “durable,” and “passing conformance” all mean what they say. The era of RDF stores that fabricate conformance results and auth layers that fail open is over. Pure Rust Semantic Web is here — audited, fast, safe, and sovereign.

KitaSan at COOLJAPAN OÜ July 29, 2026

↑ Back to all posts