CVE-2026-91857 PUBLISHED

MISP: State-changing actions accessible via GET request enabling CSRF

Assigner: CIRCL
Reserved: 15.09.2026 Published: 15.09.2026 Updated: 15.09.2026

Affected versions of MISP expose several state-changing controller actions without restricting them to POST.

The affected actions are:

- EventReportsController::purgeUnusedPictures()

- NoticelistsController::enableNoticelist()

- ServersController::removeOrphanedCorrelations()

- WorkflowsController::rebuildRedis()

The patch adds allowMethod(['post']) to each action, preventing them from being triggered through ordinary GET requests.

For purgeUnusedPictures(), the corresponding UI previously used $.get(). The fix converts that request to POST and supplies X-CSRF-Token, while the controller enables header-only CSRF validation for that AJAX action.

Because GET requests can be induced cross-origin through links, images, redirects, or navigation, accepting GET for these state-changing operations can let an attacker trigger them using the authenticated victim's session.

Version affected: ≤2.5.45

Metrics

CVSS Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N
CVSS Score: 5.3

Product Status

Vendor MISP
Product MISP
Versions
  • affected from 0 to 2.5.46 (excl.)

Solutions

The vulnerability is remediated by restricting all four state-changing actions to accept only POST requests via the CakePHP allowMethod() guard. Additionally, the client-side JavaScript for purgeUnusedPictures is updated to issue a POST request with the page's CSRF token in the X-CSRF-Token header, and a beforeFilter() hook is added to EventReportsController to configure header-only CSRF token validation for that specific action, since it is invoked via hand-built AJAX rather than a rendered form.

Credits

  • iglocska remediation developer
  • Claude Opus 5 (1M context) remediation developer

References

Problem Types

  • CWE-352 Cross-Site Request Forgery (CSRF) CWE

Impacts

  • CAPEC-62 Cross Site Request Forgery