Like mailing a poisoned pizza to your office kitchen and watching the intern eat it and hand out the leftovers
CVE-2026-90999 is a multi-stage trust-boundary violation in Sentry's Seer AI debugging assistant. When Seer is configured to hand issues to an integrated coding agent (Claude Code, Cursor, Codex, or similar), an external attacker who knows — or finds — a project's public DSN can POST a fabricated error event containing malicious instructions disguised as a resolution. Seer ingests the event, generates a root-cause analysis that embeds attacker-controlled fields, and passes it as a structured prompt to the coding agent. The agent then downloads and executes attacker-controlled packages (e.g., a malicious npx payload) with the developer's full privileges, exfiltrating credentials, AWS keys, GitHub tokens, and SSH keys. All Sentry organizations that have Seer enabled with coding-agent handoff and a publicly exposed DSN are affected. No specific version range has been published by the vendor; the vulnerability is architectural and tied to the Seer→agent pipeline.
There is no vendor CVSS score for this CVE. CERT/CC published VU#212479 on 2026-09-16 without a score, and NVD analysis is pending. Related "agentjacking" research by Tenet Security (disclosed to Sentry on 2026-06-03) demonstrated an 85% exploitation success rate across Claude Code, Cursor, and Codex in controlled tests. The attack is unauthenticated and remote, which would normally push toward CRITICAL. However, the chain requires an opt-in feature (Seer + coding agent integration) that is still in early-adopter rollout, meaningfully narrowing the reachable population. noisgate assesses this at HIGH (8.1) — the supply-chain blast radius is severe for affected orgs, but the installed base gating prevents a CRITICAL floor.
5 steps from start to impact.
DSN Discovery
- Target organization uses Sentry for frontend error monitoring
- DSN is embedded in client-side JavaScript or committed to a public repository
- Some organizations proxy telemetry through a server-side relay, hiding the DSN from client bundles
- DSN rotation after exposure is possible but rarely practiced
Malicious Event Injection
## Resolution section with embedded shell commands (e.g., npx @attacker-package). The event is POSTed to Sentry's public ingest endpoint using only the DSN — no authentication, no account access, no API key required. The event appears in the project's issue queue indistinguishable from legitimate errors.- Valid DSN for the target project
- Network access to Sentry's ingest endpoint (sentry.io or self-hosted)
- Sentry rate-limiting and abuse detection may throttle high-volume injection, but a single well-crafted event suffices
Seer Root-Cause Analysis Poisoning
- Seer must be enabled on the target project
- The event must meet Seer's heuristics for automated remediation eligibility
- Seer is an opt-in feature currently in early-adopter rollout — most Sentry organizations do not have it enabled
- The event must pass Seer's internal confidence threshold to trigger agent handoff
Coding Agent Prompt Injection
- A coding agent integration must be configured (Cursor, Claude Code, Codex)
- The agent must have repository access and shell execution privileges
- Some agent configurations require human approval before executing shell commands
- Claude Code's default permission model may block untrusted package installation depending on configuration
Arbitrary Code Execution & Credential Exfiltration
npx command that downloads and runs a malicious npm package. The package runs with the developer's full privileges and probes the environment for AWS keys, GitHub tokens, SSH credentials, Kubernetes secrets, and environment variables. Harvested credentials are exfiltrated to attacker-controlled infrastructure. The attacker now has write access to source repositories and potentially CI/CD pipelines.- Agent has network egress to npm registry and attacker C2
- Developer environment contains credentials worth exfiltrating
- Sandboxed agent environments (e.g., Codex sandbox mode) limit filesystem and network access
- Organizations with strict egress filtering may block outbound connections to unknown hosts
npx execution of unknown packages. Network monitoring may detect exfiltration to novel domains. However, Tenet notes this attack bypasses EDR, WAF, IAM, and VPN monitoring because operations appear as authorized developer activity.The supporting signals.
| In-the-Wild Status | No confirmed in-the-wild exploitation. Not KEV-listed. Tenet Security demonstrated the attack in controlled testing against 100+ agents across 4 agent families with 85% success rate. The technique is publicly documented and trivially reproducible. |
|---|---|
| Proof of Concept | Tenet Security published a detailed technical blog and open-sourced agent-jackstop, a defensive tool. The attack methodology is fully documented in the CSA research note and CERT/CC advisory VU#212479. No standalone exploit script published, but the attack requires only a curl POST to the Sentry ingest endpoint. |
| EPSS Score | Not yet scored — CVE published 2026-09-16, EPSS data typically lags 30+ days for new CVEs. |
| KEV Status | Not listed in CISA KEV catalog as of 2026-09-18. |
| CVSS Vector | No vendor score published. noisgate estimated vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N — unauthenticated network attack, high complexity (requires Seer+agent enabled), no privileges, changed scope (crosses from telemetry plane to code execution plane), high confidentiality and integrity impact. |
| Affected Versions | All versions of Sentry SaaS and self-hosted with Seer enabled and coding agent integration configured (Cursor, Claude Code, Codex). No specific version range published — vulnerability is architectural. |
| Fixed Versions | No patch available as of 2026-09-18. Sentry has not published a fix version. CERT/CC advisory recommends disabling automated remediation flows. |
| Scanning/Exposure Data | Tenet Security identified 2,388 organizations with publicly exposed DSNs, including 71 in Tranco's top-1M websites. Actual vulnerable population is a subset: only organizations with Seer + coding agent handoff enabled are exploitable. |
| Disclosure Timeline | Tenet disclosed to Sentry on 2026-06-03. CERT/CC published VU#212479 on 2026-09-16. CVE-2026-90999 reserved 2026-09-14, published 2026-09-16. |
| Reporting Researchers | Nikita Benkovich and Vitalii Valkov (agyn) (CERT/CC credit). Related agentjacking research by Ron Bobrov, Barak Sternberg, Nevo Poran at Tenet Security. |
noisgate verdict.
The single most decisive factor is supply-chain blast radius gated by an opt-in feature: the attack is unauthenticated and remote, and successful exploitation yields write access to source repositories and CI/CD credentials — a supply-chain pivot. However, the chain requires Seer + coding agent handoff to be enabled, an early-adopter feature that narrows the reachable population well below the general Sentry install base, preventing a CRITICAL floor.
Why this verdict
- Unauthenticated remote attack: The DSN is a public credential by design, and the Sentry ingest endpoint requires no authentication. The attacker needs zero prior access to the victim's Sentry account, source code, or infrastructure. This is a true unauthenticated network attack.
- Supply-chain blast radius: Successful exploitation gives the attacker code execution in the developer's environment with access to source repositories, CI/CD credentials, AWS keys, and GitHub tokens. This is a supply-chain pivot — the attacker can inject backdoors into production code, compromise build pipelines, and laterally move across the organization's infrastructure.
- Role multiplier: The affected component (Sentry Seer + coding agent) occupies a CI/CD-adjacent role. When the coding agent runs in a CI/CD environment (e.g., GitHub Actions self-hosted runner, Cursor in a shared dev environment), the blast radius extends to supply-chain scale. However, Seer + coding agent integration is an opt-in early-adopter feature — the majority of Sentry's install base (~100K+ organizations) does not have this enabled. The high-value role population is estimated at <5% of Sentry users, which means the floor is HIGH but not CRITICAL.
- 85% exploitation success rate: Tenet's controlled testing demonstrated reliable exploitation across Claude Code, Cursor, and Codex. The attack is not theoretical — it works consistently when the prerequisite configuration exists.
- No patch available: As of 2026-09-18, Sentry has not published a fix. The vulnerability is architectural (trust boundary between telemetry ingest and agent execution), suggesting a non-trivial remediation effort.
Why not higher?
CRITICAL would require either active KEV listing or a canonical high-value-role component where ≥10% of installs occupy the high-value role by definition. Sentry Seer with coding agent handoff is an opt-in early-adopter feature — the vast majority of Sentry's install base is not configured for automated agent remediation. The attack also has an AC:H component: the event must pass Seer's internal confidence heuristics to trigger agent handoff, adding non-trivial friction. The 2,388 exposed DSNs represent DSN exposure, not agent-enabled configurations.
Why not lower?
MEDIUM would undercount the blast radius for affected organizations. The attack is unauthenticated, remote, and reliably exploitable (85% success rate). Successful exploitation yields supply-chain-scale impact: source repo write access, credential theft, and CI/CD pipeline compromise. The attack methodology is publicly documented and trivially reproducible with a single curl command. For any organization that has Seer + agent enabled, this is effectively a CRITICAL-severity issue.
What to do — in priority order.
- Disable Seer → coding agent handoff immediately — The most effective mitigation is severing the trust chain between Sentry telemetry and code execution. Disable the Autofix-to-agent pipeline in Sentry project settings. This eliminates the attack surface entirely while preserving Seer's read-only analysis capabilities. Deploy within 72 hours given zero-patch status (noisgate HIGH mitigation SLA: 30 days, but urgency warranted).
- Require human approval for all agent shell commands — Configure coding agents (Cursor, Claude Code) to require explicit human confirmation before executing any shell command,
npxinvocation, or package installation. This breaks the automated execution chain at step 4. Deploy within 30 days per the noisgate HIGH mitigation SLA. - Audit and rotate exposed DSNs — Search your JavaScript bundles, public repositories, and CI/CD configs for exposed Sentry DSNs. Rotate any DSN found in public-facing code. Consider proxying client-side telemetry through a server-side relay to prevent future DSN exposure. Deploy within 30 days.
- Sandbox agent execution environments — If coding agents must remain active, run them in isolated sandboxes with no access to production credentials, restricted network egress, and read-only repository access. Use Codex's sandboxed mode or equivalent isolation. Deploy within 30 days.
- Deploy agent-jackstop hardening configs — Tenet Security open-sourced drop-in configurations that harden Cursor and Claude Code against untrusted telemetry injection. These filter Sentry MCP output before it reaches the agent's execution context. Deploy within 30 days.
- WAF/IPS rules on the Sentry ingest endpoint — the malicious payload is a valid Sentry event structure; content-based filtering would require Sentry-side changes that don't exist yet.
- EDR on developer workstations — Tenet confirmed the attack bypasses EDR because all operations appear as authorized developer activity (agent executing npm commands is normal behavior).
- Network segmentation / VPN — the attack originates from the public internet to Sentry's SaaS ingest endpoint; your internal network controls are not in the path.
- Sentry's built-in rate limiting — a single well-crafted event is sufficient; rate limiting addresses volume, not content poisoning.
Crowdsourced verification payload.
Run on any workstation with curl and access to your Sentry organization. Requires a valid Sentry API auth token with org:read and project:read scopes. Invoke with: bash check_cve_2026_90999.sh <SENTRY_ORG_SLUG> <SENTRY_AUTH_TOKEN>. Checks whether any projects have Seer autofix and coding agent integrations enabled.
#!/usr/bin/env bash
# check_cve_2026_90999.sh — Detect exposure to CVE-2026-90999
# Checks Sentry org for Seer + coding agent configuration
# Exit codes: 1=VULNERABLE, 0=PATCHED/NOT_AFFECTED, 2=UNKNOWN
set -euo pipefail
ORG="${1:-}"
TOKEN="${2:-}"
if [[ -z "$ORG" || -z "$TOKEN" ]]; then
echo "Usage: $0 <ORG_SLUG> <AUTH_TOKEN>"
exit 2
fi
BASE="https://sentry.io/api/0"
VULN=0
echo "[*] Checking organization features for Seer/Autofix..."
ORG_RESP=$(curl -sf -H "Authorization: Bearer $TOKEN" "$BASE/organizations/$ORG/" 2>/dev/null) || {
echo "UNKNOWN — could not query Sentry API. Verify org slug and token."
exit 2
}
echo "[*] Checking for coding agent integrations..."
INTEGRATIONS=$(curl -sf -H "Authorization: Bearer $TOKEN" "$BASE/organizations/$ORG/integrations/" 2>/dev/null) || {
echo "UNKNOWN — could not query integrations endpoint."
exit 2
}
HAS_SEER=$(echo "$ORG_RESP" | grep -ci 'seer\|autofix\|ai-autofix' || true)
HAS_AGENT=$(echo "$INTEGRATIONS" | grep -ci 'cursor\|claude-code\|codex\|coding-agent' || true)
if [[ $HAS_SEER -gt 0 && $HAS_AGENT -gt 0 ]]; then
echo "VULNERABLE — Seer features detected AND coding agent integration found."
echo "Action: Disable Seer->agent handoff immediately per CVE-2026-90999."
VULN=1
elif [[ $HAS_SEER -gt 0 ]]; then
echo "VULNERABLE — Seer features detected. Verify agent config manually."
VULN=1
else
echo "PATCHED — No Seer/Autofix features or coding agent integrations detected."
fi
echo ""
echo "[*] DSN exposure check (manual step recommended):"
echo " grep -r 'sentry.io' --include='*.js' --include='*.ts' your-frontend/"
echo " GitHub: https://github.com/search?q=org:<your-org>+sentry+dsn"
exit $((VULN > 0 ? 1 : 0))If you remember one thing.
curl command), we recommend treating mitigation as urgent: disable agent handoff within 72 hours, audit and rotate exposed DSNs within the same window, and require human approval for all agent shell commands. The noisgate remediation SLA of 180 days applies once a vendor patch ships — monitor CERT/CC VU#212479 and Sentry's security advisories for updates. If you do not use Seer or coding agent integrations, you are not affected and no action is required beyond documenting the rationale.Sources
- CERT/CC Vulnerability Note VU#212479
- Tenet Security — Agentjacking: Coding Agents with Fake Sentry Errors
- CSA Research Note — Agentjacking via Sentry MCP Injection
- OpenCVE — CVE-2026-90999 Details
- Sentry Documentation — Coding Agents Integration
- Sentry Documentation — Seer Autofix
- SaaSRise — Sentry DSN Vulnerability Threatens AI Coding Agents
- DevOps.com — Tenet Agentjacking Attack
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.