PatchClock

PHP security digest · 9 Sep 2026

The CSP Log module enhances any module that adds the CSP header to a site, by providing a reporting endpoint, custom storage, and aggregated reports that can be...

Unrated CVE-2026-87938

Package
drupal/csp_log
Fixed in
1.0.2
Published
Wed 9 Sep 2026, 18:16 LisbonUpdated Sun 25 Oct 2026, 23:25 Lisbon

In plain words

The CSP Log module does not sufficiently sanitise user-supplied values used in database queries, allowing SQL injection. An attacker must have access to an account with the Access CSP reports permission to exploit the flaw.

Am I affected?

Look for drupal/csp_log and its version in composer.lock. The advisory lists 1.0.2 as fixed but gives no affected version range. Check which accounts have the Access CSP reports permission, as exploitation requires access to an account with that permission.

What to do

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

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

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.

If you cannot update yet

Restrict access to the Access CSP reports permission, which an attacker needs to exploit the SQL injection.

The advisory's description

The CSP Log module enhances any module that adds the CSP header to a site, by providing a reporting endpoint, custom storage, and aggregated reports that can be used to trace issues or adapt the CSP headers.

The module did not sufficiently sanitize user-supplied values used in database queries, resulting in an SQL injection vulnerability.

This vulnerability is mitigated by the fact that an attacker needs access to an account with the Access CSP reports permission to exploit the SQL Injection.

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.