Highlights
Auth Bypass: 11 prior fixes. Scrutinize any change in this area.
lib/guardian/plug.ex: most-fixed (4 issues). Treat as high-risk during review.
10 high-severity fixes in this history; regressions here are high-impact.
Recurring patterns
The bug types that recur here, drawn from past fixes, not open vulnerabilities.
Auth Bypass: Incomplete verification logic, including strict equality checks instead of set membership for list-based claims and lack of guard clauses for float-based time values in drift checks, allowed validation bypasses. Developers must enforce strict type constraints and subset validation.
Auth Bypass: Flaws in permission evaluation logic, such as defaulting missing bits to 0 (causing map operations to fail) and comparing MapSets against integers which consistently evaluated to true, allowed authorization bypasses. Permission routines must consistently default to empty collections and perform safe type-level comparisons.
Auth Bypass: Failing to explicitly halt the Plug connection pipeline upon authentication or authorization failures allowed downstream Plugs to continue executing actions under an unauthenticated state. Plugs must call Plug.Conn.halt/1 immediately on failure.