SILO Server 20261112 is a security and correctness release after 20261109, built from 44e848fedf8cec3d8c0da4b1aa8422390a2b7a8b with Go 1.27.4, embedded Console 2.7.2, mcli 20261112, and silo-pkg 3.16.1. Package version: 20261112000000.0.0 (Helm chart 7.0.5).
Security Advisories Addressed
SN-2026-020(Critical): Reject dot-segment, backslash, control-character, and non-canonical keys in S3DeleteObjectsacross single-pool and multi-pool deployments; route all explicitVersionIddeletes and unaddressed deletes that could replace a lockednullversion through single-object validation; enforce Object Lock across suspended/prefix-excluded replication targets (b3e69bca2,cf486df66). Advisory.SN-2026-021&SN-2026-025(High): Preserve existing service-account inline session policies whenUpdateServiceAccountomitsnewPolicywhile resetting inheritance on explicit empty documents ({}/{"Statement":[]}), replicate stored service-account policy modes across sites instead of rendered parent policies (da8d8a54b), preserve disabled service-account and group status duringImportIAM, normalize versionless inline policies to"2012-10-17", and pair with Console2.7.2(c11bfda8f,1d714834c,44e848fed). SN-2026-021 · SN-2026-025.SN-2026-022(Critical): AuthenticateDeleteObjectTaggingbefore local lookup or replication proxying; inspect and authorize stored tags across every present active-active replica before proxiedGET/PUT/DELETE ?taggingwhile tolerating missing lagging peers and failing closed on unreadable targets; gatex-amz-tagging-countandX-Amz-Object-Lock-*headers on local and proxiedGET/HEAD(14ecb222e,67a90dfef,293ab78b4,c39605d4f,ea37a7e8b). Advisory.SN-2026-023(High): Enforce the 15-minuteX-Amz-Dateclock-skew window and signed-header coverage onAuthorization-authenticatedSTREAMING-UNSIGNED-PAYLOAD-TRAILERuploads (keeping anonymous public-bucket streams intact), and populates3:signatureversion/s3:authTypeacross trailer streaming modes (14ecb222e,296c9710b). Advisory.SN-2026-024(High): AuthorizeGetObjectAttributesand read-only.ziparchive requests (x-minio-extract: trueonGET,HEAD,ListObjectsV2) against storedUserTags, requires3:GetObjecton the archive before member listing, and make read-time.zipindex construction strictly in-memory (f746d0707,296c9710b). Advisory.
Storage, Lifecycle, Migration, and Encryption Fixes
- Compressed + encrypted ranged reads (
#352): Fix indexed sub-block byte-range reads on objects that are both server-side compressed (.zstd/.s2) and encrypted (SSE-S3/SSE-C/SSE-KMS) instead of returning500 InternalError(7c0a99284,939cb2600). - Lifecycle & restore revision identity (
#332,#344): Unify revision keys across pre-2024-04-28MinIO headers, healed drives, and derivedxlFlagUsesDataDirdifferences so lifecycle expiration and native restore generation checks no longer stall permanently (36c8d1683,b5d97e3e1). - Pool decommission & rebalance (
#334,#335): Repeat bucket drain passes when source removals expose nested child keys, count lifecycle expirations as progress, tolerate offline drives within read quorum, and fail closed when physical metadata remains (ce5d19107,5dc4bd6a1,322cd8d2c,8587e061b). - Multi-pool copy, strict policy JSON, KMS context & site replication: Preserve authoritative historical placement, compression indexes, and draining-pool content on
CopyObject/UploadPartCopy(a8824b341,cd3e46a2b,e36ea51d9); preserve503 SlowDownon unreadable tag-conditioned reads (89028732a,a2ff3c2ec); enforce strict IAM/bucket policy JSON parsing and400 InvalidArgumenton malformed SSE-KMS contexts while preserving batchkeyrotateKMS context (34ba7cc1f,2ed720a7f,467ce760e,4a9bdb540); and release site-replication topology locks before peer RPCs (ef6efd312,745fbf043,2f228284f).
Upgrade Requirements and Operational Notes
- Quorum & cross-release prerequisites: Verify healthy
.minio.sysand erasure read quorum before restarting. Direct upgrades from20261026or earlier must also follow the 20261109 upgrade checklist (drain/cancel unfinished batch jobs; stop all nodes simultaneously when single-pool erasure sets do not share identical hosts; pausePOST ?restoreduring mixed-version windows). - Multi-pool & multi-site rollout: Drain or pause concurrent S3 writes during mixed-version multi-pool rolling restarts, and freeze service-account edits on un-upgraded
20261109sites until every site runs20261112. Audit service accounts showingPolicy: impliedand historicalmcli admin cluster iam importclusters after upgrade rather than running blindsite-replication resync. - Strict policy & KMS context validation: Automation sending misspelled policy keys (e.g.
Conditions), trailing JSON, emptyPrincipal: {},NotPrincipal, or non-string KMS encryption-context values now receives400. - Helm & post-restart verification: Pass
--set image.tag=RELEASE.2026-11-12T00-00-00Zwhen runninghelm upgrade --reuse-values(chart7.0.5), and verify bounded signed S3 write/readback on every restarted node (healthcheck contract).
Explicit VersionId removals in DeleteObjects now run sequentially across all buckets (alongside unaddressed deletes that could replace a locked null version), trading bulk version-purge throughput for per-version validation safety; ordinary delete-marker creation and unversioned bulk deletes retain concurrent execution. Existing limits remain in ListMultipartUploads (#79), multi-site delete-marker purge (#217), replayed bucket creation (#241), and SDK multipart-completion retry headers (mcli put --if-not-exists).
Docker Hub multi-architecture images (linux/amd64 and linux/arm64):
docker.io/pgsty/silo:RELEASE.2026-11-12T00-00-00Z(latest):sha256:c20d112390b9a9ce8c11b8af95ad35bcaa62f4759663c09c936cd8d2b511f329docker.io/pgsty/silo:RELEASE.2026-11-12T00-00-00Z-distroless(distroless):sha256:a72e17773bdeb151999f9bf9d3bd842fb03850a577b730ab8c63343bb1f468fd
Release Notes · 中文发布说明 · Full Changelog · Go CI · VulnCheck · Release Pipeline Validation · Tagged Build · Package Finalization · Docker Publish