CVE-2026-115931 (GCVE-0-2026-115931)
Vulnerability from cvelistv5 – Published: 2026-10-23 22:02 – Updated: 2026-10-24 14:28
VLAI
EPSS
VEX
Title
Arbitrary file read and backend crash through unrestricted provider method calls
Summary
Postiz lets a signed-in user ask the backend to run a function on one of their connected channels. The backend did not restrict which functions can be requested, so a user could call internal helper functions that were never meant to be reachable from the web interface.
One of those helpers reads a file from the server's disk. A user who connects a channel whose stored token is a file path can have the backend return the contents of any file it can read, including its environment, which holds the secret used to sign login sessions, the database address and the credentials of connected services. Another helper makes the backend process exit with a single request. Self-registration is open by default, so no existing account and no action by another user is needed.
Severity
9.9 (Critical)
Assigner
References
4 references
| URL | Tags |
|---|---|
| https://github.com/gitroomhq/postiz-app | product |
| https://github.com/gitroomhq/postiz-app/releases/… | release-notes |
| https://github.com/gitroomhq/postiz-app/commit/93… | patch |
| https://gadvisory.org/advisories/PSA-2026-JNXM56 | vendor-advisory |
Impacted products
1 product
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| GitroomHQ | postiz-app |
Affected:
2.23.0 , < 2.25.2
(semver)
|
guessed |
Date Public
2026-10-23 22:00
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"packageName": "postiz-app",
"product": "postiz-app",
"repo": "https://github.com/gitroomhq/postiz-app",
"vendor": "GitroomHQ",
"versions": [
{
"lessThan": "2.25.2",
"status": "affected",
"version": "2.23.0",
"versionType": "semver"
}
]
}
],
"configurations": [
{
"lang": "en",
"value": "The default configuration is affected and no setting has to be changed. Self-registration is open unless DISABLE_REGISTRATION is set to true; with registration closed, any existing user can still exploit the issue."
},
{
"lang": "en",
"value": "The image built from the project\u0027s Dockerfile.dev runs the process as root, so every file root can read is exposed. The process\u0027s own environment is readable regardless of the user it runs as."
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Anthropic, PBC"
},
{
"lang": "en",
"type": "coordinator",
"value": "Enno Gelhaus"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Nevo David"
}
],
"datePublic": "2026-10-23T22:00:00.481Z",
"descriptions": [
{
"lang": "en",
"value": "Postiz lets a signed-in user ask the backend to run a function on one of their connected channels. The backend did not restrict which functions can be requested, so a user could call internal helper functions that were never meant to be reachable from the web interface.\n\nOne of those helpers reads a file from the server\u0027s disk. A user who connects a channel whose stored token is a file path can have the backend return the contents of any file it can read, including its environment, which holds the secret used to sign login sessions, the database address and the credentials of connected services. Another helper makes the backend process exit with a single request. Self-registration is open by default, so no existing account and no action by another user is needed."
}
],
"exploits": [
{
"lang": "en",
"value": "Exploitation was demonstrated end to end against an unmodified build of Postiz at commit 3a7d28b7ad96, using only a self-registered account: the contents of a file placed outside the application\u0027s directories and the exact JWT secret the backend was started with were both returned in full. Terminating the backend with one request was demonstrated separately."
}
],
"impacts": [
{
"descriptions": [
{
"lang": "en",
"value": "Any registered user can read any file the backend process can read, with the result returned as bytes so binary files work."
}
]
},
{
"descriptions": [
{
"lang": "en",
"value": "The backend\u0027s environment is readable, which exposes the JWT signing secret, the database and Redis connection strings and the credentials and API keys of connected providers when they are passed as environment variables."
}
]
},
{
"descriptions": [
{
"lang": "en",
"value": "With the JWT signing secret an attacker can sign a session for any user, including a user in another organization or an instance super administrator, and can decrypt data the application stores encrypted with the same secret."
}
]
},
{
"descriptions": [
{
"lang": "en",
"value": "A single request ends the backend process, and it can be repeated after every restart."
}
]
},
{
"descriptions": [
{
"lang": "en",
"value": "Other provider functions become callable by any member of an organization that owns a channel, some of which return access tokens for the connected account that other routes keep server side."
}
]
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 9.9,
"baseSeverity": "CRITICAL",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-470",
"description": "CWE-470",
"lang": "en",
"type": "CWE"
},
{
"cweId": "CWE-73",
"description": "CWE-73",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-24T14:28:58.123Z",
"orgId": "4cdc9741-f887-419a-a2fd-acbbd2729276",
"shortName": "postiz"
},
"references": [
{
"name": "Postiz",
"tags": [
"product"
],
"url": "https://github.com/gitroomhq/postiz-app"
},
{
"name": "v2.25.2",
"tags": [
"release-notes"
],
"url": "https://github.com/gitroomhq/postiz-app/releases/tag/v2.25.2"
},
{
"name": "9383f5b",
"tags": [
"patch"
],
"url": "https://github.com/gitroomhq/postiz-app/commit/9383f5be4d310c346e33a3748a9a7ded64c96fed"
},
{
"name": "GAdvisory",
"tags": [
"vendor-advisory"
],
"url": "https://gadvisory.org/advisories/PSA-2026-JNXM56"
}
],
"timeline": [
{
"lang": "en",
"time": "2026-10-23T19:45:00.000Z",
"value": "Anthropic has disclosed a thorough report of this vulnerability including a working PoC to Postiz"
},
{
"lang": "en",
"time": "2026-10-23T20:00:00.000Z",
"value": "Postiz has reproduced the vulnerability and is working on a fix"
},
{
"lang": "en",
"time": "2026-10-23T21:33:00.000Z",
"value": "Postiz has pushed a fix for this vulnerability and verified it"
},
{
"lang": "en",
"time": "2026-10-23T22:00:00.000Z",
"value": "Postiz has created a release and published the advisory"
}
],
"title": "Arbitrary file read and backend crash through unrestricted provider method calls",
"workarounds": [
{
"lang": "en",
"value": "Set DISABLE_REGISTRATION=true. The attacker needs an ordinary account, so closing self-registration limits exposure to people who already hold one. This reduces reach, it does not close the issue."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "4cdc9741-f887-419a-a2fd-acbbd2729276",
"assignerShortName": "postiz",
"cveId": "CVE-2026-115931",
"datePublished": "2026-10-23T22:02:21.717Z",
"dateReserved": "2026-10-23T21:19:33.246Z",
"dateUpdated": "2026-10-24T14:28:58.123Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-115931",
"date": "2026-10-25",
"epss": "0.00485",
"percentile": "0.41439"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"packageName": "postiz-app",
"product": "postiz-app",
"repo": "https://github.com/gitroomhq/postiz-app",
"vendor": "GitroomHQ",
"versions": [
{
"lessThan": "2.25.2",
"status": "affected",
"version": "2.23.0",
"versionType": "semver"
}
]
}
],
"source": "4cdc9741-f887-419a-a2fd-acbbd2729276"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Postiz lets a signed-in user ask the backend to run a function on one of their connected channels. The backend did not restrict which functions can be requested, so a user could call internal helper functions that were never meant to be reachable from the web interface.\n\nOne of those helpers reads a file from the server\u0027s disk. A user who connects a channel whose stored token is a file path can have the backend return the contents of any file it can read, including its environment, which holds the secret used to sign login sessions, the database address and the credentials of connected services. Another helper makes the backend process exit with a single request. Self-registration is open by default, so no existing account and no action by another user is needed."
}
],
"id": "CVE-2026-115931",
"lastModified": "2026-10-24T15:17:33.760",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 9.9,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
"version": "3.1"
},
"exploitabilityScore": 3.1,
"impactScore": 6.0,
"source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
"type": "Secondary"
}
]
},
"published": "2026-10-23T23:17:43.263",
"references": [
{
"source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
"url": "https://gadvisory.org/advisories/PSA-2026-JNXM56"
},
{
"source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
"url": "https://github.com/gitroomhq/postiz-app"
},
{
"source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
"url": "https://github.com/gitroomhq/postiz-app/commit/9383f5be4d310c346e33a3748a9a7ded64c96fed"
},
{
"source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
"url": "https://github.com/gitroomhq/postiz-app/releases/tag/v2.25.2"
}
],
"sourceIdentifier": "4cdc9741-f887-419a-a2fd-acbbd2729276",
"vulnStatus": "Received",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-73"
},
{
"lang": "en",
"value": "CWE-470"
}
],
"source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
"type": "Secondary"
}
]
}
}
}
}
Loading…
Loading…
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
Loading timeline…
Loading…
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Loading…
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.