Skip to content

Bump plug_crypto/mint/cowlib for October advisories; drop four ignores - #1013

Merged
mkreyman merged 2 commits into
masterfrom
security/advisory-bump-2026-10
Oct 24, 2026
Merged

mkreyman merged 2 commits into
masterfrom
security/advisory-bump-2026-10

Conversation

@mkreyman

@mkreyman mkreyman commented Oct 24, 2026 •

Copy link
Copy Markdown
Owner

What

The scheduled CI Security job failed 2026-10-24 (run 40052927924) on mix hex.audit: plug_crypto 2.2.0 — EEF-CVE-2026-105963 (MEDIUM), the only un-acknowledged advisory. The report also linked EEF-CVE-2026-94206 (cloak_ecto PBKDF2) — that one needs no code, see below. Full inventory of what the audit window carried, and what this does with each:

Package Advisory Status before Status after
plug_crypto 2.2.0 EEF-CVE-2026-105963 (MEDIUM, secret key base in stack-trace args, reachable via Phoenix.Token.verify/4) active CI failure, fix existed bumped to 2.2.1 (released 2026-10-23)
mint 1.10.1 EEF-CVE-2026-91043 (HIGH), -92103, -94194 ignored, fix "declined" (1.11.0 breaks Finch 0.23.0) bumped to 1.10.2 — a backport released 2026-09-29 that fixes all three without the 1.11.0 behavior change; all three ignores deleted
cowlib 2.20.0 EEF-CVE-2026-43969 (LOW) ignored (no fix) bumped to 2.21.0 (2026-10-08) which fixes it; ignore deleted
cowlib 2.21.0 EEF-CVE-2026-43966 (MEDIUM) ignored (no fix) still no upstream release; ignore kept, comment refreshed
cloak 1.1.4 / cloak_ecto 1.3.0 EEF-CVE-2026-95105 (HIGH), EEF-CVE-2026-94206 (the linked one, MEDIUM) ignored, unreachable unchanged — no patched release exists (both newest on hex, 2024-04-06), and the affected modules (Cloak.Ciphers.AES.CTR, Cloak.Ecto.PBKDF2) are absent from compiled code: every vault cipher is AES.GCM, no field is PBKDF2-hashed. test/loopctl/vault/cloak_advisory_reachability_test.exs fails the moment either module is referenced or either version moves.

The mint pin moves to >= 1.10.2 and < 1.11.0: the sub-1.11.0 half still guards the Finch 0.23.0 receive-timeout crash (finch_timeout_reuse_test.exs), but it no longer costs a security fix. finch itself stays at 0.23.0 — 0.24.0 is not needed by any advisory and this PR keeps its diff to the advisories.

Testing

  • mix hex.audit — green; the only remaining entries are the three kept ignores, each with its reasoning in mix.exs.
  • mix test test/loopctl/net/finch_timeout_reuse_test.exs test/loopctl/vault/cloak_advisory_reachability_test.exs test/loopctl/net/no_outbound_http2_test.exs — 5 tests, 0 failures (the three tests that pin these exact decisions).
  • Full mix precommit runs in the commit hook on this branch.

Risk

Low. All three bumps are patch/minor releases within the same requirement ranges (plug_crypto via plug's ~> 1.18… transitive, mint inside the explicit pin, cowlib via cowboy's range). plug_crypto 2.2.1's change is stack-trace arg pruning on guard failures; mint 1.10.2 is the security backport with no behavior change; cowlib 2.21.0's delta over 2.20.0 is the cookie-encoder fix. The blast radius is outbound HTTP (Req/Finch) and signed-token verification — both covered by the suite.

How to revert

git revert this commit: it touches only mix.exs (ignores + pin comment), mix.lock, and CHANGELOG.md. No migration, no code. Reverting restores plug_crypto 2.2.0 and re-fails the Security job, so a revert needs the ignores re-added.

Review findings

  1. fixed medium test/loopctl/net/no_outbound_http2_test.exs:3 — the moduledoc and assertion message justified the HTTP/1-only posture by mint ignore entries this PR deletes; both now describe the posture as the standing pin and point at the mix.exs comment that references this test
  2. fixed low mix.exs:51 — the PR title claimed "drop five ignores" but four come out (cowlib CVE-2026-43966 stays, no upstream fix); title corrected to "four"; the squash commit takes its message from the title
  3. fixed low test/loopctl/net/finch_timeout_reuse_test.exs:3 — the moduledoc pointed at hex: ignore_advisories for reasoning that now lives in deps/0, described mint 1.10.1 (locked is 1.10.2), and told the reader the mint advisory entries could still go; all three refreshed

CI's scheduled Security job failed 2026-10-24 on plug_crypto 2.2.0
(EEF-CVE-2026-105963, fixed in 2.2.1). The same audit window carried
mint 1.10.1 (three advisories) and cowlib 2.20.0 (two, ignored) —
mint 1.10.2 backports all three fixes without the 1.11.0 behavior
change that Finch 0.23.0 breaks on, and cowlib 2.21.0 fixes
CVE-2026-43969, so five ignore_advisories entries come out and the
mint pin moves to >= 1.10.2.

The cloak CVE-2026-94206 in the report needs no code: it affects
Cloak.Ecto.PBKDF2, which loopctl never uses, and that was already
reasoned in mix.exs and pinned by cloak_advisory_reachability_test.exs.
@mkreyman

Copy link
Copy Markdown
Owner Author

Review round 1 (code) counted at 835ef8c4d970 via Skill lean-review. The review-round counter's merge gate reads this marker on any machine.

The review of #1013 found both stale after the ignores came out:
no_outbound_http2_test.exs still justified itself by mint ignore
entries that no longer exist, and finch_timeout_reuse_test.exs
pointed at the wrong section of mix.exs, described mint 1.10.1
(locked is 1.10.2), and told the reader the mint advisory entries
could still go. Behaviour unchanged; both tests still pin it.
@mkreyman mkreyman changed the title Bump plug_crypto/mint/cowlib for October advisories; drop five ignores Bump plug_crypto/mint/cowlib for October advisories; drop four ignores Oct 24, 2026
@mkreyman
mkreyman merged commit d8003f3 into master Oct 24, 2026
17 checks passed
@mkreyman
mkreyman deleted the security/advisory-bump-2026-10 branch October 24, 2026 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant