🛡️ GHSA-89v5-38xr-9m4j — postiz

🟠 CVSS 8.0 — High ✅ No Known Exploit CWE-918 OSV
8.0
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

Postiz has Multiple SSRF Vectors - Webhooks, RSS Feed, URL Loader

Summary

Postiz has multiple SSRF vulnerabilities where user-provided URLs are fetched server-side without any IP validation or SSRF protection.

Vulnerable Code

1. Webhook Send Endpoint (Most Critical)

apps/backend/src/api/routes/webhooks.controller.ts lines 58-70:

```typescript

async sendWebhook(@Body() body: any, @Query('url') url: string) {

try {

await fetch(url, { // No URL validation

method: 'POST',

body: JSON.stringify(body),

headers: { 'Content-Type': 'application/json' },

});

} catch (err) { }

return { send: true };

}

```

Accepts arbitrary URL via query parameter and fetches directly.

2. Stored Webhook Delivery

apps/orchestrator/src/activities/post.activity.ts lines 256-281:

```typescript

async sendWebhooks(postId: string, orgId: string, integrationId: string) {

const webhooks = await this._webhookService.getWebhooks(orgId);

return Promise.all(

webhooks.map(async (webhook) => {

await fetch(webhook.url, { // Stored URL, no validation

method: 'POST',

body: JSON.stringify(post),

});

})

);

}

```

3. RSS/XML Feed Parser

libraries/nestjs-libraries/src/database/prisma/autopost/autopost.service.ts line 135:

```typescript

async loadXML(url: string) {

const { items } = await parser.parseURL(url); // No URL validation

}

```

4. HTML Content Loader

libraries/nestjs-libraries/src/database/prisma/autopost/autopost.service.ts line 185:

```typescript

async loadUrl(url: string) {

const loadDom = new JSDOM(await (await fetch(url)).text()); // No validation

}

```

Missing Protections

  • No request-filtering-agent or SSRF library
  • No private IP range filtering
  • No cloud metadata endpoint blocking
  • No DNS rebinding protection
  • URL validation only via @IsUrl() decorator (format only, no IP check)

Attack Scenarios

1. POST /webhooks/send?url=http://169.254.169.254/latest/meta-data/ → AWS metadata theft

2. POST /autopost/send?url=http://127.0.0.1:6379 → Internal Redis access

3. Create webhook with http://10.0.0.1:8080/admin → Internal service access on post publish

Impact

  • Cloud metadata theft: AWS/GCP/Azure credentials
  • Internal network scanning: Full access to private IP ranges
  • Multiple entry points: Webhooks, RSS feeds, URL loader all vulnerable

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. No user interaction is required. Rated impact: confidentiality low, integrity low, availability none.

Weakness class

GHSA-89v5-38xr-9m4j is classified as CWE-918: Server-Side Request Forgery (SSRF). The server fetches a URL supplied by the caller, which can be pointed at internal systems it alone can reach.

Affected software

GHSA-89v5-38xr-9m4j is recorded against 1 package.

  • postiz

Timeline and source

Published on 27 March 2026. No public exploit is currently recorded for this entry. Record sourced from OSV.

References

github.com (Web)
github.com (Web)
github.com (Web)
github.com (Package)
github.com (Web)

Details

Severity HIGH
CVSS Score 8.0
CVSS Vector CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:H/SI:L/SA:N
CWE CWE-918
Public Exploit ✅ No
Source OSV
Published 2026-03-27
Updated 2026-08-20
Modified 2026-03-27
Fix URL N/A

Affected Packages

Software From version Fixed in
postiz

Similar Threats

Site Security Check

Is postiz part of your stack?

GHSA-89v5-38xr-9m4j is rated CVSS 8.0 High. BotEraser scans your installation against known CVE records and tells you whether this vulnerability applies to the versions you actually run.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesGitHub AdvisoryGitHub Advisory Undated