CVE-2020-15143 – sylius/resource-bundle
Package
Manager: composer
Name: sylius/resource-bundle
Vulnerable Version: >=1.4.0 <1.4.7 || >=1.5.0 <1.5.2 || >=1.6.0 <1.6.4 || >=1.0.0 <1.3.14
Severity
Level: High
CVSS v3.1: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N
CVSS v4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
EPSS: 0.01064 pctl0.76838
Details
Remote Code Execution in SyliusResourceBundle ### Impact Request parameters injected inside an expression evaluated by `symfony/expression-language` package haven't been sanitized properly. This allows the attacker to access any public service by manipulating that request parameter, allowing for Remote Code Execution. The vulnerable versions include: `<=1.3.13 || >=1.4.0 <=1.4.6 || >=1.5.0 <=1.5.1 || >=1.6.0 <=1.6.3`. ### Example ```yaml foo: path: /foo/{id} defaults: _sylius: repository: method: findSome arguments: entity: "expr:service('repository').find($id)" ``` In this case, `$id` can be prepared in a way that calls other services. If you visit `/foo/"~service('doctrine').getManager().getConnection().executeQuery("DELETE * FROM TABLE")~"`, it will result in a following expression `expr:service('repository').find(""~service('doctrine').getManager().getConnection().executeQuery("DELETE * FROM TABLE")~"")`, which will execute a query on the currently connected database. To find a vulnerability in your application, look for any routing definition that uses request parameters inside expression language. ### Patches This issue has been patched for versions 1.3.14, 1.4.7, 1.5.2 and 1.6.4. Versions prior to 1.3 were not patched. ### Workarounds The fix requires adding `addslashes` in `ParametersParser::parseRequestValueExpression` to sanitize user input before evaluating it using the expression language. ```php - return is_string($variable) ? sprintf('"%s"', $variable) : $variable; + return is_string($variable) ? sprintf('"%s"', addslashes($variable)) : $variable; ``` ### Acknowledgements This security issue has been reported by Craig Blanchette (@isometriks), thanks a lot! ### For more information If you have any questions or comments about this advisory: * Email us at [security@sylius.com](mailto:security@sylius.com)
Metadata
Created: 2020-08-19T21:04:25Z
Modified: 2021-11-19T15:41:13Z
Source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/08/GHSA-p4pj-9g59-4ppv/GHSA-p4pj-9g59-4ppv.json
CWE IDs: ["CWE-74", "CWE-917"]
Alternative ID: GHSA-p4pj-9g59-4ppv
Finding: F004
Auto approve: 1