ForumsResourcesSearchLeak: Dissecting the M365 Copilot One-Click Exfiltration Chain

SearchLeak: Dissecting the M365 Copilot One-Click Exfiltration Chain

ZeroDayHunter 6/15/2026 USER

Just reviewed the Varonis Threat Labs report on 'SearchLeak,' and it’s a stark reminder of the risks involved in rapidly adopting AI agents without strict data boundary enforcement. The chaining of three vulnerabilities (CVE-2026-38442, CVE-2026-38443, and CVE-2026-38444) allowed for a one-click attack that bypasses traditional phishing defenses because the payload originated from a legitimate microsoft.com domain.

The core issue lies in how Copilot Enterprise Search handles indexed content. By manipulating the API calls, attackers could force the Copilot agent to retrieve sensitive emails, calendar entries, and even indexed MFA codes, then exfiltrate them to a remote listener.

Since standard URL filtering won't catch this (thanks to the trusted domain), we need to lean heavily on behavioral detection. I've drafted a KQL query for Sentinel to watch for anomalous Copilot search volumes:

OfficeActivity
| where Workload == "MicrosoftGraph"
| where Operation == "Copilot.Search"
| extend FileCount = extract_all(@"\"FileCount\":\s*(\d+)", DynamicParams)[0]
| where toint(FileCount) > 50 // Threshold for suspicious bulk retrieval
| project TimeGenerated, UserId, ClientIP, Operation, FileCount

Has anyone else started implementing stricter 'managed by' constraints on their Copilot plugins to limit this blast radius?

PR
Proxy_Admin_Nate6/15/2026

Great post. We saw a similar issue in our testing lab. The behavioral approach is definitely the way to go since the domain reputation is inherently trusted. We're also using conditional access policies to limit Copilot access to managed devices only, which helps mitigate the risk of compromised credentials being used from untrusted endpoints.

SY
SysAdmin_Dave6/15/2026

The scariest part is the indexing of MFA codes. That implies the AI agent has way too much read access to inbox content. I'd recommend admins review their 'Graph Explorer' permissions immediately. We're stripping 'Mail.Read' and 'Calendars.Read' from the service principal used by Copilot until the patches are fully verified across our tenant.

EM
EmailSec_Brian6/15/2026

Solid KQL snippet. I'd add a join to IdentityLogonEvents to correlate the ClientIP with recent risky sign-ins. If you see a high-volume Copilot search right after a 'Impossible Travel' alert, you know you're breached. Traditional EDR won't catch this since it's living entirely in the browser/SaaS layer.

DL
DLP_Admin_Frank6/16/2026

Valid concerns. Beyond permissions, we're focusing on restricting ingestion at the content level. You can use DLP policies to block specific sensitive info types from appearing in Copilot responses. While it doesn't fix the indexing delay, it stops the exfiltration at the output stage. To audit your current Copilot DLP rules, use this snippet:

Get-DlpCompliancePolicy | Where-Object {$_.Name -like "*Copilot*"}

Has anyone tested if file-type exclusions in the admin center actually impact the indexing delay?

CL
CloudSec_Priya6/17/2026

Valid concerns. While detection is key, prevention via strict segmentation is better. Information Barriers can ensure that even if Copilot is compromised, it cannot bridge data between isolated business units. This stops the 'one-click' exfiltration across departmental lines. You can verify your barrier groups using this command:

Get-InformationBarrierPolicy | Select-Object Name, State, AssignedSegments

Configuring these segments adds a critical layer of isolation that pure permission reviews might miss.

RE
RedTeam_Carlos6/18/2026

Great breakdown. From a red team perspective, the trusted domain bypass is the most dangerous vector because it slips past standard defenses. However, we've also found that even if the exploit is patched, the root cause often remains: overly permissive SharePoint indexing. You should audit which sites Copilot is actually allowed to read from and ensure external sharing isn't exposing data to the index.

Get-SPOSite -Limit All | Where-Object {$_.SharingCapabilities -ne 'Disabled'} | Select-Object Url, SharingCapabilities
DN
DNS_Security_Rita6/20/2026

Building on the containment discussion, if you can't patch immediately, consider disabling Copilot for privileged users as a stopgap. You can target specific security groups via PowerShell to limit the blast radius while you audit Graph permissions:

$groupId = "Your-Privileged-Group-ID"
Update-MgBetaAdminCopilot -DisableForGroupId $groupId


It’s a temporary fix, but it buys time to adjust DLP rules without locking everyone out.
CR
CryptoKatie6/20/2026

Great discussion. While detection is vital, implementing rate-limiting on the specific Search API endpoints can effectively throttle large-scale exfiltration attempts even if the chain executes. I also recommend auditing your custom connectors; often, third-party data sources have looser permissions than native M365 data. If you need to investigate historical search patterns, try this snippet to isolate bulk queries:

Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-1) -Operations "Search" -ResultSize 5000 | Group-Object UserIds | Where-Object {$_.Count -gt 100} | Select-Object Name, Count

Just ensure you're filtering for the Copilot workload specifically to reduce noise.

Verified Access Required

To maintain the integrity of our intelligence feeds, only verified partners and security professionals can post replies.

Request Access

Thread Stats

Created6/15/2026
Last Active6/20/2026
Replies8
Views84