Am I affected?

type your absinthe_federation version to check

Description

Allocation of Resources Without Limits or Throttling vulnerability in DivvyPayHQ absinthe_federation allows an unauthenticated remote attacker to abort the Erlang VM via crafted _entities representation keys.

Every key of every object in the representations argument of the federation-mandated _entities field is converted with String.to_atom/1 by convert_key/2 in lib/absinthe/federation/schema/entities_field.ex. representations is typed as the open-ended _Any scalar, so its keys bypass schema coercion and the attacker names them freely. Atoms are never garbage collected and the BEAM atom table is hard-capped (about 1,048,576 entries by default), so one request carrying tens of thousands of unique keys creates that many permanent atoms and a handful of such requests exhausts the table and aborts the node. The impact is confined to availability: no data is read or altered, and recovery requires restarting the application.

This issue affects absinthe_federation: from 0.1.0 before 0.9.3.

Weaknesses & attack patterns

Weakness

CWE-770 · Allocation of Resources Without Limits or Throttling in catalog → MITRE ↗

Attack patterns

CAPEC-130 · Excessive Allocation MITRE ↗

Affected — Hex / absinthe_federation Hex.pm ↗ Repository ↗

0.1.0 < 0.9.3 affected
every other version: unaffected
default status unaffected
cpe cpe:2.3:a:divvypayhq:absinthe_federation:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.Absinthe.Federation.Schema.EntitiesField'
source files lib/absinthe/federation/schema/entities_field.ex
routines 'Elixir.Absinthe.Federation.Schema.EntitiesField':resolver/3 · 'Elixir.Absinthe.Federation.Schema.EntitiesField':convert_keys_to_atom/2 · 'Elixir.Absinthe.Federation.Schema.EntitiesField':convert_key/2

Affected — GitHub / divvypayhq/absinthe_federation Repository ↗

640a234 < c3838cd affected
every other version: unaffected
default status unaffected
cpe cpe:2.3:a:divvypayhq:absinthe_federation:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.Absinthe.Federation.Schema.EntitiesField'
source files lib/absinthe/federation/schema/entities_field.ex
routines 'Elixir.Absinthe.Federation.Schema.EntitiesField':resolver/3 · 'Elixir.Absinthe.Federation.Schema.EntitiesField':convert_keys_to_atom/2 · 'Elixir.Absinthe.Federation.Schema.EntitiesField':convert_key/2

References

Credits

Peter Ullrich Finder
Doruk Gurleyen Remediation developer
Jonatan Männchen / EEF Analyst

CVSS breakdown

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
« All CVEs