Elixir 1.17

Last reviewed Sep 5, 2026

Export as PDF

Prompt Details

Prompt Composition

2prompts
  1. Erlang/OTP 27119 lines · 3.4K tokens
  2. Elixir 1.1756 lines · 1.9K tokens
Total175 lines · 5.3K tokens

CWE Coverage

  • 20
  • 22
  • 59
  • 78
  • 79
  • 95
  • 117
  • 208
  • 209
  • 214
  • 250
  • 287
  • 295
  • 297
  • 306
  • 307
  • 312
  • 319
  • 338
  • 362
  • 367
  • 400
  • 407
  • 444
  • 470
  • 494
  • 502
  • 522
  • 532
  • 611
  • 639
  • 674
  • 732
  • 755
  • 770
  • 772
  • 789
  • 829
  • 862
  • 863
  • 915
  • 918
  • 1287
  • 1336
  • 1395

Prompt Preview

Apply the Erlang/OTP 27 prompt first. Elixir 1.17 receives security patches only, but no 1.17 release fixes two disclosed vulnerabilities, so every 1.17 deployment needs the controls below until it moves to a later branch.

Required advisory containment

  • Plan the move off Elixir 1.17. No 1.17 release fixes CVE-2026-75758 or CVE-2026-49762: Elixir's security policy still listed the 1.17 branch when both were published, but neither fix was released for it. Move to the newest release of a later branch that both advisories list as fixed and that supports your OTP major, and until then install the official application-start workaround with Inspect.Opts.default_inspect_fun/1 forcing charlists: :as_lists before processing untrusted input.
  • Put a max_heap_size limit on processes that may inspect hostile terms as defense in depth; the limit kills an affected process and does not itself fix CVE-2026-75758.
  • Never log, inspect, interpolate, stringify, or pass attacker-influenced lists to List.to_string/1 or List.to_charlist/1 before the global workaround is active.
  • Bound user-supplied version and requirement strings and each numeric component before Version.parse/1, parse!/1, parse_requirement/1, parse_requirement!/1, match?/3, or compare/2; every 1.17 release is also affected by CVE-2026-49762.
  • Add regression tests for a list with more than 4,096 printable code points followed by an invalid element and for excessively long numeric version components.

Atoms, code, and dispatch

  • Replace String.to_atom/1 and List.to_atom/1 on external text