Repository navigation
feat(s141): complete slice 141 (the headless release's floor, OTP 28.5.0.8 on the OTP 28 line; the decoder asked directly; the container images on 28.5.0.8) - #136
Merged
Conversation
…5.0.8 on the OTP 28 line; the decoder asked directly; the container images on 28.5.0.8) Signed-off-by: Ayla Croft <aylacroft@proton.me>
…age pins, not the newest Signed-off-by: Ayla Croft <aylacroft@proton.me>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Slice 141. The headless release, the one deployed as a server, now refuses to boot below OTP 28.5.0.8 and on any OTP line but 28. Every node also asks its decoder directly whether it refuses the oversize tuple CVE-2026-55737 is about. The container images build OTP 28.5.0.8. The desktop keeps the slice 137 floor.
What it does
Trinity.Toolchain.floor(:headless)).otp_versions.table. The row is checked in verbatim, from the same erlang/otp commit as slice 137's three, whose file SHA-256 is unchanged.headlessor it runs withTRINITY_MODE=headless. Either is enough, so leaving one unset does not lower the floor.Trinity.Toolchain.check_decoder/1), in every profile.LARGE_TUPLE_EXTof arity 2^24, one over erts'sERTS_MAX_TUPLE_SIZE. That is the bound the CVE-2026-55737 fix added todecoded_size()inexternal.c.ci/container.tool-versions, the Iron Bank manifest and Dockerfile, and the FIPS Containerfile. The source archive's SHA-256,8a696e15bcbe5d57197b1f4c03c92d415f9fd9af70f9222a05911c8a5463cba6, was read from the release API andSHA256.txtand matched a download. The pcre sources the image's justifications rest on are byte for byte the same as 28.5.0.7's.Evidence
Red first. On the tree before the change, a headless node booted on 28.5.0.6 and on 28.5.0.7.
Both branches. A headless boot on the suite's own runtime has its expectation read from that runtime's
OTP_VERSIONfile, not from the code under test. It refuses on 28.5.0.6 and boots on 28.5.0.8, and each run prints which.On OTP 28.5.0.7 a headless node refuses, naming erts and ssl, and a desktop node on the same runtime boots.
On OTP 28.1.1 (and 28.5.0.3 in CI) the probe itself answers
{:decoder_accepts_oversize_tuple, 16777216}.Planted faults. Each was restored and compared byte for byte afterwards, and each turned its own tests red:
Skipping the probe at boot was observable only through a fault seam,
config :trinity, :decoder_probe_fault, true, which can only turn a pass into a refusal, as the ML-DSA-87 preflight's seam does.CI
A new gate step boots on Hex's prebuilt OTP 28.5.0.7, pinned by its
builds.txtdigest. The existing 28.5.0.3 step now also runs the probe on that runtime. The FIPS image is rebuilt for the new pin, and thefipsjob runs the headless boot on 28.5.0.8.Not in this PR
bin/headless eval, which never starts the application. The security model and the amendment both say so.