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:
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:
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:
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:
async loadUrl(url: string) {
const loadDom = new JSDOM(await (await fetch(url)).text()); // No validation
}
Missing Protections
- No
request-filtering-agentor 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
POST /webhooks/send?url=http://169.254.169.254/latest/meta-data/→ AWS metadata theftPOST /autopost/send?url=http://127.0.0.1:6379→ Internal Redis access- 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
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| Paquete de npm | postiz | <= 2.0.12 | sin corrección |
Referencias
- https://github.com/gitroomhq/postiz-app/security/advisories/GHSA-89v5-38xr-9m4j
- https://github.com/gitroomhq/postiz-app/commit/0ad89ccd26b1c387c4f3f3544b18c20d33586466
- https://github.com/gitroomhq/postiz-app/commit/be5d871896e97cb1f5a2c9241f156b6a1e1debe8
- https://github.com/gitroomhq/postiz-app
- https://github.com/gitroomhq/postiz-app/releases/tag/v2.21.2
- Vector CVSS
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- Debilidad (CWE)
CWE-918- Plataforma
- npm
- Paquete
postiz- Publicada
- 27.03.2026
- Actualizado
- 11.10.2026 10:22
Fuentes y licencias
OSV / GitHub Advisory Database - GHSA-89v5-38xr-9m4j - CC BY 4.0
Historial de vulnerabilidades: postiz
Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.
- Entradas en total
- 2
- Primera → última
- 03.2026 03.2026
- Sin corrección
- 2
- Explotada en ataques
- 0
Distribución por gravedad
- Alta 2
Divulgaciones por año
- 2026: 2
-
Postiz has Multiple SSRF Vectors - Webhooks, RSS Feed, URL Loader esta entrada
Identifica las vulnerabilidades de tu aplicación
Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.