AIDEFEND in Action AIA-0029 Validated Research Published: Jun 6, 2026

ChatGPhish: When a Webpage Makes ChatGPT Render a Phishing Interface

Permiso demonstrated how attacker instructions in an ordinary webpage could influence ChatGPT page summarization and place phishing links, fake account alerts, QR images and tracking images inside the assistant interface. The research recorded image-fetch telemetry including the requesting client's IP, User-Agent and, where provided, Referer. A proxy-mediated deployment would expose the proxy's network address rather than necessarily the end user's actual address. Defenses must cover both untrusted page ingestion and the links or automatic fetches created while displaying the answer.

Indirect Prompt InjectionSocial EngineeringSink EnforcementAI CopilotsWeb Security
7 applicable AIDEFEND defenses
Source: ChatGPhish: The Page Is the Payload 
Author: Andi Ahmeti (Permiso P0 Labs)
Original article: May 29, 2026

Threat Analysis

  • The page carries the instruction. An attacker adds Markdown-oriented prompt text to a webpage, README, or HTML page that a user later asks ChatGPT to summarize.
  • The model turns content into UI. ChatGPT produces an ordinary summary, then follows the injected formatting instruction and appends a fake security alert, additional resource link, image, or QR code.
  • The renderer completes the lure. Links become clickable, images are fetched, and the result appears inside ChatGPT's trusted interface rather than in the attacker's page.
  • Remote media adds tracking. Permiso showed image and QR-code variants that can reveal IP address, User-Agent, Referer where available, and timing tied to the rendered answer.
  • The boundary failure is provenance. The user sees an assistant response, but part of that response is attacker-controlled web content that survived summarization into live UI.

Applicable AIDEFEND Defenses (7)

AID-H-006.002
Text, Markup & Structured Output Sanitization and Release Gate
High
G005 removes model-generated remote images, QR images, HTML/CSS/SVG subresources and reference-style image fetches before rendering, with automatic link previews disabled. Independently executed published-code fixtures produced zero automatic browser requests. Ordinary clickable links and spoofed plain alert text remain, so destination policy, source labeling and user-action checks are separate requirements. This is a product-side integration proposal, not evidence that ChatGPT has deployed it.
AID-H-019.001
URL Normalization & Allowlist Filtering
High
The attack relies on live URLs, shorteners, redirects, images, and QR-code destinations. URL normalization and allowlist filtering should canonicalize every destination, resolve redirects, block private or unexpected ranges, and require policy approval before any background fetch, preview, or rendered link activation.
AID-H-019.002
Secure HTML Rendering & Content Demotion
Medium
G001 removes active HTML elements and markup from bounded fetched HTML and retains gateway-issued untrusted provenance. It does not remove ordinary malicious prose or Markdown syntax, decode QR codes, or prevent the model from generating new links and images. Keep external text outside trusted message roles, and enforce a separate release gate on the answer.
AID-H-002.002
Inference-Time Prompt & Input Validation
Medium
Apply G004 moderation immediately before dispatch of the exact extracted page text. Require an authenticated, request-bound decision under the configured policy and deny on findings, timeout or malformed results. The moderation service must be calibrated for instruction overrides and fake alerts; the gateway does not supply that detector, and generic schema or Unicode checks do not reject well-formed malicious prose.
AID-H-018.005
Value-Level Capability Metadata & Data Flow Sink Enforcement
Medium
ChatGPhish is fundamentally a sink problem: untrusted webpage-derived values flow into clickable links, remote image fetches, QR codes, and phishing UI. Runtime values from web content should carry provenance, and the renderer should block or downgrade them before they become external HTTP, media, or user-action sinks. This requires a controlled runtime with authenticated source/content bindings for every derived value, complete sink coverage and fail-closed unknown labels. One ingress label does not track arbitrary model rewriting. Native processes, browser requests and allowed destinations need separately verified coverage; stock SaaS deployment is not established.
AID-D-001.001
Per-Prompt Content, Intent & Obfuscation Analysis
Medium
Scan the exact extracted webpage or README text before it enters the summarizing model. A calibrated G001 classifier may flag instruction overrides or account-alert impersonation; it does not parse Markdown, decode QR images, inspect DOM visibility or prove that a URL is safe. Required extraction and detection views need separately verified adapters. Before admission, independently require every necessary classifier category and a finite score in the valid range. The current G001 sample can return PASS/NO_FINDING for empty results, missing categories or NaN scores; treat these as errors and refuse admission. This additional result-contract validation is not implemented by the published sample. False negatives still require separate tool and output controls.
AID-H-017.007
Dual-LLM Isolation Pattern
Medium
A no-tools quarantined reader can process raw webpages and pass bounded observations through a broker to a separately privileged component. Keep page-provided links and alert text untrusted after validation; a typed summary alone does not keep attacker instructions out of the resulting strings. The published G001 broker validates price-observation.v1, not this domain. A separately implemented domain schema and independently verified process, credential and network isolation are required. Validated string fields can still contain malicious instructions or false observations; privileged actions and renderer sinks need their own authorization.

What Defenders Should Do Now

  • Inventory every summarize-page, browser assistant, web reader, RAG preview, and copilot path that ingests third-party HTML or Markdown and then renders links or media in the assistant response.
  • Demote webpage-derived Markdown before inference. Treat page links, image tags, QR-code references, and formatting instructions as untrusted fields, not as response instructions.
  • Disable automatic remote media fetches from untrusted model output, or route them through a safe proxy with canonical URL checks, redirect controls, and no user-identifying headers.
  • Require provenance and step-up confirmation for external links, shortened URLs, QR codes, and account-warning style UI generated from summarized pages.
  • Add regression tests with fake security alerts, additional-resource links, QR codes, tracking pixels, shorteners, and hidden formatting requirements embedded in ordinary webpages.
  • Log renderer decisions: which URLs were suppressed, which media were fetched, which links became active, and which response spans came from third-party web content.

1 additional consideration

Assistant-rendered content provenance

The remaining product-design issue is not only whether the model obeys the page. Users need visible provenance when links, images, QR codes, or warning-style elements in an assistant response originate from third-party web content.
Recommendation: Beyond the techniques mapped above, product teams should also make assistant UI distinguish model-authored text from external webpage-derived links, images, QR codes, and account-style warnings, with step-up confirmation before any external destination becomes active.

Conclusion

ChatGPhish is valuable because it moves the IDPI discussion from model obedience into the output layer. The model is influenced by untrusted web content, but the higher-risk moment is when the assistant renderer turns that content into links, images, QR codes, and trusted-looking alerts. AIDEFEND  maps the defense to HTML demotion, value provenance, sink enforcement, URL gating, inference-time validation, detection, and isolation between webpage reading and trusted UI rendering.

Last updated: