Summary
Savon::Model evaluates WSDL operation names as Ruby source
Advisory details
Impact
Savon::Model generated SOAP operation methods by interpolating operation names into Ruby source passed to module_eval. An attacker who can control the operation names of a WSDL, can inject Ruby code that executes in the application process. This affects only the .all_operations class method provided by Savon::Model to automatically register all operations provided by the WSDL. Configuring Savon::Model with trusted operation names via .operations is safe.
Patches
Patched in Savon 2.17.2.
Users should upgrade to 2.17.2 or later.
Workarounds
Avoid .all_operations for untrusted WSDL documents. Use .operations with trusted operation names instead.
References
- https://github.com/advisories/GHSA-mx5j-mp4f-g8jg
- https://github.com/savonrb/savon/security/advisories/GHSA-mx5j-mp4f-g8jg
- https://github.com/savonrb/savon/commit/8f22eb543e7436f6247172c9be47e22792d375e9
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/savon/CVE-2026-53510.yml
- https://github.com/savonrb/savon/releases/tag/v2.17.2
- https://www.cve.org/CVERecord/SearchResults?query=CVE-2026-53510
Related vulnerabilities
All Supply chain →- HIGHCVE-2026-75911
CodeWhale: Project config `allow_shell` override enables arbitrary shell command execution via cloned repository
- HIGHCVE-2026-75858
CodeWhale: rlm_eval auto-approves arbitrary Python execution, bypassing the user's approval policy (RCE)
- CRITICALCVE-2026-62681
Orval: RCE via OpenAPI path -> unescaped request-URL template literal (backtick breakout)
- CRITICALCVE-2026-62682
Orval: RCE via servers[].url -> unescaped request-URL template literal (with getBaseUrlFromSpecification)
- CRITICALCVE-2026-72717
Orval: Import-time RCE via schema default -> zod module-level template literal
- CRITICALCVE-2026-71869
Orval: Import-time RCE via array-items default -> zod module-level template literal