The redb ecosystem published three consecutive releases—3.7.0, 3.7.1 and 3.7.2—within three days after version 3.7.0 was withdrawn from nuget.org. The withdrawn build targeted .NET 9 and carried high-severity vulnerabilities in its published artifacts.
NuGet audit only surfaced the problems during a full rebuild; incremental builds had masked the issues. Affected packages included SSH.NET 2025.1.0 (GHSA-q939-rpr3-3284) in redb.Route.Sftp, transitive SSH.NET 2024.2.0 via Testcontainers 4.3.0, SQLitePCLRaw.lib.e_sqlite3 2.1.10 through Microsoft.Data.Sqlite 9.0.3, System.Security.Cryptography.Xml 9.0.4 from Microsoft.AspNetCore.DataProtection 9.0.4, and Microsoft.Bcl.Memory 9.0.0 via OpenIddict.Abstractions.
All libraries were updated and the entire stack migrated to .NET 10. redb.Tsak and redb.Identity now declare the same multi-targeting matrix (net8.0;net9.0;net10.0) already used by redb.Core and redb.Route. Host applications and container images are pinned to net10.0.
redb.Route: native gRPC wire protocol
The largest change replaces the previous Grpc.AspNetCore dependency with a custom GrpcWire implementation. Each gRPC method address is now registered as an independent route on the shared Kestrel instance already serving HTTP, AS2 and SOAP traffic. The wire format implements length-prefixed framing, grpc-status and grpc-message trailers, and grpc-timeout deadlines.
Applications can now expose typed .proto services without server stubs, stream in both directions via IAsyncEnumerable, enforce mTLS with certificate pinning, and serve the standard grpc.health.v1.Health/Check endpoint. Interoperability was validated against the Node.js @grpc/grpc-js client in both directions.
Additional redb.Route features
A new redb.Route.Soap connector supports SOAP 1.1/1.2 envelopes, WS-Security, MTOM/XOP and WSDL publication. Control Bus operations (start, stop, suspend, resume, status) are now available via messaging, including an asynchronous notify consumer for route lifecycle events. The Claim Check pattern was completed so that Set/Get operations can safely park message bodies around enrichment steps.
Critical file-transport defects were fixed: readLock=Rename and FileLock no longer return empty payloads, idempotency keys are released on error, and path validation now uses directory-boundary checks to prevent escape via ../ or absolute paths.
Security and compatibility notes
Two behavioral changes were introduced for gRPC producers: ThrowOnError defaults to true and status mapping is enabled by default. Existing behavior can be restored with throwOnError=false or suppressStatusMapping=true. .NET 8 and .NET 9 reach end of support on 10 November 2026; redb.CLI now requires .NET 10.
