CVE-2026-23885
Published: 19 January 2026
Summary
CVE-2026-23885 is a medium-severity Eval Injection (CWE-95) vulnerability in Alchemy-Cms Alchemy Cms. Its CVSS base score is 6.4 (Medium).
Operationally, exploitation aligns with the MITRE ATT&CK technique Unix Shell (T1059.004); ranked at the 6.0th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.
Threat & Defense at a Glance
Threat & Defense Details
MITRE ATT&CK Enterprise TechniquesAI
Why these techniques?
Code injection via unsafe eval() on admin-controlled input directly enables arbitrary Unix shell command execution on the host.
NVD Description
Alchemy is an open source content management system engine written in Ruby on Rails. Prior to versions 7.4.12 and 8.0.3, the application uses the Ruby `eval()` function to dynamically execute a string provided by the `resource_handler.engine_name` attribute in `Alchemy::ResourcesHelper#resource_url_proxy`. The…
more
vulnerability exists in `app/helpers/alchemy/resources_helper.rb` at line 28. The code explicitly bypasses security linting with `# rubocop:disable Security/Eval`, indicating that the use of a dangerous function was known but not properly mitigated. Since `engine_name` is sourced from module definitions that can be influenced by administrative configurations, it allows an authenticated attacker to escape the Ruby sandbox and execute arbitrary system commands on the host OS. Versions 7.4.12 and 8.0.3 fix the issue by replacing `eval()` with `send()`.
Deeper analysisAI
CVE-2026-23885 is a code injection vulnerability (CWE-95) in Alchemy, an open-source Ruby on Rails content management system. It affects versions prior to 7.4.12 and 8.0.3, specifically in the `Alchemy::ResourcesHelper#resource_url_proxy` method within `app/helpers/alchemy/resources_helper.rb` at line 28. The flaw stems from the use of Ruby's `eval()` function to dynamically execute a string derived from the `resource_handler.engine_name` attribute, with the code explicitly bypassing security linting via `# rubocop:disable Security/Eval`. The `engine_name` value originates from module definitions that can be influenced by administrative configurations.
An authenticated attacker with high privileges can exploit this vulnerability by manipulating the `engine_name` through administrative configurations. This allows them to escape the Ruby sandbox and execute arbitrary system commands on the host operating system. The CVSS v3.1 base score of 6.4 (AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H) reflects the need for local access, high attack complexity, and high privileges required.
AlchemyCMS advisories and patches recommend upgrading to version 7.4.12 or 8.0.3, where the issue is fixed by replacing `eval()` with the safer `send()` method. Relevant GitHub commits include 55d03ec600fd9e07faae1138b923790028917d26 and 563c4ce45bf5813b7823bf3403ca1fc32cb769e7, with release tags at v7.4.12 and v8.0.3; further details are in the GHSA-2762-657x-v979 security advisory.
Details
- CWE(s)