Vulnerabilidades de Phenixdigital
CVEs publicadas que afetam produtos de Phenixdigital: 3 registro(s), com severidade, exploração e correções.
CVE-2026-8469
Alta · 8.2
CWE-770 20/05/2026
Unauthenticated denial-of-service via BEAM atom table exhaustion in phoenix_storybook
Allocation of Resources Without Limits or Throttling vulnerability in phenixdigital phoenix_storybook allows unauthenticated denial-of-service via BEAM atom table exhaustion.
Multiple LiveView event handlers convert user-supplied event parameter strings to atoms using String.to_atom/1 without validation: 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':handle_set_variation_assign/3 interns every key of the psb-assign params map; 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':handle_toggle_variation_assign/3 interns the "attr" value from psb-toggle events; 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':to_variation_id/2 interns elements of "variation_id"; and 'Elixir.PhoenixStorybook.ExtraAssignsHelpers':to_value/4 interns raw string values for attributes declared as :atom or :boolean. BEAM atoms are never garbage-collected, so each unique attacker-controlled string is a permanent allocation. Once the atom table ceiling (~1,048,576 atoms) is reached, the entire BEAM node aborts, taking down all applications running on it.
This issue affects phoenix_storybook from 0.2.0 before 1.1.0.
CVE-2026-8467
Crítica · 9.5
CWE-94 20/05/2026
phoenix_storybook: injeção de código não autenticada (RCE) via template HEEx no playground
Vulnerabilidade de injeção de código no phoenix_storybook da phenixdigital permite execução remota de código não autenticada via interpolação de valores de atributos não sanitizados na geração de templates HEEx.
O manipulador de evento WebSocket psb-assign em 'Elixir.PhoenixStorybook.Story.PlaygroundPreviewLive':handle_event/3 aceita nomes e valores arbitrários de atributos provenientes de clientes não autenticados. Esses valores são repassados a 'Elixir.PhoenixStorybook.Helpers.ExtraAssignsHelpers':handle_set_variation_assign/3, que os armazena sem alterações. Na renderização, 'Elixir.PhoenixStorybook.Rendering.ComponentRenderer':attributes_markup/1 interpola valores binários de atributos diretamente em uma string de template HEEx no formato name="<val>", sem escapar aspas duplas nem delimitadores de expressão HEEx. Um invasor pode fornecer um valor contendo uma aspa de fechamento seguida de um bloco de expressão HEEx (por exemplo, foo" injected={EXPR} bar="), fazendo com que EXPR seja tratado como uma expressão Elixir inline. O template resultante é compilado via EEx.compile_string/2 e executado via Code.eval_quoted_with_env/3 com importações completas do Kernel e sem sandbox, concedendo ao invasor execução arbitrária de código no servidor.
O problema afeta o phoenix_storybook da versão 0.5.0 até antes da 1.1.0.
CVE-2026-47068
Baixa · 2.3
CWE-639 20/05/2026
Cross-session PubSub topic injection via URL parameter in phoenix_storybook
Authorization Bypass Through User-Controlled Key vulnerability in phenixdigital phoenix_storybook allows cross-session PubSub topic injection via a URL query parameter.
'Elixir.PhoenixStorybook.Story.ComponentIframeLive':handle_params/3 in lib/phoenix_storybook/live/story/component_iframe_live.ex reads a PubSub topic directly from params["topic"] and broadcasts {:component_iframe_pid, self()} on it with no check that the topic belongs to the requesting session. The shared PhoenixStorybook.PubSub is used to coordinate playground LiveViews with their iframes: a playground subscribes to a session-specific topic and uses the received iframe pid to direct subsequent control messages (variation state, theme switches, extra-assign payloads) via send/2. Because the iframe trusts the query parameter, an attacker who loads /storybook/iframe/<story>?topic=<victim_topic> causes their iframe process pid to be announced on the victim's topic. The victim's playground then addresses its private messages to the attacker's iframe process.
This issue affects phoenix_storybook from 0.4.0 before 1.1.0.