Fluxheim 1.7.12 #131
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.
Uh oh!
There was an error while loading. Please reload this page.
Fluxheim 1.7.12 Release Notes
Fluxheim 1.7.12 adds standards-based response metadata generated from native
runtime outcomes and final response bytes. It also adds reproducible,
CI-only proof environments for both FIPS-capable TLS backend profiles.
All new response metadata remains opt-in. Existing configurations and response
headers are unchanged unless an operator enables the new metadata policy.
Snapshot Lifecycle Proof and Hardening
the authenticated admin API, publishes and live-applies a candidate config,
verifies changed serving behavior, performs a live rollback, runs snapshot
integrity doctor, and proves the rolled-back current pointer survives restart.
concurrent near-limit serialization buffers without creating store state for
rejected oversized candidates.
0700at the operating-system creation call,closing the permissive-umask interval before any follow-up mode enforcement.
the native listener. Snapshot-safe reload and rollback now affect real data
plane requests while each in-flight HTTP/1 or HTTP/2 request retains one
router generation across all handler phases.
discovery services are active, avoiding a router/service state split; use a
zero-downtime process upgrade for those deployments.
Standards-Based Response Metadata
Cache-Statusderived from actual cache results, including hit,URI miss/store, stale forwarding, revalidation, expiry, and bypass outcomes.
Proxy-Statusfor Fluxheim-generated proxy failures using onlystandardized low-cardinality error tokens.
identifier when either status field is enabled.
addresses, DNS names, certificate details, or raw error strings.
multi-proxy status chains visible only when the operator explicitly opts in.
Example:
The metadata policy inherits through global, vhost, and route response-header
configuration. Every field defaults to disabled.
Response Digests
Content-Digestover final HTTP message content.Repr-Digestonly when Fluxheim holds a complete selectedrepresentation: a complete
GETresponse with status200, no range, and abody consistent with its declared content length.
actually delivered to the client.
Repr-DigestforHEAD,206,304, and other incompleterepresentation paths instead of guessing an unseen full representation.
HEADand304content as empty message content and cover a206response's returned range withContent-Digest.digest generation is disabled, preventing stale integrity metadata.
SHA-256 computation when both digest fields describe the same bytes.
them for memory and disk hits. New disk metadata is versioned and existing
v1 and v2 cache objects remain readable.
then hash the final encoded bytes before emission.
The native response model remains bounded and buffered. Digest generation
hashes the final response buffer without another body copy; unbuffered digest
trailers are not part of this release.
Wasm Loader Hardening
access-decision, route-decision, and cache-store phases, matching the
existing configuration invariant.
limited to two process-wide startup/reload slots, and releases its permit
before an over-deadline result is returned.
max_compiled_artifact_bytes, defaulting to 32 MiB and capped at 256MiB, and reject compiled modules above that ceiling before registry
admission.
compile_timeout_msaccurately as an in-process result deadline,not native compiler preemption; hard cancellation requires future
process-isolated compilation and execution.
retain that exact regular-file handle, and read module bytes from it without
reopening the pathname. This closes final-file replacement races on Windows,
ReFS, Unix, and macOS without identity inference or unsafe code.
Downstream TLS Hardening
tls.client_auth.crl_pathsupport to rustls and OpenSSL with an8 MiB input bound, a 1-to-64 PEM CRL bundle limit, strict full-chain
revocation, and expired-CRL rejection. Root/intermediate/client regression
handshakes prove hierarchical mTLS succeeds only when every required issuer
CRL is present.
FIPS/ISO-required compliance mode; ordinary client auth retains explicit
opt-in revocation behavior.
preventing an OpenSSL pathname reopen from bypassing input admission.
attacker-triggerable linear scan with expected constant-time lookup.
and atomically switch contexts during ClientHello processing. Certificate/key
mismatches now reject reload before the active context store is replaced.
CA objects across contexts, reject projected active-plus-reload policy input
above 128 MiB, and divide a 4096-entry session cache budget across contexts.
selected SSL connections. A reload that would create a third live generation
now marks the oldest generation for drain; native OpenSSL HTTP/1, HTTP/2, and
takeover streams use per-connection wake registrations so every retained
connection closes before a bounded automatic retry. Reloads still fail closed
if the generation cannot drain within 10 seconds. The connection lease uses
one process-global OpenSSL ex-data index, preventing index growth when
certificate stores are reconstructed in-process. Every attachment is read
back immediately, and Fluxheim terminates if OpenSSL cannot preserve the
lease.
Shared Cache Policy Hardening
AuthorizationorProxy-Authorization.Cache-Controlas a strict quoted-string-aware policy,prioritize
s-maxageovermax-age, and reject malformed or conflictingsecurity/freshness directives instead of falling back to configured TTLs.
Cache-Controlwithout a directive vector and reject morethan 16 KiB or 128 directives cumulatively.
into an absent policy or split quoted extension values at commas.
Agelist member when calculating peer-fillremaining freshness.
prohibit stale reuse for
must-revalidate,proxy-revalidate, ands-maxage; v1 and v2 metadata remain readable and derive the restrictionfrom stored response headers.
Content-RangeandContent-Lengthbeforerange admission, reject impossible totals and duplicate metadata, and make
zero-sized public slice planning return no slices instead of dividing by
zero.
contain encoded Unicode control characters, preventing disagreement with
permissive upstream decoders.
later child is absent, and deny non-UTF-8 dotfile components by their OS path
representation.
file reads so oversized or special persistent files fail closed at startup.
Native Buffer and Cache-Encryption Hardening
server.limits.max_buffered_request_body_bytes, defaulting to1GiB, asone weighted process-wide admission budget shared by HTTP/1 and HTTP/2.
Fluxheim reserves validated
Content-Lengthvalues in 64 KiB units and growsunknown-length HTTP/1 chunked and HTTP/2 reservations before each buffer
extension. Public native-server handlers without an explicit policy share a
mandatory 1 GiB process budget, and pinned HTTP/1 handlers provide the
effective request budget. Exhaustion returns a bounded
503with retryguidance.
constructing a second full-body copy, release oversized connection-buffer
capacity before keep-alive, and clear full body and chunk-decoder
allocations through
sanitization.Request types are no longer cloneable; compression, static, cache, and
revalidation workers receive metadata-only snapshots, while body-bearing
requests are never automatically retried or failed over.
through an owner-backed
Bytesvalue instead of making two additional bodycopies. The process-budget reservation travels with the sanitizing body owner
and every queued H2 slice, so handler completion cannot admit replacement
memory before the transport releases the original allocation. H2C
negotiation retains the body until fallback is decided, secure HTTP/1 and
HTTP/2 growth admits old-plus-new allocation overlap, unknown-length HTTP/2
bodies use budgeted geometric growth instead of repeated exact-size copies,
and fragmented final chunks preserve pipelined request bytes before clearing
the read buffer.
cap retained static response bodies with a weighted 256 MiB process-wide
budget. Fluxheim resolves metadata first, admits the planned response bytes
before reading or cloning a body, and conservatively accounts for a second
local-static cache copy. The permit follows an HTTP/1 response through HTTP/2
adaptation and remains held until the downstream write completes.
timeout, a 300-second total response lifetime, and an 8 KiB/s minimum send
rate. Explicit proxy policies continue to override these defaults.
cache keys. Encrypted filesystem names and storage-bin indexes now use
HMAC-SHA-256 identities derived separately from the data-encryption key, so
offline candidate URLs cannot be verified against persisted lookup metadata.
data and index keys for every root. Replace advisory process-local AES-GCM
invocation tracking with a locked, durable counter for that effective root
key; missing or damaged established state fails closed.
root-bound format, and every local-key rotation, cold-purges that encrypted
cache root before serving traffic. OpenBao protects its random index key with
Transit rather than deriving persisted identities from the bearer token.
Socket-Activation Hardening
LISTEN_FDSto 1 through 128 inside the focused systemd adoption cratebefore libsystemd can allocate descriptor storage, independently preserving
the root runtime's existing launch-environment validation.
SO_PROTOCOL=TCP, in addition to the existing socket-family, stream-type,listening-state, planned-address, and one-shot ownership checks.
Stream Proxy Hardening
translation, transition, discard-only, benchmarking, documentation,
site-local, or SRv6 SID destinations. Explicit IP-literal upstreams and the
existing trusted private-DNS opt-in remain unchanged.
proxy_header_timeout_secs, defaulting to 10 seconds and capped at 60,as one absolute deadline for the complete downstream PROXY v1/v2 preamble.
Byte-drip input from a trusted proxy cannot refresh this deadline.
and immediately sanitize each forwarded plaintext range, preserving active
connections under slow backpressure without extending truly idle sessions.
Snapshot Store Hardening
directories to already be private. Fluxheim never chmods an arbitrary
existing directory; only a dedicated directory it creates is initialized as
0700.allocation, transaction publication, or
currentupdates.limit impact and rollback diagnostics to 4 KiB without control characters.
current, generation, snapshot, and recovery files whenany new size or diagnostic admission check rejects input.
directory handle, closing the path-resolution race around directory
creation and keeping filesystem safety checks effective under concurrency.
Reproducible FIPS-Backend Evidence
Containerfiles under
containers/fips/.profile-fips-opensslandprofile-fips-rustlsbinariesinside their corresponding proof environments.
exercise real downstream TLS and certificate-verified upstream TLS, and
prove incompatible TLS policy fails closed.
an interactive test-starter entry for the proof.
These proof containers are CI evidence environments, not Fluxheim release
images. They do not claim that Fluxheim as a complete product or deployment is
FIPS validated. Operators remain responsible for the validated module,
platform, configuration, key handling, and required compliance evidence.
Testing
digests, conditional
304,HEAD,206, cache MISS/HIT, and refused-originproxy status.
duplicate
Content-Digestoutput; unit coverage verifies cache-digest reuse,compression invalidation, and v1/v2 disk-metadata compatibility.
rejection, and inherited overlay behavior.
more than once.
freshness with an operator TTL,
s-maxageprecedence, mandatoryrevalidation, contradictory range metadata, zero-sized slice policy, and
oversized/FIFO storage-bin manifests.
exact HTTP/2 declared lengths, incremental unknown-length growth, aggregate
exhaustion, logarithmic growth under highly fragmented HTTP/2 DATA frames,
owner-backed H2 DATA retention, post-handler body retention, and permit
recovery. Static error-page and cache tests preserve fallback behavior while
admission precedes body materialization.
identities, restart continuity, missing-counter failure, local-key rotation,
v1 rejection, and cold removal of legacy encrypted filesystem objects.
parsing.
slash encodings, encoded Unicode controls, and valid encoded Unicode.
parents plus hidden non-UTF-8 Unix filenames.
admission, bounded declarations before receipt, one-shot ownership,
complete-set closure on validation failure, and normal listener adoption.
the absolute preamble deadline and that partial writes keep an active,
backpressured stream alive beyond one idle period.
its deadline, verifies rejection, and then proves the listener still accepts
a complete authenticated preamble and proxies traffic.
the two globally reachable IPv4 protocol-assignment anycast exceptions.
are rejected without permission changes, oversized snapshots publish no
layout or state, and invalid recovery diagnostics preserve prior state.
Checksums And Signatures
ab02c4f3c717004ae0be631fa51a83305380448a000bf8027fb206333cf6fa1eddaa86bb6cec9833cfba4389b53a2a51add7205e fluxheim-1.7.12.tar.gz0ae822fbeb3a7223efe2a545b1d3a8a2c2f043c8ac245df8eb909d27313fbf85 fluxheim-1.7.12.zip9f48a39afa7ed4ff6deed73d233e6afc597b1825dda64ca0eaa84c1b242d7297 fluxheim-1.7.12-full-x86_64-linux.tar.gz844ca1cce29a892eb8d761cacf652dba1cb48a21726c0fce7e00b43158b65ac2 fluxheim-1.7.12-cache-x86_64-linux.tar.gz49cc792303f7f2680add5fbfb268b26534620599c56f5c65ac2c581e70715156 fluxheim-1.7.12-proxy-x86_64-linux.tar.gzf5c7076afa4275dfa184faf243e9a8324d9052dcf6addd96f39d6868e63a73cb fluxheim-1.7.12-php-x86_64-linux.tar.gze158557258cc596ba4f79f0e0aa802bec73446dc59fa997eb92b797cdf670bf4 fluxheim-1.7.12-load-balancer-x86_64-linux.tar.gza6a5672da7859e91353ac2a67f3f40ba49814027eccd515e6c9aaeecbc6772b0 fluxheim-1.7.12-config-tester-x86_64-linux.tar.gzb70f594674a4494fc4a91c4b97dd7396a9f4f6a4982e180d1626aba5e5b09e2f fluxheim-1.7.12-full-aarch64-linux.tar.gz0663324b16de0ab6789872aefbe938f8c3fdf0df8d537ced34cf8095292c70aa fluxheim-1.7.12-cache-aarch64-linux.tar.gz5f3f512ed9888ddb5fd391282aef8754377ec2305fbc87e7d31011d9fc4df7d8 fluxheim-1.7.12-proxy-aarch64-linux.tar.gza18e5c3cbe1c019466e8721f882b9f4b9a97fd87e51f24d436fc1e634a23bc67 fluxheim-1.7.12-php-aarch64-linux.tar.gz743636a049ceb16545a3928dec2a5a7b7492cea5ce4d5399103ec80f6ecc8fd3 fluxheim-1.7.12-load-balancer-aarch64-linux.tar.gzcb396ff8d8c0f356e98cf05feb968774f45b705d8fda62aca56710dbcad6e7d5 fluxheim-1.7.12-config-tester-aarch64-linux.tar.gz638c1e084437e347ddaf1da32e47d4b5faa501d2b8d627cc1c82f1f65de01a76 fluxheim-1.7.12-dev-aarch64-macos.tar.gzfca0990a3be23254f0829ceef4146e420267d6af4957499750c1fcd3eb8d8ba8 fluxheim.spdx.json070ae8f98a59a55128f8e46cce41ca6ca69611d06dc10df61a5e7f8da1aa6136 fluxheim.cyclonedx.json5e737adce035f842e9c864473db45d18b6f7e9bb68075c8473fbe44a93f1a0ffx86_64fd3742fcc1ca1ea3e93aa54280f10e62c2bacc473ffbab059e78dd8944d4213eaarch6479e481e79ba5feae8b1c419f18e1e86bbb470606c7a056e9f5380b27f442f759macosghcr.io/valkyoth/fluxheim@sha256:453e4eb0d658c60e35fa4f8257bd1435547fb5fbec9cc32896ea7614f7711d50ghcr.io/valkyoth/fluxheim@sha256:074a0d5eda79125881c39b98f3a90c180ba7855f62e65b66b0cbed731a2c2a2fghcr.io/valkyoth/fluxheim@sha256:1dd59c20c8ca9976a03ca73e1d8e06346f53c2e2efbc5df969c2af3c914a2af1ghcr.io/valkyoth/fluxheim@sha256:4bb3be6642539d565e921307987b50be11d7975f913ebc9bce461d4f8a2425ebghcr.io/valkyoth/fluxheim@sha256:bce02b1595b3a5790958174bc50074cea23f5397f3f34bbd76a53e5edc88558dghcr.io/valkyoth/fluxheim@sha256:6590fe8709069038cce21aecdb5ad5203ce41b288bb508f295072a9ac943325cghcr.io/valkyoth/fluxheim@sha256:e57332e596ebd52b4636ebd6d7e360c3e89f7f1bbff9334685f01ebb9f7ca0f6ghcr.io/valkyoth/fluxheim@sha256:d66dd9fbe0002f1cb6416268703d7d7df1c81079ad8f9b1d8f70a54616fe5115ghcr.io/valkyoth/fluxheim@sha256:7e4bac2fed8067115c84ea9a57bf7105497e3459ad78a28b4fe561ff3353d082ghcr.io/valkyoth/fluxheim@sha256:0f5b93725d1d3bc2fbdf686f39965ac4b67165d79056116b0be3fcd8ecaec477ghcr.io/valkyoth/fluxheim@sha256:6dc5de572b4075d30e7cf47575a35e2e4f3a17c2ccbb24121785acf0db4f3688ghcr.io/valkyoth/fluxheim@sha256:0ab59683426f70b126b7f15e5f934cb7f6060c5e3f90002d25e8c5c1d1033c68ghcr.io/valkyoth/fluxheim@sha256:1fe83e140fb9802866b0d126c3f204a613644690ac8ddf36afbf49a87eaeff46ghcr.io/valkyoth/fluxheim@sha256:39ef92de722bf6844d60c8103d8d2dd74a9788874d795fcfa1e9561d35f35c4bghcr.io/valkyoth/fluxheim@sha256:97bd13f632a293caa805c97e9f2e6f58d9cb2a222c63d7154a5423711ca3217aghcr.io/valkyoth/fluxheim@sha256:590024badbf9160d1af54288e4011eac05f214b198f1573afd40c77909477f9cghcr.io/valkyoth/fluxheim@sha256:44de1eb9efa8c59ae2a8742c53447915c6c1a38ecb0ba4fa63258c2bc96ea083ghcr.io/valkyoth/fluxheim@sha256:d88d5154dbab6189c2517eb88a256c09f4ec2f6393be1c9d0104b4b4867d744eghcr.io/valkyoth/fluxheim@sha256:2f3f810f8c62513ea53794e00a7575dafe32d2e2ab7f6305887724180bc6f5b7ghcr.io/valkyoth/fluxheim@sha256:2374228474fab8dbfbff75e8080e701855c3052ddcca567ffeb3d3fc1fbe402dGood "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4This discussion was created from the release Fluxheim 1.7.12.
All reactions