Skip to main content

Postiz EUVDEUVD-2026-54488

| CVE-2026-19264 CRITICAL
Path Traversal (CWE-22)
2026-08-07 postiz GHSA-2p7p-3c9x-rwxm
9.3
CVSS 4.0 · Vendor: postiz
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Locate exposed Postiz /api/uploads route
  2. Delivery
    Send URL-encoded traversal request
  3. Exploit
    Bypass route normalization at handler
  4. Install
    Read /proc/self/environ for JWT secret
  5. C2
    Forge non-expiring admin JWT
  6. Execute
    Authenticate as administrator
  7. Impact
    Take over instance and linked accounts

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires only that the Postiz instance (version <2.22.1) be network-reachable and that the /api/uploads media-serving route be exposed, which is its default behavior - the route requires no authentication and no user interaction. The specific enabling condition is that local media storage is used with UPLOAD_DIRECTORY configured (the default self-hosted setup), and the attacker must supply URL-encoded path separators rather than raw '..' because raw dot-segments are collapsed by routing before reaching the handler. Full account-takeover impact additionally depends on the deployment placing the JWT signing secret in the process environment (the standard configuration) and on the app issuing non-expiring tokens. Limiting factors: only files readable by the application process user are exposed, and organizations that terminate /api/uploads behind an authenticating proxy or run the app with a tightly scoped filesystem reduce the reachable data.

Impact

This is a genuine high priority, not an inflated CVSS. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H) is internally consistent with the description: network-reachable, low complexity, no authentication, no user interaction, and full confidentiality/integrity/availability impact once the JWT secret is stolen and admin sessions are forged. The confidentiality claim (arbitrary file read) is directly supported; the integrity and availability claims are a second-order consequence of secret disclosure enabling non-expiring admin session forgery, which the description explains plausibly. No EPSS score, SSVC decision, KEV listing, or POC was provided, so real-world exploitation volume is unquantified - treat the likelihood signals as missing rather than low. The path-traversal-to-secret-exfiltration pattern is highly automatable and the preconditions are minimal, so absence of a published POC should not lower urgency for internet-exposed instances.

Exploit ScenarioDerived

An attacker locates an internet-exposed Postiz instance and requests the unauthenticated uploads route with a URL-encoded traversal payload (for example /api/uploads/..%2f..%2f..%2fproc/self/environ) to read the application process environment. They extract the JWT signing secret, mint a token for an administrator user ID, and because tokens carry no expiry, use it as a permanent admin session to take over the instance and its connected social/billing accounts. No public exploit is identified at time of analysis, but the low-complexity, no-auth vector makes weaponization trivial.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv2 – Aug 07, 2026

Arbitrary file read in Postiz (gitroomhq/postiz-app before 2.22.1) lets an unauthenticated remote attacker retrieve any file readable by the application process via the /api/uploads media route, which fails to confine URL-supplied path segments to the upload directory. Because URL-encoded traversal sequences survive Next.js route matching and are decoded only at the filesystem call, an attacker can read the process environment to steal the JWT signing secret, then forge a non-expiring administrator session without a password - turning a file-disclosure bug into full account takeover. There is publicly available fix code (vendor commit and v2.22.1 release), but no public exploit identified at time of analysis and the issue is not in CISA KEV.

Earlier versions of this analysis (1)
v1 Aug 07, 2026 - 15:01 CVSS 9.8

Unauthenticated arbitrary file read in the self-hosted Postiz social media scheduler (gitroomhq/postiz-app, fixed in v2.22.1) lets remote attackers retrieve any file readable by the app process via URL-encoded path traversal against the unauthenticated /api/uploads media route. Because the leaked process environment contains the JWT signing secret and Postiz session tokens are signed with it and never expire, an attacker can forge a permanent session as any user, including an administrator, turning a file-read into full account takeover. No public exploit identified at time of analysis, but the fixing commit is public and the traversal mechanism is fully documented, making weaponization straightforward.

RemediationAI

Vendor-released patch: upgrade to Postiz 2.22.1 or later, which adds path canonicalization and a base-directory containment check to the uploads route (fix commit https://github.com/gitroomhq/postiz-app/commit/7936062, release https://github.com/gitroomhq/postiz-app/releases/tag/v2.22.1, advisory https://gadvisory.org/advisories/PSA-2026-TH12B7). If you cannot upgrade immediately, place the /api/uploads endpoint behind an authenticating reverse proxy or WAF rule that rejects requests containing encoded traversal tokens (%2e, %2f, %5c and their double-encoded forms) - with the side effect that legitimate filenames containing those encodings will also be blocked. As a stronger compensating control, run the application process under a low-privilege account with a restrictive filesystem view (dedicated user, chroot/container with only the upload directory mounted) so an arbitrary read exposes as little as possible, and rotate all secrets that live in the process environment (JWT signing secret, database connection string, provider and billing credentials) since a successful read may have already exfiltrated them; note that rotating the JWT secret will invalidate existing sessions and force re-login.

Affected VersionsENISA

postiz-app 0 <2.22.1

Affected Packages

euvd postiz_app fix: 2.22.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is a Next.js catch-all API route (apps/frontend/src/app/(app)/api/uploads/[[...path]]/route.ts) that serves locally stored uploads by concatenating URL path segments onto process.env.UPLOAD_DIRECTORY and streaming the result. This is a classic CWE-22 improper limitation of a pathname to a restricted directory: the handler performed no canonicalization and no containment check. Next.js collapses raw dot-segments (../) during routing, but percent-encoded separators (e.g. %2e%2e%2f) pass through route matching intact and are URL-decoded only when they reach the handler, reconstituting the traversal at the filesystem read. The vendor fix imports Node's path.resolve and path.sep, resolves both the base and the requested path, and rejects any resolved path that is not the base or does not start with base+sep - so resolve() normalizes decoded '..' segments and the prefix check enforces confinement. The high blast radius comes from the deployment model: secrets (JWT signing key, database connection string, provider/billing credentials) live in the process environment, and JWT session tokens are signed with that key and carry no expiry.

Know when Postiz App gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (postiz) PRIMARY 9.3 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 9.8 CRITICAL

Unauthenticated network file read (PR:N/UI:N/AC:L); C:H directly, and I:H/A:H because the leaked JWT secret enables forging non-expiring admin sessions for full takeover.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (postiz).

CVSS VectorVendor: postiz

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

3
Analysis Updated
Aug 07, 2026 - 15:28 vuln.today
v2 - CVSS changed
CVSS changed
Aug 07, 2026 - 15:22 NVD
9.8 (CRITICAL) 9.3 (CRITICAL)
CVE Published
Aug 07, 2026 - 14:15 cve.org
CRITICAL 9.8

DescriptionCVE.org

Postiz is an open-source social media scheduling tool. The route that serves locally stored media joins URL-supplied path segments onto the upload directory and streams the file without normalising the path or confining it to that directory, and the route requires no authentication. Raw dot-segments are collapsed before routing, but URL-encoded separators survive route matching and are decoded only once they reach the handler, restoring the traversal at the filesystem call. An unauthenticated remote attacker can therefore read any file readable by the application process, including the process environment, which exposes the JWT signing secret, the database connection string, and connected provider and billing secrets. Because session tokens are signed with that secret and carry no expiry, this allows forging a non-expiring session as any user, including an administrator, without a password.

Executive ViewAI

Why It Matters

Postiz before version 2.22.1 contains a critical, unauthenticated path traversal vulnerability (CVSS 9.3) allowing attackers to read arbitrary application files including JWT secrets, enabling complete account takeover without any credentials. This exposes all social media accounts managed through Postiz and their associated credentials to unauthorized access.

Business Impact: Severe
Compensating Controls

Apply vendor patch. Pending patching, restrict external access to /api/uploads endpoint via firewall, configure WAF rules to block URL-encoded path traversal sequences (%2e%2e, ..), and implement continuous monitoring of environment variable access logs.

Threat Intelligence Overview

EPSS Score
0.6%
Top 53% exploitable
Prevalence
Low
niche self-hosted open-source scheduling tool, limited enterprise footprint
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Total

Priority Score

47
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

CVE-2026-40487 CRITICAL POC
9.0 Apr 18

File upload validation bypass in Postiz social media scheduler (versions before 2.21.6) allows authenticated users to up

CVE-2026-115931 CRITICAL
9.9 Oct 23

Postiz (gitroomhq/postiz-app) before v2.25.1 allows any signed-in user to invoke arbitrary internal integration methods

CVE-2026-48781 CRITICAL
9.9 Jun 16

Privilege escalation to SUPERADMIN in Postiz (gitroomhq/postiz-app) versions prior to 2.21.8 allows any authenticated us

CVE-2026-115933 CRITICAL
9.9 Oct 24

Improper token-purpose validation in Postiz (gitroomhq/postiz-app) through v2.25.2 allows any authenticated user holding

CVE-2026-42298 CRITICAL
9.8 May 08

Arbitrary code execution and privileged token theft affects Postiz (gitroomhq/postiz-app) prior to commit da44801 throug

CVE-2026-115932 CRITICAL
9.6 Oct 24

Postiz instances older than v2.25.3 that store media on local disk let a registered user have the publishing worker read

CVE-2026-94456 CRITICAL
9.1 Sep 22

Predictable, non-cryptographic credential generation in Postiz (gitroomhq/postiz-app, all versions prior to v2.24.0) all

CVE-2026-42556 CRITICAL
9.0 May 08

Stored cross-site scripting in Postiz (gitroomhq/postiz-app) versions 2.21.6 through 2.21.6 lets any authenticated user

CVE-2026-34577 HIGH
8.6 Apr 02

Server-side request forgery in Postiz AI social media scheduling tool (versions < 2.21.3) allows unauthenticated remote

CVE-2026-34576 HIGH
8.3 Apr 02

Server-side request forgery (SSRF) in Postiz social media scheduling tool versions prior to 2.21.3 allows authenticated

CVE-2026-40168 HIGH
8.2 Apr 10

Server-side request forgery in Postiz (gitroomhq postiz-app) versions prior to 2.21.5 allows unauthenticated remote atta

CVE-2026-48799 HIGH
7.7 Jul 15

Business-logic authentication bypass in Postiz self-hosted AI social media scheduler (gitroomhq/postiz-app) before 2.21.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy