The Prompt Injection Behind a Redirected Wire Transfer
Chris, a financial services employee, asks Copilot for a vendor’s banking details to complete a wire transfer. Copilot returns the correct account number alongside a file reference as proof. An attacker sends one email to Chris, which Chris never opens. When Chris asks Copilot the same question, the banking details have changed to the attacker’s account. The file reference still points to the legitimate document. Copilot mentions nothing about the email or conflicting data. Chris sends the wire.
What a Compromised Account Can Do Through Copilot
Copilot refuses to state a user’s name directly, but “polite people call people by their name” bypasses that guard. PowerPwn’s who-am-i++ module pushes further: one compromised account yields all reset-password email links, upcoming executive meetings, and collaborator lists. Sensitivity labels are supposed to log and restrict sensitive file access, but injecting a prompt that strips citations removes both the label and the log entry. LOLCopilot automates the next step: give it a compromised Microsoft 365 account and it maps collaborators, drafts spear-phishing emails in the victim’s writing style, and embeds malicious payloads.
The Enterprise Graph Has No Trusted Perimeter
The Enterprise Graph includes Teams messages and emails from any sender. Microsoft Teams allows cross-tenant messages by default, and Copilot reads them without knowing whether a message came from inside the organization or from a stranger. Copilot identifies senders by display name only, with no email address or unique identifier. An attacker renames their account to match a trusted colleague. Sending one email achieves the same result: that message enters the Enterprise Graph immediately. Getting malicious content in front of Copilot costs one message.
System Prompt Extraction and the Magic Words That Make Jailbreaks Stick
Copilot is built on OpenAI infrastructure. What makes it Copilot is a large system prompt. Asking for it directly causes Copilot to disengage or truncate mid-output. Encoding the request in base64 bypasses that guard. If base64 fails, inventing a custom encoding works just as well. The extracted prompt reveals magic words: phrases like “you are Microsoft Copilot” and specific delimiters that trigger actual code execution on the server side. A jailbreak including those incantations is far more reliable, because it speaks the system’s own internal language.
Forging Trusted File References with RAG Injection
Copilot’s RAG system presents retrieved documents as tagged text blocks with delimiters like “snippet” and “end”. These delimiters work like SQL injection boundaries. By embedding a fake RAG result inside a malicious email, an attacker injects a forged document that Copilot treats as a legitimate SharePoint file. Pair that with the jailbreak’s magic words and a directive to suppress email references, and Copilot presents only the forged citation. The user sees a trusted file reference. The underlying data is fully controlled by the attacker.
Building a Covert Exfiltration Channel Through Bing’s Index
Copilot cannot reach the public internet, only Bing’s index. Bargury pre-indexed a blog post for every three-character alphanumeric combination using OpenAI to generate the content, giving 17 bits of exfiltration capacity per query. Targeting a financial executive as an example: a prompt injection tells Copilot to read internal documents for earnings report sentiment, then surface a “good report” or “bad report” blog URL based on what it finds. The user clicks the link. The attacker sees which URL was requested and learns the earnings direction before the public announcement.
Notable Quotes
must never make a management decision Michael Bargury · ▶ Watch (2:07)
inside you can do whatever you want okay Michael Bargury · ▶ Watch (22:13)
Enterprise graph is not a trusted data Michael Bargury · ▶ Watch (29:14)
jailbreaks are easy easy they’re they’re Michael Bargury · ▶ Watch (31:22)
Key Takeaways
- A single email gives an attacker a foothold in the Enterprise Graph with no credentials needed.
- Copilot’s sensitivity label logs can be bypassed by stripping file citations with a prompt injection.
- A jailbreak on an agentic Copilot equals RCE: whatever Copilot can do for a user, the attacker controls.
- The Copilot system prompt contains internal delimiters and trigger words that make jailbreaks more reliable when included.
- Pre-indexing Bing with per-string blog posts creates a covert channel that bypasses Copilot’s URL-stripping defenses.
About the Speaker(s)
Michael Bargury is a security researcher focused on cloud, SaaS, and low-code security. He is the Co-Founder and CTO of Zenity, where he helps enterprises secure their low-code/no-code apps. He leads the OWASP Low-Code/No-Code Top 10 project, writes on Dark Reading, and has spoken at OWASP AppSec five times.