GHSA-92hv-j533-69wc: Low severity pip/wagtail vulnerability
Impact By passing specific HTTP headers to the document serve URL endpoint, an attacker was able to determine whether a document with a given ID matched a specified SHA1 hash, regardless of any permission restrictions on the document or knowing its filename. This could allow an attacker to determine whether a document with a specific known hash is present in the Wagtail document library.
This vulnerability does not expose the document's contents or any metadata beyond the already known SHA1 hash, and does not expose information about any documents for which the attacker does not know the SHA1 hash.
Patches Patched versions have been released as Wagtail 7.0.9, 7.3.4, 7.4.3 and 8.0rc2.
Workarounds Site owners who are unable to upgrade can strip If-Match and If-None-Match from anonymous requests to /documents/ at the reverse proxy, or use a custom document model without a filehash attribute.
Acknowledgements Many thanks to Anand Himanshu 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 Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
pip/wagtailto a version that resolves this vulnerability.Fixed in 8.0rc2 - Upgrade
Upgrade
pip/wagtailto a version that resolves this vulnerability.Fixed in 7.4.3 - Upgrade
Upgrade
pip/wagtailto a version that resolves this vulnerability.Fixed in 7.3.4 - Upgrade
Upgrade
pip/wagtailto a version that resolves this vulnerability.Fixed in 7.0.9 - Upgrade
Upgrade
Wagtailto a version that resolves this vulnerability.Fixed in 7.0.9 - Upgrade
Upgrade
Wagtailto a version that resolves this vulnerability.Fixed in 7.3.4 - Upgrade
Upgrade
Wagtailto a version that resolves this vulnerability.Fixed in 7.4.3 - Upgrade
Upgrade
Wagtailto a version that resolves this vulnerability.Fixed in 8.0rc2 - Configuration
For anonymous requests to the Wagtail document serve URL endpoint (/documents/), configure the reverse proxy to strip the If-Match and If-None-Match headers.
Reverse proxy in front of Wagtail Remove HTTP headers from anonymous requests to /documents/ = strip If-Match and If-None-Match - Configuration
As a workaround when unable to upgrade, use a custom Wagtail document model that does not include a file_hash attribute.
Wagtail custom document model Presence of file_hash attribute = use a custom document model without a file_hash attribute
Event History
Frequently Asked Questions
What must an attacker know to exploit this issue?
An attacker must know a document ID and a specific SHA1 hash to test. They can use specially crafted HTTP headers against the document serve URL to determine whether that document matches the known hash.
What information is exposed if exploitation succeeds?
The issue reveals only whether a document with the specified ID matches the attacker’s already known SHA1 hash. It does not disclose document contents, filenames, or other metadata, and it cannot reveal information about documents whose SHA1 hashes are unknown.
How can exposure be reduced if Wagtail cannot be upgraded immediately?
At the reverse proxy, strip the If-Match and If-None-Match headers from anonymous requests to /documents/. Alternatively, use a custom document model that does not have a file_hash attribute.
Which releases contain the fix?
Patched releases are Wagtail 7.0.9, 7.3.4, 7.4.3, and 8.0rc2.