Okta AI Agent
CVE-2026-63377
CRITICAL
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed port 8001 on fresh instance
-
DeliverySend unauthenticated POST /api/auth/setup
-
ExploitServer creates sole ADMIN account, issues fctr_session JWT
-
ExecutionAuthenticate as admin, lock out legitimate owner
-
ImpactRead/modify Okta data, tokens, and integration credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an instance of okta-ai-agent v3.0.0-beta that has NOT yet completed initial setup (the is_setup flag is false) and whose HTTPS port 8001 is reachable by the attacker. The default docker-compose.yml publishes 8001 on all interfaces and the Dockerfile binds uvicorn to 0.0.0.0, so a default deployment on any network reachable from untrusted hosts is exploitable with no authentication, no bootstrap token, and no IP restriction. The localhost-only CORS rule is browser-enforced only and does not stop non-browser clients (curl, Python), so it provides no protection. Limiting factors: exploitation is confined to the first-run window - once legitimate setup is completed the endpoint returns HTTP 400 and rejects further setup - and a deployment that binds the port to localhost or an internal network reduces exposure. The setup call does not require access to a real Okta tenant. |
| Impact | All available signals align toward high real-world priority for anyone actually running this product. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N) describes the worst case: a network-reachable, low-complexity, unauthenticated, no-interaction flaw with full C/I/A impact (9.8 Critical), and the GHSA advisory independently confirms the mechanism matches CWE-306 (missing authentication for a critical function) rather than a subtle memory bug. The vuln.today decision label is act_now, and the advisory contains complete working exploit code (poc.py plus manual curl steps) whose success was confirmed by live-container dynamic reproduction - so publicly available exploit code exists and the barrier to weaponization is essentially zero. The key tempering signal is that this is NOT in CISA KEV and no EPSS score was provided, so there is no evidence of active or widespread in-the-wild exploitation; the urgency is driven by trivial exploitability plus a public exploit, not by observed attacks. The other limiting factor is state-dependent: exploitation only works during the first-run window before the legitimate owner completes setup (the is_setup flag gates it), which narrows the opportunity but does not reduce severity when the window is open. Net: for exposed, not-yet-initialized deployments this is a genuine act-now item; for a large population it is moderated by the product's very small deployment footprint and the fact that already-initialized instances are not vulnerable. |
| Exploit ScenarioDerived | An attacker who can reach a freshly deployed okta-ai-agent instance on its exposed HTTPS port 8001 sends a single unauthenticated POST to /api/auth/setup with attacker-chosen credentials before the legitimate owner finishes initial setup; the server creates the account with UserRole.ADMIN and returns a valid fctr_session JWT cookie. The attacker is now the sole administrator and can read Okta-synced user data, API tokens, and chat history, alter Okta integration credentials, and lock out the owner. A complete working PoC (poc.py and manual curl commands) is published in the GHSA advisory and was confirmed by live dynamic reproduction. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Unauthenticated first-run administrator takeover in TAKO AI Agent for Okta (pip package okta-ai-agent) v3.0.0-beta: the POST /api/auth/setup endpoint in src/api/routers/auth.py performs no authentication, requires no one-time bootstrap token, and applies no network restriction, so any remote attacker who reaches a freshly deployed instance before the legitimate owner completes setup can create the sole admin account and receive a valid fctr_session JWT cookie. Because the default docker-compose.yml publishes port 8001 on all interfaces and the Dockerfile binds uvicorn to 0.0.0.0, a default deployment reachable from untrusted hosts is exploitable with a single HTTP request and no Okta tenant access; the attacker then controls Okta-synced user data, stored API tokens, chat history, and integration credentials. A public advisory includes full reproduction artifacts and working step-by-step exploit instructions (publicly available exploit code exists), and the release fixing the issue is v3.0.1-beta, which introduces an ephemeral in-memory setup token and binds the published port to 127.0.0.1 by default. Exploitation is limited to the first-run window: once setup is completed the endpoint returns HTTP 400, and deployments bound to localhost or an internal interface reduce exposure.
RemediationAI
Upgrade to v3.0.1-beta, which requires a setup token: an in-memory, per-process token is generated with secrets.token_urlsafe, printed once to the container log at startup, compared in constant time, and cleared after setup completes. If upgrading immediately is not possible, do not leave a fresh instance reachable before setup: complete the first-run setup before exposing the service, and change the compose port mapping from "8001:8001" to "127.0.0.1:8001:8001" or front the listener with a firewall/allowlist or authenticated reverse proxy so untrusted clients cannot reach /api/auth/setup; note that the built-in localhost CORS rule does not protect against non-browser HTTP clients, so it is not a valid mitigation on its own, and binding to localhost limits remote access for all consumers of the UI. Upgrading the compose file also pulls image fctrid/ai-agent-for-okta:3.0.1-alpha in the commit diff, so verify the deployed tag matches the fixed release. Anyone who ran an exposed pre-setup instance should treat it as compromised: rotate Okta API tokens and integration credentials, review and recreate admin users, and inspect chat history and configuration for tampering. Advisory: https://github.com/fctr-id/okta-ai-agent/security/advisories/GHSA-536w-42p8-3qv9.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is a FastAPI application (src/api/main.py) exposing an authentication router mounted without a global authentication guard; the initial_setup handler at src/api/routers/auth.py:117 takes only a database session dependency, checks the single is_setup completion flag, then calls create_auth_user with UserRole.ADMIN and set_auth_cookie, issuing a session cookie immediately. This is CWE-306, Missing Authentication for Critical Function: a security-critical bootstrap operation is gated only on state (whether setup has run) rather than on proof of authorization such as a bootstrap secret or local-only access. The deployment chain amplifies the flaw: docker-compose.yml publishes 8001:8001 on all interfaces, the Dockerfile starts uvicorn with --host 0.0.0.0 --port 8001, and the CORS middleware restricted to localhost/127.0.0.1 is enforced by browsers only, so curl or Python HTTP clients bypass it entirely. The setup path never contacts the Okta API, so fake OKTA_CLIENT_ORGURL and OKTA_API_TOKEN values are sufficient to reproduce. The upstream fix commit 3b5ccaff adds a per-process ephemeral setup token generated with secrets.token_urlsafe, printed once to the container log and compared with hmac.compare_digest (403 on mismatch), clears the token after setup, changes the compose port mapping to 127.0.0.1:8001:8001, and additionally drops root privileges in the Dockerfile via a dedicated tako user.
Know when Docker gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Single unauthenticated network request against a default-exposed setup endpoint with no auth or token (AV:N/AC:L/PR:N/UI:N); admin takeover yields full confidentiality, integrity, and availability loss.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
TAKO AI Agent for Okta is a local-first AI agent that helps Okta administrators query tenant data using natural language. Prior to 3.0.1-beta, POST /api/auth/setup in src/api/routers/auth.py allows an unauthenticated network attacker to create the first administrator account before the legitimate owner completes initial setup. The initial_setup function checks only the is_setup completion flag and requires no authentication, one-time bootstrap token, or network restriction. The default docker-compose.yml publishes port 8001 on all interfaces, the Dockerfile starts the listener on 0.0.0.0, and src/api/main.py mounts the authentication router without a global authentication guard. The endpoint invokes create_auth_user with UserRole.ADMIN and set_auth_cookie, issuing a valid fctr_session JWT cookie. Localhost-only CORS rules do not restrict non-browser HTTP clients, and the setup operation does not require access to a real Okta tenant. The attacker becomes the sole administrator and prevents legitimate first-run setup, can read Okta-synced user data, API tokens, chat history, and application configuration, modify users and Okta integration credentials, and lock out administrators or disable the service. Already completed setup is rejected. This issue is fixed in version 3.0.1-beta.
Articles & Coverage 2
Technical POC Analysis
This is CWE-306, Missing Authentication for Critical Function.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-63377 is a critical unauthenticated first-run administrator takeover vulnerability in TAKO AI Agent for Okta (okta-ai-agent) v3.0.0-beta. Any remote attacker who reaches a freshly deployed instance before the legitimate owner completes setup can create the sole admin account and gain full control over Okta-synced user data, API tokens, chat history, and integration credentials. This puts sensitive identity and integration data at risk and requires immediate leadership attention to prevent unauthorized access.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Affected Products (CPE)CVE.org
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac
Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post
Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten
Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build
Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config
Unauthenticated remote command injection in SGWBOX N3 firmware 2.0.25 lets attackers execute arbitrary operating-system
Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per
Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l
Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c
NVD
CVE.org
EPSS
GitHub
Exploit-DB