Niska

symfony/ux-live-component: CSRF Protection Bypass — Accept Header is CORS-Safelisted

  • Ujawniono: 19.06.2026
  • Aktualizacja: 11.10.2026 10:22

Description

When using symfony/ux-live-component, methods annotated with #[LiveAction] are invokable from the browser and mutate server-side state via AJAX. Symfony\UX\LiveComponent\EventListener\LiveComponentSubscriber::isLiveComponentRequest() gated these invocations on the presence of Accept: application/vnd.live-component+html, with a code comment stating that this acted as a CSRF protection.

The Accept header is a CORS-safelisted request header, so a cross-origin fetch() can set it without triggering a preflight. The header therefore provided no CSRF protection. Any #[LiveAction] could be forged cross-origin against a victim's session.

In practice the attack is mitigated by SameSite=Lax session cookies (Symfony's default), but applications using SameSite=None, credentials: 'include' with a permissive cookie policy, or that have been pivoted from another same-origin vector remained exposed.

Resolution

isLiveComponentRequest() now additionally requires the request header X-Requested-With: XMLHttpRequest. This header is not CORS-safelisted, so the browser issues a preflight OPTIONS request for any cross-origin attempt; Symfony does not advertise CORS for LiveComponent endpoints, the preflight fails, and the real request is blocked before it reaches the application. The bundled Stimulus client already sends X-Requested-With on every LiveComponent request (RequestBuilder.ts), so standard usage is unaffected. Cross-origin callers must add X-Requested-With to their CORS Access-Control-Allow-Headers allow-list.

The patch for this issue is available here for branch 2.x (and forward-ported to 3.x).

Credits

Symfony would like to thank Anthropic (via Project Glasswing) for reporting the issue and Hugo Alliaume for providing the fix.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka Composer symfony/ux-live-component >= 2.22.0, < 2.36.0, >= 3.0.0, < 3.1.0 2.36.0, 3.1.0

Odnośniki

Ocena CVSS -
Wektor CVSS
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Słabość (CWE)
CWE-352
Platforma
Composer
Paczka
symfony/ux-live-component
Ujawniono
19.06.2026
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-4m4j-hmqq-3gxm - CC BY 4.0

Historia podatności: symfony/ux-live-component

Wszystkie opisane podatności tej paczki (Paczka Composer), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkich wpisów
6
Pierwsza → ostatnia
05.2025 06.2026
Bez poprawki
0
Wykorzystywana w atakach
0

Rozkład istotności

  • Średnia 3
  • Niska 3

Ujawnienia w latach

  1. 2025: 1
  2. 2026: 5
  1. symfony/ux-live-component: CSRF Protection Bypass — Accept Header is CORS-Safelisted ten wpis
    Niska CVE-2026-49215 >= 2.22.0, < 2.36.0, >= 3.0.0, < 3.1.0 2.36.0, 3.1.0
  2. Niska CVE-2026-49212 >= 2.8.0, < 2.36.0, >= 3.0.0, < 3.1.0 2.36.0, 3.1.0
  3. Średnia CVE-2026-49210 >= 2.8.0, < 2.36.0, >= 3.0.0, < 3.1.0 2.36.0, 3.1.0
  4. Niska CVE-2026-49209 >= 2.5.0, < 2.36.0, >= 3.0.0, < 3.1.0 2.36.0, 3.1.0
  5. Średnia CVE-2026-49208 >= 2.8.0, < 2.36.0, >= 3.0.0, < 3.1.0 2.36.0, 3.1.0

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.