← Back to CVE Explorer

CVE-2026-19264

Full vulnerability record from the local CVENow database.

Description

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.

Severity
CRITICAL
CVSS score
9.3 (v4.0)
Vulnerability status
Deferred
Source identifier
4cdc9741-f887-419a-a2fd-acbbd2729276
Published
2026-08-07 15:17:00.297000
Last modified
2026-10-23 20:10:00.160000
View original CVE JSON
{
  "id": "CVE-2026-19264",
  "sourceIdentifier": "4cdc9741-f887-419a-a2fd-acbbd2729276",
  "published": "2026-08-07T15:17:00.297",
  "lastModified": "2026-10-23T20:10:00.160",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "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."
    },
    {
      "lang": "es",
      "value": "Postiz es una herramienta de programación de redes sociales de código abierto. La ruta que sirve medios almacenados localmente une segmentos de ruta suministrados por URL al directorio de carga y transmite el archivo sin normalizar la ruta ni confinarla a ese directorio, y la ruta no requiere autenticación. Los segmentos de puntos sin procesar se colapsan antes del enrutamiento, pero los separadores codificados en URL sobreviven a la coincidencia de ruta y se decodifican solo una vez que llegan al gestor, restaurando la transversalidad en la llamada al sistema de archivos. Un atacante remoto no autenticado puede, por lo tanto, leer cualquier archivo legible por el proceso de la aplicación, incluido el entorno del proceso, lo que expone el secreto de firma JWT, la cadena de conexión de la base de datos y los secretos de proveedor y facturación conectados. Debido a que los tokens de sesión se firman con ese secreto y no tienen caducidad, esto permite forjar una sesión no expirante como cualquier usuario, incluido un administrador, sin una contraseña."
    }
  ],
  "affected": [
    {
      "source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
      "affectedData": [
        {
          "vendor": "gitroomhq",
          "product": "postiz-app",
          "defaultStatus": "unaffected",
          "packageName": "postiz-app",
          "repo": "https://github.com/gitroomhq/postiz-app",
          "versions": [
            {
              "version": "0",
              "lessThan": "2.22.1",
              "versionType": "custom",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV40": [
      {
        "source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
        "type": "Secondary",
        "cvssData": {
          "version": "4.0",
          "vectorString": "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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
          "baseScore": 9.3,
          "baseSeverity": "CRITICAL",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "attackRequirements": "NONE",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "vulnConfidentialityImpact": "HIGH",
          "vulnIntegrityImpact": "HIGH",
          "vulnAvailabilityImpact": "HIGH",
          "subConfidentialityImpact": "NONE",
          "subIntegrityImpact": "NONE",
          "subAvailabilityImpact": "NONE",
          "exploitMaturity": "NOT_DEFINED",
          "confidentialityRequirement": "NOT_DEFINED",
          "integrityRequirement": "NOT_DEFINED",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "Safety": "NOT_DEFINED",
          "Automatable": "NOT_DEFINED",
          "Recovery": "NOT_DEFINED",
          "valueDensity": "NOT_DEFINED",
          "vulnerabilityResponseEffort": "NOT_DEFINED",
          "providerUrgency": "NOT_DEFINED"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
          "baseScore": 9.8,
          "baseSeverity": "CRITICAL",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 3.9,
        "impactScore": 5.9
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-08-07T17:54:32.053150Z",
          "id": "CVE-2026-19264",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "4cdc9741-f887-419a-a2fd-acbbd2729276",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-22"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://gadvisory.org/advisories/PSA-2026-TH12B7",
      "source": "4cdc9741-f887-419a-a2fd-acbbd2729276"
    },
    {
      "url": "https://github.com/gitroomhq/postiz-app/commit/7936062",
      "source": "4cdc9741-f887-419a-a2fd-acbbd2729276"
    },
    {
      "url": "https://github.com/gitroomhq/postiz-app/releases/tag/v2.22.1",
      "source": "4cdc9741-f887-419a-a2fd-acbbd2729276"
    }
  ]
}