GHSA-3vrh-m9w7-v94f CVE-2026-55468 PYSEC-2026-3939
Wagtail: Improper restriction handling on Pages admin API
- Severity
- 4.3 / 10
- Medium · CVSS 3.1
- Exploit chance (EPSS)
- 0.34%
- Chance of exploitation in the next 30 days. Higher than 27.77% of scored vulnerabilities.
- Known exploited
- No
- Not in CISA's catalog
- Weakness
- CWE-280 Improper Handling of Insufficient Permissions or Privileges
- Fix
7.0.9- Upgrade wagtail to this version or later
Description
Impact
The internal Pages admin API incorrectly returns page fields without access control when they are declared in api_fields. A user with access to the Wagtail admin can use this API to fetch draft and live page fields’ contents that are part of api_fields on the base page model (title, slug, seo_title, search_description), as well as all custom fields declared in api_fields.
The vulnerability is not exploitable by an ordinary site visitor without access to the Wagtail admin.
Patches
Patched versions have been released as Wagtail 7.0.9, 7.3.4, 7.4.3 and 8.0rc2.
Workarounds
Site owners unable to upgrade can apply the fix by overriding the relevant method on PagesAdminAPIViewSet to patch all vulnerable admin API endpoints:
# wagtail_hooks.py or AppConfig.ready()
from wagtail.admin.api.views import PagesAdminAPIViewSet
from wagtail.permissions import page_permission_policy
def _restricted_get_base_queryset(self):
return page_permission_policy.explorable_instances(self.request.user)
PagesAdminAPIViewSet.get_base_queryset = _restricted_get_base_queryset
Acknowledgements
Many thanks to xuliang@QAX for reporting this issue.
For more information
If you have any questions or comments about this advisory:
- Visit Wagtail's support channels
- Email us at security@wagtail.org (view our security policy for more information).
Affected versions
PyPI
| Package | Vulnerable | Fixed in |
|---|---|---|
| wagtail | < 7.0.9 |
7.0.9 |
| wagtail | >= 7.1, < 7.3.4 |
7.3.4 |
| wagtail | >= 7.4, < 7.4.3 |
7.4.3 |
| wagtail | >= 8.0rc1, < 8.0rc2 |
8.0rc2 |
| wagtail | < 7.0.9>= 7.1, < 7.3.4>= 7.4, < 7.4.3>= 8.0rc1, < 8.0rc2 |
7.0.97.3.47.4.38.0rc2 |
How to fix
Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.
wagtail PyPI → 7.0.9
- pip
pip install --upgrade "wagtail>=7.0.9"- poetry
poetry add "wagtail>=7.0.9"- uv
uv add "wagtail>=7.0.9"
Severity breakdown
CVSS 3.1 4.3
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
- Attack vector
- Network
- Attack complexity
- Low
- Privileges required
- Low
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- Low
- Integrity
- None
- Availability
- None
Weakness
CWE-280: Improper Handling of Insufficient Permissions or Privileges
The product does not handle or incorrectly handles when it has insufficient privileges to access resources or functionality as specified by their permissions. This may cause it to follow unexpected code paths that may leave the product in an invalid state.
How to prevent it
- Architecture and Design: Compartmentalize the system to have "safe" areas where trust boundaries can be unambiguously drawn. Do not allow sensitive data to go outside of the trust boundary and always be careful when interfacing with a compartment outside of the safe area. Ensure that appropriate compartmentalization is built into the system design, and the compartmentalization allows for and reinforces privilege separation functionality. Architects and designers should rely on the principle of least privilege to decide the appropriate time to use privileges and the time to drop privileges.
- Implementation: Always check to see if you have successfully accessed a resource or system functionality, and use proper error handling if it is unsuccessful. Do this even when you are operating in a highly privileged mode, because errors or environmental conditions might still cause a failure. For example, environments with highly granular permissions/privilege models, such as Windows or Linux capabilities, can cause unexpected failures.
References
Advisories
Packages
Other links
- github.com/wagtail/wagtail/security/advisories/GHSA-3vrh-m9w7-v94f
- github.com/wagtail/wagtail/commit/5608cfb714a130412f862beab53c78de02b79975
- github.com/wagtail/wagtail/commit/aef935530d5289406ca325b42747af15f3b28ac4
- github.com/wagtail/wagtail/commit/d99d2bec2b0aca46d88014416432c717240cd559
- github.com/wagtail/wagtail/commit/e2fa629b7a51ec29d59e45eead930feee0d3c4b3
Timeline
- Published
- Last updated by the source
- Latest EPSS score
Related advisories
| Advisory | Severity | Why it's related |
|---|---|---|
| GHSA-jm5p-837g-rv8g Wagtail: Improper restriction handling on Page translation API endpoint | Medium | Also affects wagtail |
| GHSA-x5cx-w6p2-mxf2 Wagtail: Improper permission handling when copying snippets | Medium | Also affects wagtail |
| GHSA-c2xx-cjmh-9q8f Wagtail: Improper restriction handling on descendant collections in Documents and Images API | Medium | Also affects wagtail |
| GHSA-92hv-j533-69wc Wagtail: Identification of documents by SHA1 hash | Low | Also affects wagtail |
| GHSA-23m2-mghx-vqmf Wagtail: Reflected XSS in dynamic image URL generator view | High | Also affects wagtail |
| GHSA-8634-mr4j-r72c Wagtail: Pages translations can be created without page permissions when using simple_translation | Medium | Also affects wagtail |
| GHSA-r6p4-grq7-xm4m Wagtail: Improper permission handling in image preview | Medium | Also affects wagtail |
| GHSA-f2p5-j6fg-5cxf Wagtail: Denial of service via unbounded filter specs in the image preview | Low | Also affects wagtail |
MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.
Check your repos with MergeHarbor