PatchClock

PHP security digest · 21 Oct 2026

Rabbit 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 vis...

Unrated CVE-2026-114571

Package
drupal/rabbit_hole
Fixed in
1.3.0
Published
Wed 21 Oct 2026, 19:12 Lisbon

In plain words

An anonymous visitor could bypass Rabbit Hole behaviour to view entity content configured to return access denied or not found, or avoid a configured redirect. A second flaw lets someone who can edit an entity change its Rabbit Hole settings without the separate permission to administer those settings. This requires a write path that bypasses the entity edit form, such as JSON:API with writes enabled, REST, or Views Bulk Operations.

Am I affected?

Look for drupal/rabbit_hole and its version in composer.lock. The advisory lists 1.3.0 as fixed but gives no affected version range. Check whether your site relies on Rabbit Hole to deny access to or hide entities, or uses its redirects. For the second flaw, check whether any role can edit affected entities and whether the site exposes a write path bypassing the entity form, such as JSON:API with writes enabled, REST, or Views Bulk Operations.

What to do

Check which version you have, then update to a fixed release for your branch (1.3.0):

composer show drupal/rabbit_hole | grep versions
composer update drupal/rabbit_hole

If your version constraint in composer.json keeps you below a fixed release, raise it first. Whether your configuration is affected, and the exact version ranges, are in the advisory itself.

The advisory's description

Rabbit 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.

The advisory

From OSV.dev, which gathers the GitHub Advisory Database, FriendsOfPHP and Drupal security advisories; the summary is theirs. The description is OSV's record of the advisory. "In plain words", "Am I affected?" and "If you cannot update yet" are based on that advisory, and checked to name no version it does not.