---
id: "CVE-2026-89324"
page: "https://infrastack.ai/live/CVE-2026-89324"
kind: "vulnerability"
aliases: ["CVE-2026-89324"]
title: "Basel Post Types WordPress plugin: unauthenticated login as any user"
severity: "critical"
cvss: 9.8
epss: null
exploited: false
status: "open"
category: "package"
products: [{"name": "basel-post-types", "fixed": ["1.19"], "affected": "<= 1.18", "ecosystem": "wordpress"}]
ecosystems: []
tags: ["basel-theme", "package", "plugin", "self-hosted", "woocommerce", "wordpress", "xtemos"]
not_affected_if: ["no-woocommerce", "patched-1.19", "plugin-not-installed", "social-login-not-configured", "woocommerce-inactive"]
published_at: "2026-11-10T22:21:14+00:00"
first_seen_at: "2026-11-10T22:27:31+00:00"
updated_at: "2026-11-10T22:29:18+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-89324", "first_seen_at": "2026-11-10T22:27:31+00:00"}, {"source": "analyst", "url": "https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/basel-post-types/basel-post-types-118-unauthenticated-authentication-bypass-via-forged-opauth-callback-signature-with-hardcoded-fallback-salt", "first_seen_at": "2026-11-10T22:29:18+00:00", "cites": ["https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/basel-post-types/basel-post-types-118-unauthenticated-authentication-bypass-via-forged-opauth-callback-signature-with-hardcoded-fallback-salt", "https://patchstack.com/database/wordpress/plugin/basel-post-types/vulnerability/wordpress-basel-post-types-plugin-1-18-unauthenticated-authentication-bypass-vulnerability"]}]
exploit_sources: []
---

# Basel Post Types WordPress plugin: unauthenticated login as any user

Link for people: https://infrastack.ai/live/CVE-2026-89324 (this .md is for agents)

Basel Post Types (XTemos) up to 1.18 has a coding error that makes it always use a hardcoded, publicly visible salt to verify social-login (Opauth) callbacks. An unauthenticated attacker can forge a callback for any existing account, admins included, and get a logged-in session, bypassing passwords and MFA. Fixed in 1.19.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- wordpress:basel-post-types affected <= 1.18 fixed 1.19

## How to check

In WP admin > Plugins (or wp plugin list), check whether basel-post-types is installed at version 1.18 or lower. Exposure needs WooCommerce active AND at least one Basel social login (Facebook, Google or VKontakte) configured with an app_id and app_secret in the theme options. Also grep access logs for requests with ?opauth.

## Fix

Update Basel Post Types to 1.19 or later. If you can't update now, remove the app_id/app_secret for Facebook, Google and VKontakte social login in the Basel theme settings, or block requests containing the opauth parameter at the WAF (workaround from a third-party tracker, not tested). After updating, look for unknown admins, rotate passwords and sessions, and check access logs for opauth requests.

## Timeline

- 2026-11-10T22:27:31+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-89324
- 2026-11-10T22:29:18+00:00 analyst https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/basel-post-types/basel-post-types-118-unauthenticated-authentication-bypass-via-forged-opauth-callback-signature-with-hardcoded-fallback-salt — Wordfence (CNA, researcher 0xwackydawg) and Patchstack: <=1.18 affected, fixed 1.19. Not verified: no vendor/maintainer page read. Patchstack page has a KEV banner but Wordfence-based trackers say not on KEV and no exploitation source found, so exploited left false. No PoC found.

## Documents

- [advisory] Wordfence: Basel Post Types <= 1.18 auth bypass https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/basel-post-types/basel-post-types-118-unauthenticated-authentication-bypass-via-forged-opauth-callback-signature-with-hardcoded-fallback-salt
- [fix] Patchstack: Basel Post Types <= 1.18 https://patchstack.com/database/wordpress/plugin/basel-post-types/vulnerability/wordpress-basel-post-types-plugin-1-18-unauthenticated-authentication-bypass-vulnerability

## From the sources

The Basel Post Types plugin for WordPress is vulnerable to Authentication Bypass in all versions up to, and including, 1.18. The vulnerability exists because a missing-quotes coding error in the defined() call for SECURE_AUTH_SALT inside BASEL_Auth::get_config() causes PHP to evaluate the constant's value rather than its name, making the check always fail and permanently falling back to the static hardcoded salt 2NlBUibcszrVtNmDnxqDbwCOpLWq91eatIz6O1O that is publicly visible in the theme source code; because this salt is static and known, an attacker can compute a valid Opauth signature entirely offline and submit a forged ?opauth callback to the unauthenticated init hook endpoint processed by register_or_login. This makes it possible for unauthenticated attackers to authenticate as any existing WordPress user, including administrators, by forging a callback tied to a known target account email address — bypassing all password verification, multi-factor authentication, and ownership checks, and receiving a fully authenticated session cookie via wc_set_customer_auth_cookie(). Exploitation requires WooCommerce to be active and at least one Basel social-login provider (Facebook, Google, or VKontakte) to be configured with a valid app_id and app_secret in the theme settings.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
