CVE-2026-23885: CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection') in AlchemyCMS alchemy_cms
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 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()`.
AI Analysis
Technical Summary
CVE-2026-23885 is a medium severity vulnerability classified under CWE-95 (Improper Neutralization of Directives in Dynamically Evaluated Code, or Eval Injection) affecting AlchemyCMS, an open-source Ruby on Rails content management system. The vulnerability exists in versions prior to 7.4.12 and between 8.0.0.a and 8.0.3 due to the use of Ruby's eval() function in the method Alchemy::ResourcesHelper#resource_url_proxy, specifically at line 28 in app/helpers/alchemy/resources_helper.rb. The eval() function is used to dynamically execute code derived from the resource_handler.engine_name attribute, which is influenced by module definitions that can be configured by administrators. Although the code disables RuboCop security linting warnings for eval, no proper sanitization or validation is applied. This allows an authenticated attacker with administrative privileges to escape the Ruby sandbox and execute arbitrary system commands on the host operating system, potentially leading to full system compromise. The vulnerability does not require user interaction but does require high privilege authentication. The issue is resolved in versions 7.4.12 and 8.0.3 by replacing eval() with the safer send() method, which avoids executing arbitrary code strings. There are no known exploits in the wild at the time of publication, but the potential impact is significant given the ability to execute arbitrary commands. The CVSS v3.1 score is 6.4, reflecting medium severity with high impact on confidentiality, integrity, and availability, but limited by the requirement for high privileges and local access.
Potential Impact
For European organizations using affected versions of AlchemyCMS, this vulnerability poses a significant risk of system compromise. An attacker with administrative access can execute arbitrary commands on the server hosting the CMS, potentially leading to data theft, unauthorized data modification, service disruption, or use of the compromised system as a pivot point for further attacks within the network. Given AlchemyCMS’s role in managing web content, exploitation could also result in defacement, injection of malicious content, or disruption of public-facing services. The requirement for authenticated high-privilege access reduces the risk from external attackers but elevates the threat from insider threats or compromised administrative accounts. Organizations in sectors with strict data protection regulations, such as finance, healthcare, and government, face increased compliance risks and potential reputational damage if exploited. The medium severity rating suggests that while the vulnerability is serious, it is not trivially exploitable by unauthenticated or low-privilege users, somewhat limiting its impact scope.
Mitigation Recommendations
European organizations should immediately upgrade AlchemyCMS installations to version 7.4.12 or 8.0.3 or later, where the eval() usage has been replaced with the safer send() method. Until upgrades are applied, restrict administrative access to trusted personnel and enforce strong authentication mechanisms such as multi-factor authentication to reduce the risk of credential compromise. Conduct thorough audits of administrative configurations and module definitions to detect any unauthorized or suspicious changes to resource_handler.engine_name or related attributes. Implement strict role-based access controls to minimize the number of users with high privileges capable of influencing these configurations. Monitor system and application logs for unusual command execution patterns or unexpected behavior indicative of exploitation attempts. Additionally, consider deploying application-level security controls such as Web Application Firewalls (WAFs) with custom rules to detect and block suspicious payloads targeting this vulnerability. Finally, maintain regular backups and incident response plans to quickly recover from potential compromises.
Affected Countries
Germany, United Kingdom, France, Netherlands, Sweden, Belgium, Italy
CVE-2026-23885: CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection') in AlchemyCMS alchemy_cms
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 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()`.
AI-Powered Analysis
Technical Analysis
CVE-2026-23885 is a medium severity vulnerability classified under CWE-95 (Improper Neutralization of Directives in Dynamically Evaluated Code, or Eval Injection) affecting AlchemyCMS, an open-source Ruby on Rails content management system. The vulnerability exists in versions prior to 7.4.12 and between 8.0.0.a and 8.0.3 due to the use of Ruby's eval() function in the method Alchemy::ResourcesHelper#resource_url_proxy, specifically at line 28 in app/helpers/alchemy/resources_helper.rb. The eval() function is used to dynamically execute code derived from the resource_handler.engine_name attribute, which is influenced by module definitions that can be configured by administrators. Although the code disables RuboCop security linting warnings for eval, no proper sanitization or validation is applied. This allows an authenticated attacker with administrative privileges to escape the Ruby sandbox and execute arbitrary system commands on the host operating system, potentially leading to full system compromise. The vulnerability does not require user interaction but does require high privilege authentication. The issue is resolved in versions 7.4.12 and 8.0.3 by replacing eval() with the safer send() method, which avoids executing arbitrary code strings. There are no known exploits in the wild at the time of publication, but the potential impact is significant given the ability to execute arbitrary commands. The CVSS v3.1 score is 6.4, reflecting medium severity with high impact on confidentiality, integrity, and availability, but limited by the requirement for high privileges and local access.
Potential Impact
For European organizations using affected versions of AlchemyCMS, this vulnerability poses a significant risk of system compromise. An attacker with administrative access can execute arbitrary commands on the server hosting the CMS, potentially leading to data theft, unauthorized data modification, service disruption, or use of the compromised system as a pivot point for further attacks within the network. Given AlchemyCMS’s role in managing web content, exploitation could also result in defacement, injection of malicious content, or disruption of public-facing services. The requirement for authenticated high-privilege access reduces the risk from external attackers but elevates the threat from insider threats or compromised administrative accounts. Organizations in sectors with strict data protection regulations, such as finance, healthcare, and government, face increased compliance risks and potential reputational damage if exploited. The medium severity rating suggests that while the vulnerability is serious, it is not trivially exploitable by unauthenticated or low-privilege users, somewhat limiting its impact scope.
Mitigation Recommendations
European organizations should immediately upgrade AlchemyCMS installations to version 7.4.12 or 8.0.3 or later, where the eval() usage has been replaced with the safer send() method. Until upgrades are applied, restrict administrative access to trusted personnel and enforce strong authentication mechanisms such as multi-factor authentication to reduce the risk of credential compromise. Conduct thorough audits of administrative configurations and module definitions to detect any unauthorized or suspicious changes to resource_handler.engine_name or related attributes. Implement strict role-based access controls to minimize the number of users with high privileges capable of influencing these configurations. Monitor system and application logs for unusual command execution patterns or unexpected behavior indicative of exploitation attempts. Additionally, consider deploying application-level security controls such as Web Application Firewalls (WAFs) with custom rules to detect and block suspicious payloads targeting this vulnerability. Finally, maintain regular backups and incident response plans to quickly recover from potential compromises.
Affected Countries
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- GitHub_M
- Date Reserved
- 2026-01-16T21:02:02.901Z
- Cvss Version
- 3.1
- State
- PUBLISHED
Threat ID: 696ea0384623b1157ccf2ce8
Added to database: 1/19/2026, 9:20:56 PM
Last enriched: 1/27/2026, 8:02:04 PM
Last updated: 2/7/2026, 4:09:24 AM
Views: 146
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Related Threats
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console in Console -> Billing for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.