rabbit_holeRabbit Hole lets site builders control what happens when an entity's page is viewed: show it, return an access denied or not found response, or redirect the visitor to another URL.
The module has two vulnerabilities.
Rabbit Hole behavior can be skipped with a specific query parameter. In these cases, an affected entity made Rabbit Hole treat the request as an error page and do nothing. An anonymous visitor could view content a site had configured to return an access denied or not found response, or avoid a configured redirect.
The per-entity settings are stored in fields that the module adds to supported entity types. The module only checks the "Administer Rabbit Hole settings for <entity type>" permission when it decides whether to show those settings on the entity edit form. The fields themselves carry no access control, so Drupal's default field access applies and anyone who can edit the entity can also edit these fields.
The first vulnerability affects every site that relies on Rabbit Hole to deny access to or hide entities. The second is mitigated by the fact that an attacker must have a role with permission to edit the affected entities, and the site must expose a write path that bypasses the entity form, such as JSON:API with writes enabled, REST, or Views Bulk Operations.
Install the latest version:
- If you use the rabbit_hole module, upgrade to rabbit_hole 8.x-1.3
Sites that cannot update immediately can reduce exposure by disabling REST write methods and bulk operations for roles that do not hold the administer permission, or by removing the "Edit any content" permissions from untrusted roles.
- Jakob P (japerry)
- Mohit Aghera (mohit_aghera), provisional member of the Drupal Security Team
- Mohit Aghera (mohit_aghera), provisional member of the Drupal Security Team
- Juraj Nemec (poker10) of the Drupal Security Team