GHSA-xhv3-q4xx-349r: stistigmem-node Quarantine Review Surface Exposes And Vulnerability
HIGHGHSA-xhv3-q4xx-349r is a HIGH quarantine review surface exposes and vulnerability (CWE-639: Authorization Bypass Through User-Controlled Key) affecting stistigmem-node libraries in the PyPI ecosystem. The issue involves quarantine review surface exposes and mutates other tenants' quarantined facts (cross-tenant bola). Remediation is available by upgrading affected packages to version 0.9.0a12.
GHSA-xhv3-q4xx-349r at a Glance
How to Fix GHSA-xhv3-q4xx-349r
To remediate this vulnerability, upgrade all affected stistigmem-node dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
pip install stigmem-node>=0.9.0a12
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
pip show stigmem-node
How to Check if You Are Affected
To determine whether your Python environment is affected by GHSA-xhv3-q4xx-349r, inspect your installed packages using pip:
pip show stigmem-node
Analyze the terminal output to locate any version of stistigmem-node in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.9.0a12), your application is affected.
Note: The pip show stigmem-node command checks currently installed packages in your active Python environment.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-639: Authorization Bypass Through User-Controlled Key, where the system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data. In stistigmem-node, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
GHSA-xhv3-q4xx-349r Affected stistigmem-node Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
stigmem-node
|
PyPI |
< 0.9.0a12
|
0.9.0a12
|
References
Frequently Asked Questions
What is GHSA-xhv3-q4xx-349r?
Which stistigmem-node versions are affected?
What version fixes GHSA-xhv3-q4xx-349r?
Is stigmem-node affected?
What CWE is associated with GHSA-xhv3-q4xx-349r?
How can I check PyPI dependencies for GHSA-xhv3-q4xx-349r?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-xhv3-q4xx-349r",
"modified" : "2026-06-19T21:43:00Z",
"published" : "2026-06-19T21:43:00Z",
"aliases" : [ ],
"summary" : "stistigmem-node: quarantine review surface exposes and mutates other tenants' quarantined facts (cross-tenant BOLA)",
"details" : "### Summary\nOn a multi-tenant stigmem node, a tenant administrator could list, read, and **admit or reject** quarantined facts belonging to **other** tenants. The list/count queries and `_get_quarantined_fact` in `routes/quarantine.py` lacked an `f.tenant_id = identity.tenant_id` predicate, and the garden lookup was not tenant-scoped — reached via the `/v1/quarantine` list and admit/reject endpoints.\n\n### Impact\nCross-tenant confidentiality (reading another tenant's quarantined content) and cross-tenant integrity (moderating — admitting or rejecting — another tenant's facts), gated only by a plain tenant `write` capability rather than a node-level admin authority.\n\n### Affected configurations\nThis is a cross-**tenant** break. It is exploitable **only** on deployments running the opt-in `stigmem-plugin-multi-tenant` (multiple tenants on one node). A default single-tenant node has only `tenant=\"default\"` — there is no second tenant to cross — so it is **not exploitable** on default deployments. The rating is HIGH for the multi-tenant deployments the plugin exists to isolate.\n\n### Patches\nFixed in `0.9.0a12` (PR #728): `AND f.tenant_id = identity.tenant_id` was added to the list/count queries and `_get_quarantined_fact`; the garden lookup is now tenant-scoped; and any genuinely cross-tenant moderation is gated behind `can_admin_federation()` (node superadmin), not a tenant `write` capability. A tenant-B admin can no longer list, admit, or reject tenant-A's quarantined facts.\n\n### Workarounds\nNone other than upgrading to `0.9.0a12`. Single-tenant deployments are unaffected.",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "PyPI",
"name" : "stigmem-node"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "0.9.0a12"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/eidetic-labs/stigmem/security/advisories/GHSA-xhv3-q4xx-349r"
}, {
"type" : "WEB",
"url" : "https://github.com/eidetic-labs/stigmem/pull/728"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/eidetic-labs/stigmem"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-639", "CWE-863" ],
"severity" : "HIGH",
"github_reviewed" : true,
"github_reviewed_at" : "2026-06-19T21:43:00Z",
"nvd_published_at" : null
}
}