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.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-470"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/28xxx/CVE-2024-28121.json"
}{
"extracted_events": [
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "3.4.2"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre1:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre1"
},
{
"last_affected": "3.5.0-pre1"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre10:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre10"
},
{
"last_affected": "3.5.0-pre10"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre2:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre2"
},
{
"last_affected": "3.5.0-pre2"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre3:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre3"
},
{
"last_affected": "3.5.0-pre3"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre4:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre4"
},
{
"last_affected": "3.5.0-pre4"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre5:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre5"
},
{
"last_affected": "3.5.0-pre5"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre6:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre6"
},
{
"last_affected": "3.5.0-pre6"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre7:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre7"
},
{
"last_affected": "3.5.0-pre7"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre8:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre8"
},
{
"last_affected": "3.5.0-pre8"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:pre9:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-pre9"
},
{
"last_affected": "3.5.0-pre9"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:rc1:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-rc1"
},
{
"last_affected": "3.5.0-rc1"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:rc2:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-rc2"
},
{
"last_affected": "3.5.0-rc2"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:stimulusreflex:stimulusrelfex:3.5.0:rc3:*:*:*:*:*:*",
"range": [
{
"introduced": "3.5.0-rc3"
},
{
"last_affected": "3.5.0-rc3"
}
],
"source": "CPE_STRING"
},
{
"range": [
{
"fixed": "538582d240439aab76066c72335ea92096cd0c7f"
}
],
"source": "REFERENCES_COMMIT"
},
{
"original_tag": "v3.4.2",
"range": [
{
"fixed": "01803ad6a3cf85b6ee01a3b316a3feb206f3863d"
}
],
"source": "REFERENCES_TAG"
},
{
"original_tag": "v3.5.0.rc4",
"range": [
{
"fixed": "3de99e49b5bc4bc477d92a3c550eb7b7cf56a8b7"
}
],
"source": "REFERENCES_TAG"
}
]
}