Hacktron discloses one-click UXSS in Perplexity Comet via XSS on a perplexity.ai subdomain and externally_connectable abuse
Hacktron researchers disclosed a one-click universal XSS (UXSS) in Perplexity Comet, a Chromium-based AI browser with the Comet Assistant agent extension. The extension's manifest trusts the wildcard https://*.perplexity.ai/* in externally_connectable, so a single XSS on any perplexity.ai subdomain can reach privileged extension message handlers. The researchers found a reflected XSS on fellowship.perplexity.ai (logout returnTo parameter) and bypassed the Cloudflare WAF. They then used extension actions to read cross-origin and local data and to drive the agent to act on arbitrary pages. The PoC read Gmail content and changed a Perplexity username. Perplexity was notified through its security contact and reportedly patched the issue within a day. No in-the-wild exploitation is reported.
Technical Details
- Root cause: the
externally_connectablewildcardhttps://*.perplexity.ai/*lets any matching origin callchrome.runtime.sendMessage/connecton extension IDnpclhjbddhklpbnacpjloidibaggcgon. - Initial foothold: reflected XSS via the
returnTo=javascript:parameter on thefellowship.perplexity.ai/logoutendpoint. A multi-line, string-concatenation payload bypassed the Cloudflare WAF. RUN_IDLE_TEST: useschrome.debugger.sendCommandwithDOMSnapshot.captureSnapshot. It acceptsfile://URIs and returns the serialized DOM (snapshotHtml,snapshotAxTree), exposing cross-origin and local file content.CALL_TOOL: exposes methods such asOpenTab,GetContent,GetVisibleTabScreenshot,CloseTabsandGroupTabs. These were used to open and read pages such as Gmail.startAgentFromPerplexity: reachable throughonConnectExternal. It opens a websocket to Perplexity's backend and executes returned actions (clicks, etc.) in the page, so an attacker can open any URL and make the agent act on it.- Failed escalation: attempts to reach RCE through Chrome privileged pages and by installing a malicious high-privilege extension did not succeed.
- Hacktron says it also found a related DOM-XSS-on-subdomain entry point in its earlier OpenAI Atlas disclosure.
Remediation
- Perplexity has patched the issue; the article says the fix came within a day of the report.
- Keep Comet updated.
- Developers should avoid wildcard origins in
externally_connectableand validate the sender in external message listeners. - Developers should also restrict dangerous actions such as
file://access and arbitrary tab reads. - Hacktron released free agents (
hacktron --agent chrome_extension,hacktron --agent domxss) to detect similar patterns.
Linha do tempo
-
Hacktron discloses one-click UXSS in Perplexity Comet via XSS on a perplexity.ai subdomain and externally_connectable abuse
ler a análise desta fonte ocultar
Hacktron researchers disclosed a one-click universal XSS (UXSS) in Perplexity Comet, a Chromium-based AI browser with the Comet Assistant agent extension. The extension's manifest trusts the wildcard
https://*.perplexity.ai/*inexternally_connectable, so a single XSS on any perplexity.ai subdomain can reach privileged extension message handlers. The researchers found a reflected XSS onfellowship.perplexity.ai(logoutreturnToparameter) and bypassed the Cloudflare WAF. They then used extension actions to read cross-origin and local data and to drive the agent to act on arbitrary pages. The PoC read Gmail content and changed a Perplexity username. Perplexity was notified through its security contact and reportedly patched the issue within a day. No in-the-wild exploitation is reported.Technical Details
- Root cause: the
externally_connectablewildcardhttps://*.perplexity.ai/*lets any matching origin callchrome.runtime.sendMessage/connecton extension IDnpclhjbddhklpbnacpjloidibaggcgon. - Initial foothold: reflected XSS via the
returnTo=javascript:parameter on thefellowship.perplexity.ai/logoutendpoint. A multi-line, string-concatenation payload bypassed the Cloudflare WAF. RUN_IDLE_TEST: useschrome.debugger.sendCommandwithDOMSnapshot.captureSnapshot. It acceptsfile://URIs and returns the serialized DOM (snapshotHtml,snapshotAxTree), exposing cross-origin and local file content.CALL_TOOL: exposes methods such asOpenTab,GetContent,GetVisibleTabScreenshot,CloseTabsandGroupTabs. These were used to open and read pages such as Gmail.startAgentFromPerplexity: reachable throughonConnectExternal. It opens a websocket to Perplexity's backend and executes returned actions (clicks, etc.) in the page, so an attacker can open any URL and make the agent act on it.- Failed escalation: attempts to reach RCE through Chrome privileged pages and by installing a malicious high-privilege extension did not succeed.
- Hacktron says it also found a related DOM-XSS-on-subdomain entry point in its earlier OpenAI Atlas disclosure.
Remediation
- Perplexity has patched the issue; the article says the fix came within a day of the report.
- Keep Comet updated.
- Developers should avoid wildcard origins in
externally_connectableand validate the sender in external message listeners. - Developers should also restrict dangerous actions such as
file://access and arbitrary tab reads. - Hacktron released free agents (
hacktron --agent chrome_extension,hacktron --agent domxss) to detect similar patterns.
- Root cause: the