/

CVE-2026-115931

Severity:

CRITICAL RISK

(9.9)

Improper File Handling (CWE-73) in Postiz Backend API

CVE-2026-115931

Deferred

Vulnerability type

Category:

Improper File Handling

CWE:

CWE-73, CWE-470

Impact:

Sensitive Information Disclosure and Denial of Service

Severity:

CRITICAL RISK

(9.9)

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

Postiz exposes backend function dispatching without adequately restricting which helper functions authenticated users can invoke. A signed-in user may abuse a file-reading helper to disclose server-readable files, including environment variables containing session-signing secrets and service credentials, and may also trigger backend termination.

Postiz exposes backend function dispatching without adequately restricting which helper functions authenticated users can invoke. A signed-in user may abuse a file-reading helper to disclose server-readable files, including environment variables containing session-signing secrets and service credentials, and may also trigger backend termination.

Affected context

The vulnerability occurs in Postiz deployments where web-accessible channel operations can request backend functions without an allowlist or equivalent authorization boundary. Risk is increased when self-registration is enabled, connected-channel tokens can reference file paths, and the application process can read sensitive files or access valuable environment variables.

The vulnerability occurs in Postiz deployments where web-accessible channel operations can request backend functions without an allowlist or equivalent authorization boundary. Risk is increased when self-registration is enabled, connected-channel tokens can reference file paths, and the application process can read sensitive files or access valuable environment variables.

Exploit preconditions

  • Attack surface: Web-accessible backend function-dispatch functionality
  • Required access: A Postiz account; open self-registration may allow an attacker to create one without prior access
  • Trigger point: A request that causes the backend to invoke a user-selected channel-related function
  • Additional condition: A connected channel must expose or store a token value that the vulnerable helper interprets as a server-side file path
  • Why exploitation is possible: The backend does not sufficiently constrain callable functions or enforce that helper inputs remain within their intended data model
  • Attack surface: Web-accessible backend function-dispatch functionality
  • Required access: A Postiz account; open self-registration may allow an attacker to create one without prior access
  • Trigger point: A request that causes the backend to invoke a user-selected channel-related function
  • Additional condition: A connected channel must expose or store a token value that the vulnerable helper interprets as a server-side file path
  • Why exploitation is possible: The backend does not sufficiently constrain callable functions or enforce that helper inputs remain within their intended data model

Why this happens

The underlying issue is an insufficient authorization boundary around dynamic function invocation. User-controlled function selection is passed into backend dispatch logic without restricting calls to an explicit, safe set of operations, allowing internal helpers to become reachable through the web interface.

The file-reading behavior maps to CWE-73: External Control of File Name or Path, because attacker-influenced data can determine which server-side file is accessed. The unrestricted helper invocation also relates to CWE-470: Use of Externally-Controlled Input to Select Classes or Code, where external input influences executable behavior or callable selection.

The underlying issue is an insufficient authorization boundary around dynamic function invocation. User-controlled function selection is passed into backend dispatch logic without restricting calls to an explicit, safe set of operations, allowing internal helpers to become reachable through the web interface.

The file-reading behavior maps to CWE-73: External Control of File Name or Path, because attacker-influenced data can determine which server-side file is accessed. The unrestricted helper invocation also relates to CWE-470: Use of Externally-Controlled Input to Select Classes or Code, where external input influences executable behavior or callable selection.

Potential impact

  • Sensitive files and environment variables could be disclosed
  • Session-signing secrets could be exposed, potentially enabling account impersonation
  • Database connection details and connected-service credentials could be compromised
  • Confidential application or host configuration could be revealed
  • The backend process could be terminated, causing service disruption
  • Compromised credentials could enable access to dependent systems
  • Sensitive files and environment variables could be disclosed
  • Session-signing secrets could be exposed, potentially enabling account impersonation
  • Database connection details and connected-service credentials could be compromised
  • Confidential application or host configuration could be revealed
  • The backend process could be terminated, causing service disruption
  • Compromised credentials could enable access to dependent systems

General mitigation guidance

Mitigation generally focuses on removing user control over backend callable selection and separating public channel operations from internal helpers.

Common defensive patterns include:

  • Exposing only an explicit allowlist of channel operations rather than generic function dispatch
  • Enforcing authorization and input schemas for every externally reachable operation
  • Treating channel tokens as opaque data instead of interpreting them as filesystem paths
  • Restricting file access to narrowly defined application-owned directories when file access is required
  • Reducing environment-variable and filesystem exposure through least-privilege process and container permissions
  • Keeping session secrets and service credentials outside broadly readable application environments where practical
  • Disabling open self-registration or placing it behind appropriate enrollment controls
  • Handling shutdown-related operations through administrative controls rather than ordinary user requests

Mitigation generally focuses on removing user control over backend callable selection and separating public channel operations from internal helpers.

Common defensive patterns include:

  • Exposing only an explicit allowlist of channel operations rather than generic function dispatch
  • Enforcing authorization and input schemas for every externally reachable operation
  • Treating channel tokens as opaque data instead of interpreting them as filesystem paths
  • Restricting file access to narrowly defined application-owned directories when file access is required
  • Reducing environment-variable and filesystem exposure through least-privilege process and container permissions
  • Keeping session secrets and service credentials outside broadly readable application environments where practical
  • Disabling open self-registration or placing it behind appropriate enrollment controls
  • Handling shutdown-related operations through administrative controls rather than ordinary user requests

How teams detect issues like this

High-level detection can include:

  • Static analysis for reflection, dynamic dispatch, or function lookup driven by request parameters
  • Code review checks for web handlers that expose internal helpers or administrative operations
  • Searches for filesystem APIs receiving values derived from channel tokens, request fields, or other external input
  • Tests that verify unapproved function names and unexpected helper arguments are rejected
  • Runtime monitoring for unusual file reads, access to environment or secret paths, and unexpected process exits
  • Policy enforcement requiring explicit operation allowlists and authorization checks at web API boundaries
  • Automated security review tools that flag externally controlled callable selection and path construction

High-level detection can include:

  • Static analysis for reflection, dynamic dispatch, or function lookup driven by request parameters
  • Code review checks for web handlers that expose internal helpers or administrative operations
  • Searches for filesystem APIs receiving values derived from channel tokens, request fields, or other external input
  • Tests that verify unapproved function names and unexpected helper arguments are rejected
  • Runtime monitoring for unusual file reads, access to environment or secret paths, and unexpected process exits
  • Policy enforcement requiring explicit operation allowlists and authorization checks at web API boundaries
  • Automated security review tools that flag externally controlled callable selection and path construction

Sources

SourceLink
gadvisory.orggadvisory.org/advisories/PSA-2026-JNXM56
github.comgithub.com/gitroomhq/postiz-app
github.comgithub.com/gitroomhq/postiz-app/commit/9383f5be4d310c346e33a3748a9a7ded64c96fed
github.comgithub.com/gitroomhq/postiz-app/releases/tag/v2.25.2

Frequently asked

questions

Yes, where the affected backend endpoint is reachable through the Postiz web interface. Exploitation still depends on the deployment exposing the vulnerable function-dispatch path and satisfying its channel-related data conditions.

It requires a Postiz account, but an existing trusted account may not be necessary when self-registration is enabled. No action by another user is required according to the described behavior.

Replace generic user-controlled function dispatch with a small, explicit allowlist of authorized operations, validate all inputs, and ensure channel data cannot be interpreted as arbitrary filesystem paths.

Apply least privilege to application processes, protect secrets from routine file and environment exposure, review dynamic dispatch during code review, and enforce automated tests and policies for authorization and path handling.

Yes, where the affected backend endpoint is reachable through the Postiz web interface. Exploitation still depends on the deployment exposing the vulnerable function-dispatch path and satisfying its channel-related data conditions.

It requires a Postiz account, but an existing trusted account may not be necessary when self-registration is enabled. No action by another user is required according to the described behavior.

Replace generic user-controlled function dispatch with a small, explicit allowlist of authorized operations, validate all inputs, and ensure channel data cannot be interpreted as arbitrary filesystem paths.

Apply least privilege to application processes, protect secrets from routine file and environment exposure, review dynamic dispatch during code review, and enforce automated tests and policies for authorization and path handling.

Find out what's already
exploitable in your codebase.