{"id":"GHSA-23m2-mghx-vqmf","summary":"Wagtail: Reflected XSS in dynamic image URL generator view","details":"### Impact\n\nA reflected cross-site scripting (XSS) vulnerability exists on the dynamic image URL generator view within the Wagtail admin interface. A user with a limited-permission editor account for the Wagtail admin could craft a URL that, when viewed by a user with higher privileges, could perform actions with that user's credentials. The vulnerability is present for all sites, even if they do not enable the [dynamic image serve view](https://docs.wagtail.org/en/stable/advanced_topics/images/image_serve_view.html). The vulnerability is not exploitable by an ordinary site visitor without access to the Wagtail admin.\n\n### Patches\n\nPatched versions have been released as Wagtail 7.3.3 and 7.4.2.\n\n### Workarounds\n\nFor sites that cannot easily upgrade to a current supported version, the vulnerability can be patched by adding the following code to `urls.py` URL pattern declarations to override the vulnerable view. This disables the admin dynamic image preview functionality, while the public-facing dynamic image serve view still works.\n\n```python\nfrom django.http import HttpResponseBadRequest\nfrom django.urls import path\nfrom wagtail.admin import urls as wagtailadmin_urls\n\ndef disabled_output(request, image_id):\n    return HttpResponseBadRequest(\"\", content_type=\"text/plain\")\n\nurlpatterns = [\n    # Example where the CMS admin is at /admin/.\n    # Add this before the Wagtail admin URLs registration, with the same sub-path.\n    path(\"admin/images/\u003cint:image_id\u003e/generate_url/output/\", disabled_output),\n    path(\"admin/\", include(wagtailadmin_urls)),\n]\n```\n\n### Acknowledgements\n\nMany thanks to Thibaud Colas (@thibaudcolas) for reporting this issue.\n\n### For more information\n\nIf you have any questions or comments about this advisory:\n\n- Visit Wagtail's [support channels](https://docs.wagtail.org/en/stable/support.html)\n- Email us at [security@wagtail.org](mailto:security@wagtail.org) (view our [security policy](https://github.com/wagtail/wagtail/security/policy) for more information).","aliases":["CVE-2026-54263","PYSEC-2026-616"],"modified":"2026-08-20T18:45:16.190340792Z","published":"2026-08-20T18:40:26Z","database_specific":{"cwe_ids":["CWE-79"],"severity":"HIGH","github_reviewed":true,"github_reviewed_at":"2026-08-20T18:40:26Z","nvd_published_at":"2026-07-01T22:16:49Z"},"references":[{"type":"WEB","url":"https://github.com/wagtail/wagtail/security/advisories/GHSA-23m2-mghx-vqmf"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-54263"},{"type":"WEB","url":"https://github.com/pypa/advisory-database/tree/main/vulns/wagtail/PYSEC-2026-616.yaml"},{"type":"PACKAGE","url":"https://github.com/wagtail/wagtail"}],"affected":[{"package":{"name":"wagtail","ecosystem":"PyPI","purl":"pkg:pypi/wagtail"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.3"},{"fixed":"7.3.3"}]}],"versions":["7.3","7.3.1","7.3.2"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-23m2-mghx-vqmf/GHSA-23m2-mghx-vqmf.json"}},{"package":{"name":"wagtail","ecosystem":"PyPI","purl":"pkg:pypi/wagtail"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.4"},{"fixed":"7.4.2"}]}],"versions":["7.4","7.4.1"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-23m2-mghx-vqmf/GHSA-23m2-mghx-vqmf.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N"}]}