redb 3.7.2 Released with Custom gRPC Protocol, Dependency Vulnerability Fixes and .NET 10 Migration

The redb ecosystem released versions 3.7.0, 3.7.1 and 3.7.2 in quick succession after 3.7.0 was withdrawn due to high-severity vulnerabilities in its .NET 9 build artifacts. NuGet audit detected issues only on full rebuilds, leading to updates for SSH.NET, Microsoft.Data.Sqlite, System.Security.Cryptography.Xml and Microsoft.Bcl.Memory across redb.Route, redb.Core, redb.Export and redb.Identity. The release introduces a native GrpcWire implementation that registers individual gRPC methods as routes on a shared Kestrel host, supports bidirectional streaming, real gRPC status codes and mTLS with pinned client certificates. redb.Route also gained a dedicated SOAP connector, Control Bus messaging for route lifecycle management and a corrected Claim Check pattern. File transports received critical fixes that prevent silent data loss when readLock and idempotency options are combined. All libraries now target net8.0;net9.0;net10.0 while host applications require .NET 10, aligning with Microsoft’s shortened support timeline for .NET 8 and 9.

HabrTranslated from Russian

Read at source

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.

Meridian digestThe week's most consequential security stories, distilled into one briefing.See the digest

More in Supply Chain & Open Source

Passwordless Kubernetes Image Pulling with Artifact Keeper via ServiceAccount Tokens
Malicious Code Injected into LiteLLM Open Source AI Package via Supply Chain Attack
GhostAction Campaign Compromises 790 GitHub Repositories via Malicious Workflows