CVE-2026-77366 Security Alert: CRITICAL Vulnerability
Urgent: CVE-2026-77366 requires immediate attention.
· 6 min read
Executive Summary
CVE-2026-77366 is a critical authorization bypass in npm obsidian-tc with a CVSS 9.9 score. The flaw lets a caller use a valid token to access any configured vault by supplying input.vault, because dispatch did not verify that the requested vault matched the caller’s bound vault (ctx.vaultId). In practice, this breaks tenant isolation across roughly 90 tool sites and can expose read, write, and delete access across vaults.
This is especially urgent for solo developers and small teams running shared services: even without known active exploitation, the impact is severe enough to treat as a production security incident. The fix is available in 1.3.1 and later.
Immediate Action
- Upgrade immediately to
obsidian-tc@1.3.1or later. If you cannot patch right away, move to a single-vault-per-process model. - Stop sharing one service instance across tenants. Run each tenant on a separate process, container, or credential set until patched.
- Rotate credentials for any environment where multiple vaults were reachable from one token.
- Review logs for cross-vault access attempts, especially requests that include a vault different from the caller’s expected scope.
- Temporarily disable or restrict the affected tool dispatch path if you cannot isolate tenants quickly.
- Check for vendor updates and advisories here: vendor advisory / release notes.
Affected Versions
obsidian-tcversions before 1.3.1 are vulnerable.- The fix was developed on the
v1.3.0tag, but that tag was never published to npm. - Safe version:
obsidian-tc@1.3.1and later. - Vulnerable pattern: any deployment where a valid token can set
input.vaultand reach multiple vaults through one server process.
Resolution Guide
JavaScript / npm
npm install obsidian-tc@^1.3.1
# or
npm install obsidian-tc@latest
Yarn
yarn add obsidian-tc@^1.3.1
pnpm
pnpm add obsidian-tc@^1.3.1
Python / pip / pipx — if your stack vendors or wraps this service, update the wrapper package to the fixed release or rebuild against the patched dependency:
pip install --upgrade <your-wrapper-package>
pipx upgrade <your-tool>
Java / Maven / Gradle — if embedded via a service wrapper, bump the wrapper artifact to a release that includes obsidian-tc 1.3.1+:
# Maven (example placeholder)
mvn versions:use-latest-releases
# Gradle (example placeholder)
./gradlew dependencyUpdates
Linux package managers — if you deploy via OS packages or a container image, update the package/image to a build that includes the fix:
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install --only-upgrade <package-name>
# RHEL/CentOS/Fedora
sudo yum update <package-name>
# or
sudo dnf upgrade <package-name>
Docker
docker pull <vendor/image>:1.3.1
# or rebuild from a patched base image
docker build --no-cache -t <your-image>:patched .
Config hardening until patched
# Run one vault per process/container
VAULT_ID=tenant-a node server.js
# Disable multi-tenant routing if your app supports it
MULTI_TENANT=false
# Restrict dispatch to a single configured vault
ALLOWED_VAULTS=tenant-a
Minimal code fix pattern — enforce vault binding before dispatching any tool action:
function dispatch(input, ctx) {
if (input.vault !== ctx.vaultId) {
throw new Error("vault mismatch");
}
// existing scope/ACL checks
return handleRequest(input, ctx);
}
Detection & Verification
Check installed version
npm ls obsidian-tc
node -p "require('obsidian-tc/package.json').version"
Search lockfiles and manifests
grep -R "obsidian-tc" package.json package-lock.json yarn.lock pnpm-lock.yaml
Audit dependencies
npm audit
yarn audit
pnpm audit
Verify the fix is present by confirming the dispatch path rejects mismatched vaults. If you have source access, grep for the guard:
grep -R "input.vault === ctx.vaultId" .
grep -R "vault mismatch" .
Runtime test — send a request with a token bound to vault A and set input.vault to vault B. The patched service should deny the request with an authorization error.
Risk and Impact
This bug can let an attacker with any valid token cross tenant boundaries and access vaults they should never see. Because the flaw affects read, write, and delete operations, the blast radius includes data theft, tampering, and destructive changes across all configured vaults in a shared deployment.
For small teams, the biggest danger is silent cross-project exposure: one compromised credential or one over-permissioned integration can affect every tenant on the same process. Treat this as a high-priority patch-and-isolate issue even though it is not currently known to be exploited in the wild.