CVE-2026-65013 is a broken object level authorization and insecure direct object reference vulnerability in Onlook through version 0.2.32. The flaw affects multiple tRPC API procedures, including project.get, member.remove, and chat.conversation.delete, where server-side authorization validation on user-supplied resource identifiers is insufficient or absent. An authenticated attacker can submit arbitrary UUID values such as projectId or conversationId and cause the application to operate on resources belonging to other users. As a result, the vulnerability enables unauthorized reading, modification, and deletion of project data, manipulation of project membership, and deletion of conversation history across tenant or user boundaries.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos.
This is a self-contained Node.js proof-of-concept lab for CVE-2026-65013, an authenticated BOLA/IDOR condition claimed to affect Onlook's tRPC API through version 0.2.32. It is not an Onlook source-tree exploit: server.js, lib/db.js, and lib/router.js implement an in-memory simulation of the vulnerable and patched API modes. Docker Compose starts the vulnerable instance on host port 3000 and the patched comparison instance on 3001; FIXED=1 enables resolve-then-verify authorization helpers. The main network exploit is exploit.js. It obtains UUIDs from the lab-only /demo/ids endpoint, authenticates with POST /login, creates an @trpc/client proxy using a Bearer JWT, and invokes 12 procedures as Bob against Alice's resources. Eleven checks demonstrate unauthorized disclosure or mutation, while project.update is deliberately retained as a protected control. It reads projects, owner-scoped project listings, membership data, invitations, AI conversation/message content, branches, settings, and frames. It removes Alice's membership and deletes an AI conversation. State-changing operations alter the in-memory database, so repeated execution against the same vulnerable process can fail until it is restarted. The vulnerable logic is concentrated in lib/router.js: all tRPC procedures require authentication but, when enforceAuth is false, trust caller-provided projectId, userId, conversationId, branchId, or canvasId values. In patched mode, lib/authorization.js maps child objects to their parent project and checks membership; member removal additionally requires owner role. Denials use a generic UNAUTHORIZED 'Unauthorized or not found' error to avoid resource-existence enumeration. demo.js performs the same comparison in-process, test-local.sh runs curl and automated validation against temporary ports, and public/ provides a browser UI that manually emits the same tRPC v10/superjson wire format. Documentation files describe the claimed Onlook mapping, root cause, remediation, and architecture.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
4 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.