VDB
Sign up
CRITICAL9.6

GHSA-h6m7-j4h3-9rf5

Remote Code Execution in SyliusResourceBundle

Quick fix

GHSA-h6m7-j4h3-9rf5 — sylius/resource-bundle: upgrade to the fixed version with the command below.

composer require sylius/resource-bundle:^1.4.7

Details

### 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 sylius_grid: grids: foo: fields: bar: options: baz: "expr:service('sylius.repository.product').find($id)" ```

In this case, `$id` can be prepared in a way that calls other services.

If you visit `/route?id="~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 `OptionsParser::parseOptionExpression` 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)

Are you affected?

Enter the version of the package you're using.

Affected packages

Packagist/sylius/resource-bundle
Introduced in: 1.4.0Fixed in: 1.4.7
Fixcomposer require sylius/resource-bundle:^1.4.7
Packagist/sylius/resource-bundle
Introduced in: 1.5.0Fixed in: 1.5.2
Fixcomposer require sylius/resource-bundle:^1.5.2
Packagist/sylius/resource-bundle
Introduced in: 1.6.0Fixed in: 1.6.4
Fixcomposer require sylius/resource-bundle:^1.6.4
Packagist/sylius/resource-bundle
Introduced in: 1.0.0Fixed in: 1.3.14
Fixcomposer require sylius/resource-bundle:^1.3.14

References