/

CVE-2026-107337

Severity:

HIGH RISK

(7.1)

CSRF (CWE-352) in Malcolm Kiosk Flask Script Endpoint

CVE-2026-107337

Awaiting Analysis

Vulnerability type

Category:

Cross-Site Request Forgery

CWE:

CWE-352

Impact:

Unauthorized destructive actions and security-monitoring disruption

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Malcolm's kiosk Flask application exposes a script-management endpoint without authentication and permits requests from arbitrary origins. A remote attacker may use cross-site request forgery to make an operator's browser submit management commands, potentially deleting forensic data or disabling monitoring when the kiosk is reachable and the operator interacts with a malicious page.

Malcolm's kiosk Flask application exposes a script-management endpoint without authentication and permits requests from arbitrary origins. A remote attacker may use cross-site request forgery to make an operator's browser submit management commands, potentially deleting forensic data or disabling monitoring when the kiosk is reachable and the operator interacts with a malicious page.

Affected context

The issue occurs in Malcolm deployments where the kiosk Flask application exposes the POST /script_call/<script> endpoint with no authentication and uses permissive wildcard CORS configuration. It becomes risky when an operator's browser can reach the kiosk and process attacker-controlled cross-origin requests, allowing management actions to be triggered through the operator's browser context.

The issue occurs in Malcolm deployments where the kiosk Flask application exposes the POST /script_call/<script> endpoint with no authentication and uses permissive wildcard CORS configuration. It becomes risky when an operator's browser can reach the kiosk and process attacker-controlled cross-origin requests, allowing management actions to be triggered through the operator's browser context.

Exploit preconditions

  • Attack surface: Network-accessible Malcolm kiosk Flask application
  • Required access: No direct authentication to the script endpoint; the attacker needs to cause an operator's browser to send a request
  • Trigger point: A cross-site POST request to /script_call/<script>
  • Why exploitation is possible: The endpoint lacks request-origin and anti-CSRF protections, while wildcard CORS broadens the set of origins able to interact with it
  • Attack surface: Network-accessible Malcolm kiosk Flask application
  • Required access: No direct authentication to the script endpoint; the attacker needs to cause an operator's browser to send a request
  • Trigger point: A cross-site POST request to /script_call/<script>
  • Why exploitation is possible: The endpoint lacks request-origin and anti-CSRF protections, while wildcard CORS broadens the set of origins able to interact with it

Why this happens

The underlying bug is a missing cross-site request forgery defense on a state-changing management endpoint. The application accepts browser-originated commands without requiring a user-specific anti-CSRF token, trusted origin validation, or equivalent authorization control. This maps to CWE-352: Cross-Site Request Forgery, where an attacker causes a user's browser to submit an unintended request using the user's available browser context.

The underlying bug is a missing cross-site request forgery defense on a state-changing management endpoint. The application accepts browser-originated commands without requiring a user-specific anti-CSRF token, trusted origin validation, or equivalent authorization control. This maps to CWE-352: Cross-Site Request Forgery, where an attacker causes a user's browser to submit an unintended request using the user's available browser context.

Potential impact

  • Captured network traffic and forensic logs may be permanently deleted
  • Security monitoring may be stopped or disabled
  • Investigation history and evidence availability could be impaired
  • The kiosk's management functions may be invoked without intended operator approval
  • Incident response and detection coverage could be disrupted
  • Captured network traffic and forensic logs may be permanently deleted
  • Security monitoring may be stopped or disabled
  • Investigation history and evidence availability could be impaired
  • The kiosk's management functions may be invoked without intended operator approval
  • Incident response and detection coverage could be disrupted

General mitigation guidance

Mitigation generally focuses on protecting every state-changing management action with explicit authorization and cross-site request defenses.

Common defensive patterns include:

  • Requiring authenticated, least-privilege access for script-management endpoints
  • Enforcing anti-CSRF tokens for browser-based state-changing requests
  • Validating trusted origins and avoiding wildcard CORS for privileged operations
  • Restricting allowed HTTP methods and rejecting unexpected content types
  • Separating destructive administrative actions from operator-facing browser routes
  • Requiring explicit confirmation and additional authorization for data deletion or monitoring changes
  • Applying network segmentation and least-privilege service permissions

Mitigation generally focuses on protecting every state-changing management action with explicit authorization and cross-site request defenses.

Common defensive patterns include:

  • Requiring authenticated, least-privilege access for script-management endpoints
  • Enforcing anti-CSRF tokens for browser-based state-changing requests
  • Validating trusted origins and avoiding wildcard CORS for privileged operations
  • Restricting allowed HTTP methods and rejecting unexpected content types
  • Separating destructive administrative actions from operator-facing browser routes
  • Requiring explicit confirmation and additional authorization for data deletion or monitoring changes
  • Applying network segmentation and least-privilege service permissions

How teams detect issues like this

Organizations can identify related weaknesses through:

  • Static analysis for state-changing routes without CSRF middleware or authorization checks
  • Code review of CORS configuration, especially wildcard origins on privileged endpoints
  • Testing whether cross-origin forms or requests can invoke administrative actions
  • Policy enforcement requiring authentication and anti-CSRF controls for destructive operations
  • Monitoring logs for unexpected script invocations, origin values, request patterns, and operator-session activity
  • Automated application-security testing that checks browser-based cross-origin request behavior

Organizations can identify related weaknesses through:

  • Static analysis for state-changing routes without CSRF middleware or authorization checks
  • Code review of CORS configuration, especially wildcard origins on privileged endpoints
  • Testing whether cross-origin forms or requests can invoke administrative actions
  • Policy enforcement requiring authentication and anti-CSRF controls for destructive operations
  • Monitoring logs for unexpected script invocations, origin values, request patterns, and operator-session activity
  • Automated application-security testing that checks browser-based cross-origin request behavior

Sources

SourceLink
github.comgithub.com/cisagov/CSAF/blob/develop/csaf_files/OT/white/2026/icsa-26-280-01.json
github.comgithub.com/cisagov/Malcolm/security/advisories/GHSA-w8gq-4v5x-xrrm

Frequently asked

questions

It may be exploitable remotely when an attacker can host or control a page that an operator visits and the operator's browser can reach the Malcolm kiosk. Network exposure and browser security context determine the practical scope.

The affected endpoint reportedly has no authentication requirement. The attacker generally needs to induce an operator's browser to send the request rather than authenticate directly to the endpoint.

Require authentication and authorization for management actions, add robust anti-CSRF protections, and restrict CORS to explicitly trusted origins. Destructive operations should receive additional authorization controls.

Treat browser-accessible state-changing routes as privileged APIs, require security review for CORS changes, enforce CSRF and authorization policies in shared middleware, and test cross-origin behavior during application security assessments.

It may be exploitable remotely when an attacker can host or control a page that an operator visits and the operator's browser can reach the Malcolm kiosk. Network exposure and browser security context determine the practical scope.

The affected endpoint reportedly has no authentication requirement. The attacker generally needs to induce an operator's browser to send the request rather than authenticate directly to the endpoint.

Require authentication and authorization for management actions, add robust anti-CSRF protections, and restrict CORS to explicitly trusted origins. Destructive operations should receive additional authorization controls.

Treat browser-accessible state-changing routes as privileged APIs, require security review for CORS changes, enforce CSRF and authorization policies in shared middleware, and test cross-origin behavior during application security assessments.

Find out what's already
exploitable in your codebase.