p PatchFirst

GHSA-2wwr-9x6f-88gp

GHSA-2wwr-9x6f-88gp · EasyAdminBundle has path traversal and reflected XSS in Flag and Icon Twig components

Здесь приведены факты из открытых источников об уязвимостях. Перед обновлением ознакомьтесь с исходным сообщением.

EasyAdminBundle ships two public Twig components — `<twig:ea:Flag countryCode="...">` and `<twig:ea:Icon name="...">` — that load SVG files from disk using a path built directly from a public component property, and then render the resulting markup with the Twig `|raw` filter. When an application binds either of those properties to data that is influenced by an end user, the lack of validation on the property value leads to two distinct issues: - Arbitrary `.svg` file disclosure (both components) — the property value is concatenated into a filesystem path without normalizing or constraining it, so `..` segments are preserved and resolved by PHP. Any file on the server whose absolute path ends in `.svg` (for example, user-uploaded SVG icons stored elsewhere on the host) can be read and embedded into the rendered page. - Reflected XSS in the admin UI (Flag component only) — when the requested flag file does not exist, the Flag component falls back to a hard-coded SVG string that interpolates the raw `countryCode` value twice, and the parent template renders that string with `|raw`. An attacker who controls `countryCode` can therefore inject arbitrary HTML/JavaScript that will execute inside the authenticated admin context that rendered the component. The first-party usage shipped by EasyAdminBundle itself is not affected: the bundle only passes ISO 3166 alpha-2 codes validated through `Symfony\Component\Intl\Countries` to the `Flag` component, and only hard-coded `internal:..` names or values previously set in PHP via `MenuItem::setIcon()` to the `Icon` component. The vulnerability is reachable only in third-party templates that pass attacker-controlled data into these properties. ### Impact Path traversal is information disclosure bounded by the `.svg` extension; reflected XSS in Flag runs in the admin context and is therefore more sensitive but requires a vulnerable template wiring and user interaction. ### Affected components - `EasyCorp\Bundle\EasyAdminBundle\Twig\Component\Flag` — public Twig tag `<twig:ea:Flag>`, property `countryCode`. - `EasyCorp\Bundle\EasyAdminBundle\Twig\Component\Icon` — public Twig tag `<twig:ea:Icon>`, property `name` when the value starts with the `internal:` prefix. ### Credit EasyAdmin would like to thank Claude Mythos Preview (via Project Glasswing and The PHP Foundation) for reporting the issue and providing the fix.

CVSS 5.3 · Средний · Есть исправление

Опубликовано
Обновлено

Стек: php

Затронутые продукты и версии

  • easycorp/easyadmin-bundle Packagist

    Версии
    • v4.0.0
    • v4.0.1
    • v4.0.10
    • v4.0.2
    • v4.0.3
    • v4.0.4
    • v4.0.5
    • v4.0.6
    • v4.0.7
    • v4.0.8
    • v4.0.9
    • v4.1.0
    • v4.1.1
    • v4.1.2
    • v4.10.0
    • v4.10.1
    • v4.10.2
    • v4.10.3
    • v4.10.4
    • v4.10.5
    • v4.11.0
    • v4.11.1
    • v4.12.0
    • v4.13.0
    • v4.13.1
    • v4.13.2
    • v4.13.3
    • v4.13.4
    • v4.13.5
    • v4.13.6
    • v4.14.0
    • v4.14.1
    • v4.14.2
    • v4.14.3
    • v4.14.4
    • v4.14.5
    • v4.15.0
    • v4.15.1
    • v4.16.0
    • v4.16.1
    • v4.16.2
    • v4.17.0
    • v4.18.0
    • v4.19.0
    • v4.2.0
    • v4.2.1
    • v4.2.2
    • v4.2.3
    • v4.2.4
    • v4.20.0
    • v4.20.1
    • v4.20.2
    • v4.20.3
    • v4.20.4
    • v4.20.5
    • v4.20.6
    • v4.20.7
    • v4.20.8
    • v4.21.0
    • v4.21.1
    • v4.22.0
    • v4.22.1
    • v4.22.2
    • v4.23.0
    • v4.23.1
    • v4.23.2
    • v4.23.3
    • v4.24.0
    • v4.24.1
    • v4.24.2
    • v4.24.3
    • v4.24.4
    • v4.24.5
    • v4.24.6
    • v4.24.7
    • v4.24.8
    • v4.24.9
    • v4.25.0
    • v4.25.1
    • v4.26.0
    • v4.26.1
    • v4.26.2
    • v4.26.3
    • v4.26.4
    • v4.26.5
    • v4.27.0
    • v4.27.1
    • v4.27.2
    • v4.27.3
    • v4.27.4
    • v4.27.5
    • v4.27.6
    • v4.27.7
    • v4.27.8
    • v4.28.0
    • v4.28.1
    • v4.29.0
    • v4.29.1
    • v4.29.2
    • v4.29.3
    • v4.29.4
    • v4.29.5
    • v4.29.6
    • v4.29.7
    • v4.29.8
    • v4.29.9
    • v4.3.0
    • v4.3.1
    • v4.3.2
    • v4.3.3
    • v4.3.4
    • v4.3.5
    • v4.4.0
    • v4.4.1
    • v4.4.2
    • v4.4.3
    • v4.4.4
    • v4.4.5
    • v4.5.0
    • v4.5.1
    • v4.5.2
    • v4.6.0
    • v4.6.1
    • v4.6.2
    • v4.6.3
    • v4.6.4
    • v4.6.5
    • v4.6.6
    • v4.7.0
    • v4.7.1
    • v4.7.2
    • v4.7.3
    • v4.7.4
    • v4.7.5
    • v4.7.6
    • v4.7.7
    • v4.8.0
    • v4.8.1
    • v4.8.10
    • v4.8.11
    • v4.8.12
    • v4.8.13
    • v4.8.2
    • v4.8.3
    • v4.8.4
    • v4.8.5
    • v4.8.6
    • v4.8.7
    • v4.8.8
    • v4.8.9
    • v4.9.0
    • v4.9.1
    • v4.9.2
    • v4.9.3
    • v4.9.4
    • v4.9.5
    Затронутые диапазоны версий
    • ECOSYSTEM: ≥ 4.0.0, < 4.29.10

    Обновитесь до 4.29.10

  • easycorp/easyadmin-bundle Packagist

    Версии
    • v5.0.0
    • v5.0.1
    • v5.0.2
    • v5.0.3
    • v5.0.4
    • v5.0.5
    • v5.0.6
    • v5.0.7
    • v5.0.8
    • v5.0.9
    Затронутые диапазоны версий
    • ECOSYSTEM: ≥ 5.0.0, < 5.0.10

    Обновитесь до 5.0.10

Первоисточники

Проверьте свой сервер →