GitHub Advisoryadvisory · Packagist

GHSA-2xmm-g482-4439 DQL injection through sorting parameters blocked

CRITICAL Published 2022-03-15 Modified 2022-03-15 Official page ↗
Aliases
CVE-2022-24752
Ecosystem
Packagist
Packages
sylius/grid-bundle
Severity
Critical
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weaknesses
CWE-89
Reviewed
2022-03-15

Affected packages

• Packagist sylius/grid-bundle: < 1.10.1 → fixed in 1.10.1

Description

Impact Values added at the end of query sorting were passed directly to the DB. We don't know, if it could lead to direct SQL injections, however, we should not allow for easy injection of values there anyway. Patches The issue is fixed in version 1.10.1 and in 1.11-rc.1 Workarounds You have to overwrite your `Sylius\Component\Grid\Sorting\Sorter.php` class: ```php getFields(); $expressionBuilder = $dataSource->getExpressionBuilder(); $sorting = $parameters->get('sorting', $grid->getSorting()); $this->validateSortingParams($sorting, $enabledFields); foreach ($sorting as $field => $order) { $this->validateFieldNames($field, $enabledFields); $gridField = $grid->getField($field); $property = $gridField->getSortable(); if (null !== $property) { $expressionBuilder->addOrderBy($property, $order); } } } private function validateSortingParams(array $sorting, array $enabledFields): void { foreach (array_keys($enabledFields) as $key) { if (array_key_exists($key, $sorting) && !in_array($sorting[$key], ['asc', 'desc'])) { throw new BadRequestHttpException(sprintf('%s is not valid, use asc or desc instead.', $sorting[$key])); } } } private function validateFieldNames(string $fieldName, array $enabledFields): void { $enabledFieldsNames = array_keys($enabledFields); if (!in_array($fieldName, $enabledFieldsNames, true)) { throw new BadRequestHttpException(sprintf('%s is not valid field, did you mean one of these: %s?', $fieldName, implode(', ', $enabledFieldsNames))); } } } ``` and register it in your container: ```yaml config/services.yaml services: # ... sylius.grid.sorter: class: App\Sorting\Sorter ``` For more information If you have any questions or comments about this advisory: • Open an issue in Sylius issues • Email us at [email protected]

Related

Alias · CVE (1)

  • CVE-2022-24752 SyliusGridBundle is a package of generic data grids for Symfony applications. vulnerability

Weakness · CWE (1)

  • CWE-89 Improper Neutralization of Special Elements used in an SQL Command weakness

References