Advisories
Security vulnerabilities, privacy incidents, safety concerns, and policy updates affecting LLMs and AI agents.
Security vulnerabilities, privacy incidents, safety concerns, and policy updates affecting LLMs and AI agents.
3,134 items
CVE-2026-120338 (CVSS 10, critical) affects prefab-ui from 0.14.0 before 0.21.0. Its Generative UI sandbox runs caller-supplied Python in a Deno subprocess started with unrestricted --allow-read, --allow-write and --allow-net, and the Deno API remains reachable from Python through Pyodide's js module, letting callers read and write host files. The usual remote path is the generate_prefab_ui tool in FastMCP's GenerativeUI provider, which is exposed unauthenticated on servers with no authentication configured, and the flaw is reachable there.
Fix: Upgrade prefab-ui to 0.21.0 or later. The runner then revokes Deno filesystem read, filesystem write and network permission after startup and before it accepts generated code.
JFrog Security Research (Vulnerabilities)TAKO AI Agent for Okta, prior to 3.0.1-beta, lets any authenticated user with a valid `fctr_session` cookie submit arbitrary Python through `POST /api/react/execute-script`, without administrator privilege. The `script_code` bypasses AI content filtering and passes an AST check that misses dynamic `getattr` call chains through `__builtins__`, then runs as root in the default container, enabling disclosure of Okta API tokens, the JWT key and the SQLite database, plus backend pivoting and persistence.
Fixed in version 3.0.1-beta.
CVE-2026-63377 affects TAKO AI Agent for Okta before 3.0.1-beta. The unauthenticated `POST /api/auth/setup` endpoint in `src/api/routers/auth.py` lets a network attacker create the first administrator account before the legitimate owner completes initial setup, because `initial_setup` checks only the `is_setup` flag. The attacker then gains a valid `fctr_session` JWT cookie and can read Okta-synced user data, API tokens, chat history and configuration, modify users and Okta integration credentials, or lock out administrators.
RAGFlow versions 0.25.2 through 0.27.3 call completion_openai in POST /api/v1/agents/chat/completions before UserCanvasService.accessible() checks access to the requested agent. An authenticated user who knows another user's private agent UUID can run that Only me workflow and read its output across user or tenant boundaries, and configured tools may cause side effects, though stronger impacts were not demonstrated.
Fix: Fixed in version 0.27.3.
Immich, a self-hosted photo and video manager, has an unauthenticated machine-learning /predict endpoint in machine-learning/immich_ml/main.py that passes caller-supplied options into model construction without restricting security-sensitive parameters. An attacker with network access could set cache_dir to an arbitrary writable path, causing model downloads to write there and clear_cache() to call shutil.rmtree() on that path after certain model-loading failures, which may modify mounted data or recursively delete an attacker-selected directory. The model-name allowlist prevents arbitrary-model deserialization or code execution.
praktor, a multi-agent Claude Code orchestrator with Telegram input, has a path traversal flaw in both Telegram upload sites in `internal/telegram/bot.go` before 0.9.1. The attacker-controlled document filename is concatenated into the destination path without sanitization, and `path.Join` collapses parent-directory traversal, so a remote Telegram user can write outside `uploads/` within the persistent agent workspace mounted at `/workspace/agent`. With `allow_from: []`, which permits all senders by default, no authentication is needed, and the attacker can plant or overwrite `CLAUDE.md`, instruction, skill, hook or configuration files that the agent reads on later runs. The demonstrated write scope is the workspace volume, not the unrestricted host filesystem.
Flowise through 3.1.4 has a sandbox escape (CVE-2026-119978) that lets authenticated users run OS commands when ALLOW_BUILTIN_DEP=true. Attackers submit JavaScript to /api/v1/node-custom-function that uses LocalFileStore to write a file into the mammoth package and then require it, escaping vm2 as the Flowise process user.
DBHub, a database MCP server, versions prior to 0.22.6 contain a flaw where read-only SQL validation can be bypassed on its MySQL and MariaDB connectors. The `scanSingleLineComment` function in `src/utils/sql-parser.ts` treats any double dash as a comment, while MySQL and MariaDB require following whitespace, so a hidden write or DDL statement evades `isReadOnlySQL` and still executes with `multipleStatements` enabled. An attacker who can influence the assistant's SQL, including via prompt injection, can modify or drop data within the database account's privileges. PostgreSQL is not affected.
SOCFortress CoPilot exposes its `scoutsuite-report` directory through an unauthenticated `/scoutsuite-report` StaticFiles mount in `backend/copilot.py`, even though normal /api routes require JWT authentication. The directory holds generated AWS, Azure and GCP reports and `scoutsuite-results/scoutsuite_results_<name>.js` files that disclose IAM principals, resource inventories and findings. During a GCP scan, the uploaded Google service-account JSON key is saved into that same web-served directory and removed only after the scan finishes, so an anonymous client can retrieve it and use the service account's cloud permissions.
SOCFortress CoPilot versions before 0.1.76 authenticate Graylog and Velociraptor webhooks against the same publicly hardcoded fallback header value, which is also shipped in `.env.example`. Deployments that leave these header secrets unset or unchanged let an anonymous caller bypass JWT authentication and reach `POST /api/graylog/invoke`, which forwards attacker-selected commands to the configured Wazuh manager, and the alert creation endpoints, which accept forged alerts for arbitrary `customer_code` values. Active-response delivery requires a reachable Wazuh manager.
Prior to version 0.1.76, SOCFortress CoPilot's `POST /api/agent_data_store/upload` endpoint in `backend/app/data_store/data_store_routes.py` let `customer_user` callers choose `bucket_name` and `object_name` with no allowlist, tenant prefix, ownership check or content restriction, so existing objects of any tenant could be overwritten. Targets include Sysmon configs distributed to Windows endpoints, server-rendered case report templates, and case and Velociraptor forensic artifacts, letting a lowest-privilege user tamper with cross-tenant evidence, blind endpoint telemetry or poison report templates. Sibling list, download and delete routes stay restricted to admin and analyst roles.
n8n versions before 2.42.6, 2.43.x before 2.43.3, and 3.x before 3.0.1 contain CVE-2026-119408, a remote code execution flaw. The deprecated Function, Function Item, and LangChain Code nodes run outside task runner isolation. Authenticated users who can create, modify, or import workflows that name these hidden node types can execute JavaScript in the n8n main process.
Fix: Fixed in n8n 2.42.6, 2.43.3, and 3.0.1, depending on the release line.
CoPilot versions before 0.1.76 let a customer_user, the lowest-privilege portal role, upload case-report templates that are later rendered without a sandbox by Jinja2 engines when an admin or analyst generates a report. The upload route validates only the filename-derived MIME type, and the shared template store lacks customer_code scoping, so an attacker can replace a default template. In the reported deployment, attacker Jinja expressions run as Python on the backend with root privileges, exposing all tenants' incident and SIEM data and stored connector credentials. The wkhtmltopdf HTML/PDF renderer also permits local-file reads and internal requests.
Kubeflow Pipelines versions before 2.18.0 have a resource exhaustion flaw in the API server's handling of uploaded pipeline archives. A small ZIP or gzip-compressed tar file can expand to consume disproportionately large memory and exhaust API-server resources. Multipart pipeline and pipeline-version uploads decompress before namespace authorization, so a reachable caller does not need a successful pipeline-create authorization decision.
Fix: Fixed in 2.18.0.
Kubeflow Pipelines versions from 0.5.1 through 2.17.0 have frontend artifact routes that do not verify whether an authenticated user may access the requested namespace. A user who can reach the frontend and knows an artifact location can read another tenant's datasets, models, or pipeline outputs by selecting that namespace or omitting it to reach an unguarded direct handler. The flaw affects multi-user deployments relying on Kubeflow Pipelines for tenant isolation, and the source states it does not establish arbitrary Kubernetes Secret disclosure, storage modification, or server-side code execution.
CVE-2026-118759 affects Kubeflow Pipelines before 2.18.0. The GET /apis/v1alpha1/runs/{run_id}/nodes/{node_id}/log handler returns logs without checking that the caller is authorized for the selected run, so a caller who can reach the backend and knows a run ID and a pod or node identifier can read live or archived logs with the API server's permissions. Live log requests also accept the node ID as a pod name without verifying run ownership, letting a known run ID reach an unrelated pod's main container logs.
Prior to 2.18.0, the volume artifact handler for GET /artifacts/get?source=volume in Kubeflow Pipelines did not confine a caller-supplied file path to the selected volume. A caller who can reach the route and name an existing mounted volume can use path traversal to read files outside that volume, if the artifact-serving process can read them. With authentication disabled no application credentials are needed; in multi-user deployments the caller ordinarily must be authorized for the supplied namespace.
Fixed in version 2.18.0.
@eeacms/volto-chatbot@2.0.3 registers an Express middleware on `**/_v1_da/**` that forwards unauthenticated requests of any HTTP method to the configured Danswer API, attaching the server-side DANSWER_API_KEY or session cookie. Because the path is derived from req.url with no allowlist or method restriction, an unauthenticated attacker can call arbitrary Danswer endpoints, including admin ones, as the service account.
When @sylphx/pdf-reader-mcp runs as an HTTP server (MCP_TRANSPORT=http), it reads MCP_API_KEY and logs that X-API-Key authentication is enabled, but never validates the header, so the /mcp endpoint accepts unauthenticated requests. With the default bind address of 0.0.0.0, any client that can reach the port can invoke every PDF tool and read any PDF the server process can open on the host, and URL-based sources allow limited SSRF unless --allow-private-ips is set. Only the opt-in HTTP transport is affected; the default stdio transport is not.
PraisonAI's JobWorkflowExecutor._exec_inline_python() runs inline Python from YAML workflow script: steps after AST validation, but the module import allowlist (allowed_modules) includes 'os', and the AST allowlist permits ast.Import, ast.Call and ast.Attribute nodes. A script such as "import os; os.system(...)" passes validation, so arbitrary OS commands run with the privileges of the calling process when PRAISONAI_ALLOW_JOB_WORKFLOWS=true and a workflow is executed via praisonai workflow run. The source notes the risk is greatest in multi-tenant or CI environments where workflows come from untrusted sources.
Fix: This issue is fixed in version 3.0.1-beta.
Fix: Fixed in version 3.3.0.
Fix: Fixed in version 0.9.1.
NVD/CVE DatabaseFix: Fixed in version 0.22.6.
Fix: Credential isolation is released in version 0.1.77; a release fully remediating the report-disclosure component has not been established.
Fix: Fixed in 0.1.76. Deployments with independently changed header secrets are not subject to this default-secret bypass.
Fix: Fixed in version 0.1.76.
NVD/CVE DatabaseFix: Fixed in 0.1.76.
NVD/CVE DatabaseFix: Fixed in version 2.17.0.
NVD/CVE DatabaseFix: Fixed in 2.18.0.
NVD/CVE DatabaseFix: Fixed in @sylphx/pdf-reader-mcp@3.0.1, which enforces the X-API-Key header with a constant-time comparison (rejecting missing or mismatched keys with HTTP 401), changes the default bind host to 127.0.0.1, and emits a startup warning when binding a non-loopback host without an API key. Workarounds for deployments that cannot upgrade immediately: set MCP_HTTP_HOST=127.0.0.1; place a reverse proxy in front that enforces authentication; use the default stdio transport instead of HTTP; or restrict filesystem reach with --allow-dir / MCP_PDF_ALLOWED_DIRS.
Fix: Remove 'os' from allowed_modules and allow only 'os.path' by explicitly handling it, for example by permitting 'from os.path import ...' only and blocking other os submodules. The source's recommended code replaces the set with {'datetime', 'time', 'json', 'math', 're', 'collections', 'itertools', 'pathlib'} and adds an ImportFrom check for node.module == 'os.path'. No fixed version is stated in the source.