Stigmem-node Multi-Tenant Quarantine Bypass, CVE-2026-XXXXX (High) -DC-Jun2026-521

Listen to this Post

How the CVE Works

On a multi-tenant Stigmem node, the quarantine functionality failed to enforce proper tenant isolation. The core issue resided in routes/quarantine.py, where the list/count queries and the `_get_quarantined_fact` function lacked an `f.tenant_id = identity.tenant_id` predicate. This omission meant that when a tenant administrator queried the `/v1/quarantine` endpoint to list quarantined facts, the database returned records from all tenants, not just their own. The same flaw existed in the admit and reject endpoints, which are used to moderate (approve or reject) quarantined facts.
A critical part of the vulnerability was that the garden lookup—the process of determining which logical “garden” or namespace a quarantined fact belonged to—was not tenant-scoped. This allowed a malicious actor to reach across tenant boundaries. The moderation actions (admit/reject) were gated only by a generic `tenant write` capability. This meant any administrator with write permissions on their own tenant could inadvertently or maliciously moderate the data of another tenant.
The vulnerability is only exploitable on deployments that have enabled the `stigmem-plugin-multi-tenant` plugin, which is an opt-in feature for running multiple tenants on a single node. In a default single-tenant deployment, the system only has a tenant="default"; there is no second tenant to target, so the attack vector does not exist. For multi-tenant environments, the impact is severe, as it breaks the fundamental security boundary the plugin was designed to enforce.
The fix, implemented in version `0.9.0a12` and associated with PR 728, introduces the missing `f.tenant_id = identity.tenant_id` predicate to the list/count queries and `_get_quarantined_fact` function. Furthermore, the garden lookup is now tenant-scoped. Crucially, any genuinely cross-tenant moderation action is now gated behind the `can_admin_federation()` check, which requires node superadmin privileges, not just a tenant write capability.

DailyCVE Form:

Platform: Stigmem-node
Version: <0.9.0a12
Vulnerability: Cross-tenant quarantine bypass
Severity: High
Date: 2026-05-19

Prediction: 2026-05-26

What Undercode Say: Analytics & Verification

Analytics of the vulnerability shows a classic case of missing tenant-scoped predicates in database queries.
To verify if a deployment is vulnerable, an administrator can inspect the code in routes/quarantine.py:

grep -n "def _get_quarantined_fact" /path/to/stigmem/routes/quarantine.py
grep -n "f.tenant_id = identity.tenant_id" /path/to/stigmem/routes/quarantine.py

If the second command returns no results in the context of the list/count queries or _get_quarantined_fact, the deployment is vulnerable.

The patched code introduces the following logic:

Patched version in 0.9.0a12
def _get_quarantined_fact(fact_id, identity):
query = QuarantinedFact.query.filter(
QuarantinedFact.id == fact_id,
QuarantinedFact.tenant_id == identity.tenant_id Added predicate
)
return query.first()

Exploit: Cross-Tenant Data Access & Manipulation

An attacker, authenticated as a tenant administrator for Tenant B, can exploit this vulnerability without needing elevated privileges.

1. Listing Another Tenant’s Quarantined Facts:

The attacker sends a GET request to the `/v1/quarantine` endpoint. Due to the missing tenant filter, the response will include quarantined facts from Tenant A.

curl -X GET "https://stigmem-node.example.com/v1/quarantine" \
-H "Authorization: Bearer <tenant_b_admin_token>"

2. Admitting or Rejecting Another Tenant’s Fact:

Using a fact ID obtained from the list, the attacker can admit or reject it by sending a POST request to the `/v1/quarantine//admit` or `/v1/quarantine//reject` endpoint.

curl -X POST "https://stigmem-node.example.com/v1/quarantine/12345/admit" \
-H "Authorization: Bearer <tenant_b_admin_token>"

This allows the attacker to read sensitive quarantined content from Tenant A and also make decisions (admit/reject) that affect Tenant A’s data integrity, all while only possessing a `tenant write` capability for their own tenant.

Protection: Mitigating the Vulnerability

The primary and only recommended protection against this CVE is to upgrade to the patched version.

1. Upgrade to Stigmem-node 0.9.0a12 or later:

This is the definitive fix. The upgrade introduces the necessary tenant-scoped predicates and enforces stricter authorization for cross-tenant actions.

pip install --upgrade --pre stigmem-node==0.9.0a12

2. Single-Tenant Deployments:

If you are running a default, single-tenant Stigmem node, you are not affected by this vulnerability. No action is required.

3. Network-Level Isolation (Temporary Workaround):

In the absence of an immediate upgrade, consider enforcing strict network policies to limit access to the `/v1/quarantine` endpoints to only trusted administrative networks. However, this is not a complete solution and should not be considered a permanent fix.

Impact

The impact of this vulnerability is severe for multi-tenant deployments, as it completely breaks the isolation between tenants.
– Confidentiality Breach: A tenant administrator can read the quarantined facts of any other tenant on the same node. This can expose sensitive data that was flagged for quarantine.
– Integrity Violation: A tenant administrator can admit (approve) or reject (delete) quarantined facts belonging to other tenants. This can lead to data loss, corruption, or the of malicious facts into another tenant’s environment.
– Privilege Escalation: The vulnerability is gated only by a `tenant write` capability. An attacker does not need node-level admin privileges to perform these cross-tenant actions, effectively allowing a tenant-level admin to perform actions that should require superadmin privileges.

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top