CVE-2026-105963

Secret key base exposed in stack trace arguments on wrong-typed Plug.Crypto arguments

MEDIUM
5.1
CVSS Score
Published: October 23, 2026 at 09:56 AM UTC
Updated: October 23, 2026 at 07:57 PM UTC
1 product affected across 1 vendorPlug

Using plug by elixir-plug?

Get instant alerts when new vulnerabilities affect plug - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.1
Exploit prediction
EPSS 0.5%
SSVC
No known exploit

Description

Externally-Generated Error Message Containing Sensitive Information vulnerability in plug_crypto in elixir-plug plug_crypto allows an unauthenticated remote attacker to expose the secret key base through application logs via a wrong-typed argument. Every public function in Plug.Crypto validates argument types in a function-head guard. A failed guard makes the Erlang VM raise FunctionClauseError with the actual argument values in the top stack frame, so the secret key base, a derived key, or the value an API key is compared against lands in that frame. The library's rescue blocks and Plug.Crypto.prune_args_from_stacktrace/1 only reach exceptions raised inside a function body, so they never see a guard failure. Plug.Cowboy and Bandit write the frame to the error log and attach it as crash_reason Logger metadata, which error trackers forward. Two entry points take request data. Plug.Crypto.verify/4 exposes the secret key base when the token is neither a binary nor nil, which Phoenix.Token.verify/4 reaches because it forwards the token unguarded. Plug.Crypto.secure_compare/2 exposes the other operand when one side is not a binary, as happens when a missing request header yields nil. Reading the leaked value needs separate access to the logs or the error tracker, so the request alone does not disclose the secret to the attacker. This issue affects plug: from 1.6.3 before 1.7.0; plug_crypto: from 1.0.0 before 2.2.1.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

1.6.356000c33d8a0a2fbac491f8be06b9c5112bc2276

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

5.1MEDIUMEEF
Vector?

Quick Info

StatusDEFERRED
CWE
CWE-532

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card