Repository navigation
OpenBao Rust Crate 2.1.6 #58
Closed
eldryoth
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
OpenBao Rust SDK 2.1.6 Release Notes
Version
v2.1.6, created only after every release gate passesv2.1.6tag objectSummary
2.1.6is a source-compatible security-hardening release for secret-bearingHTTP buffers. Sensitive JSON, form, and byte requests no longer pass through
an ordinary SDK-created transport
Vec<u8>. Their sanitizing allocation isretained by the reqwest body and wiped after the final body clone drops.
OpenBao API routes, compatibility profiles, public SDK types, and feature
acknowledgement boundaries are unchanged from
2.1.5.The immutable
taiki-e/install-actionpin is updated from2.87.4to2.87.6; the release freshness check reports all other direct crates, CIcargo tools, and GitHub Actions current on the release date.
Request Lifecycle
request-size bound is checked.
bytes::Bytes::from_ownerretains the owner through reqwest body and requestclones without an additional SDK body allocation.
allocation and capacity.
rejection, request cloning, cancellation, connection failure, timeout, and
successful completion.
Response Lifecycle
Complete responses continue to accumulate in
SecretVec. After each HTTPchunk is copied, the SDK now wipes it when
Bytes::try_into_mutproves thatthe allocation is uniquely owned. The optional monitor stream applies the same
best-effort cleanup when chunks are consumed, rejected, or held when the stream
is dropped.
The SDK cannot prove or enforce cleanup of shared reqwest/Hyper chunks, HTTP or
TLS implementation buffers, allocator copies, kernel or device buffers,
caller-owned input, or memory after forced process termination. Those remain
documented residual risks; this release does not claim universal process-memory
erasure.
Both monitor frame-size rejection branches explicitly wipe the local uniquely
owned chunk before returning. Their regressions cover newline-delimited and
unterminated oversized frames.
The request-body owner now wipes initialized bytes while they are still safely
observable, before the existing full-capacity wipe clears and releases the
allocation. Test-only probes verify actual zero bytes across growth, mutation,
final-owner destruction, the production JSON/form/byte request paths, and
cancellation after a loopback server has accepted the transport connection.
Uniquely owned response-chunk tests likewise inspect the bytes after wiping and
before release. A shared heap-backed chunk is refused without changing its
surviving clone.
Verification
ordinary SDK transport-body copy is reintroduced.
rejection, cancellation, connection failure, and timeout.
2.6.2TLS/container integration flow withTransit encryption and decryption, associated-data binding, explicit
selection of key version
1after rotation to version2, valid-formatciphertext tampering, and incorrect-associated-data rejection. Both negative
cases require OpenBao's HTTP 400 API error and are followed by another valid
decryption control.
core-flow evidence to the expanded test definition.
Debug, and tracing redaction tests remain part of the fullrelease gate.
Release Gate
Run
scripts/release_2_1_6_gate.sh. Tagging additionally requires greenGitHub CI, CodeQL, the all-release compatibility workflow, and clean
independent pentests for the exact release commit.
This discussion was created from the release OpenBao Rust Crate 2.1.6.
All reactions