CVE-2024-28121

Reflex arbitrary method call in stimulus_reflex

State
Published
Severity
8.8 High
Published
Mar 12, 2024
Updated
Feb 13, 2025
Reserved
Mar 4, 2024

Read the record on cve.org

Description

stimulus_reflex is a system to extend the capabilities of both Rails and Stimulus by intercepting user interactions and passing them to Rails over real-time websockets. In affected versions more methods than expected can be called on reflex instances. Being able to call some of them has security implications. To invoke a reflex a websocket message of the following shape is sent: `\"target\":\"[class_name]#[method_name]\",\"args\":[]`. The server will proceed to instantiate `reflex` using the provided `class_name` as long as it extends `StimulusReflex::Reflex`. It then attempts to call `method_name` on the instance with the provided arguments. This is problematic as `reflex.method method_name` can be more methods that those explicitly specified by the developer in their reflex class. A good example is the instance_variable_set method. This vulnerability has been patched in versions 3.4.2 and 3.5.0.rc4. Users unable to upgrade should: see the backing GHSA advisory for mitigation advice.

Scores

CVSSScoreVectorSource
3.18.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HGitHub_M

Weaknesses

  • CWE-470 Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')

Affected Products

ProductVersions
stimulus_reflexstimulusreflex
  • >= 3.5.0.rc1, < 3.5.0.rc4Affected
  • < 3.4.2Affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.