CVE-2026-91859: MISP Access Log Entry Overwritten by Error Controller's Second beforeFilter Pass
Affected versions of MISP can record incorrect access-log data for requests that terminate in an exception.
Because CakeErrorController extends AppController, exception rendering runs the application startup path a second time. As a result, accessMonitor() calls AccessLog::logRequest() twice for one HTTP request. The second deferred writer measures the error-controller execution instead of the original request and can overwrite the row created by the first pass. The corrupted fields include request duration, SQL query count, memory usage, and potentially the recorded query log.
The bug was masked because the same model instance retained the ID of the first saved row, causing the later save to issue an UPDATE rather than insert an obvious duplicate row.
Version affected: ≤2.5.45
Affected Software
Event History
Frequently Asked Questions
Which requests can produce incorrect access-log records?
Requests that terminate in an exception can be logged incorrectly. The error-rendering path runs application startup a second time, causing the same request’s access log entry to be written again.
What information in the access log may be unreliable?
The overwritten entry can contain incorrect request duration, SQL query count, memory usage, and potentially the recorded query log. The later write reflects error-controller execution rather than the original request.
Does this create a visible duplicate access-log entry?
Not necessarily. The same model instance retains the ID from the first saved row, so the second save can update that original row instead of creating a duplicate.
Which versions are affected?
MISP versions up to and including 2.5.45 are affected.