Microsoft's Security Research team is warning of an active, high-volume social engineering campaign that has pushed millions of emails through commercial gateways by weaponizing a little-known corner of the Unicode standard: invisible tag characters. Instead of obfuscating payloads or attachments, the operators insert non-rendering Unicode tag codepoints directly into the message body, splitting high-signal financial lure keywords — 'funding' being the documented example — into fragments that keyword-matching email filters can no longer tokenize. The recipient sees a perfectly normal message. The filter sees gibberish interleaved with invisible bytes and scores it clean.
This is not a vulnerability in the traditional sense — there is no CVE, no patch, and no affected version list. It is a detection-engineering failure class that affects virtually every secure email gateway (SEG) and native filter that performs literal keyword, regex, or Bayesian tokenization on message content. If your controls assume that the bytes you inspect are the bytes the user reads, this campaign breaks that assumption. Defenders need to act on two fronts: normalize or flag non-rendering codepoints at the mail flow layer, and hunt for downstream execution from lures that already landed.
Technical Analysis
The Evasion Mechanism
Unicode reserves a block of codepoints originally designed for language tagging: U+E0001 (LANGUAGE TAG) and U+E0020–U+E007F (TAG characters). These codepoints are deprecated for general use but remain valid Unicode, and critically, they render as zero-width, non-printing glyphs in modern clients including Outlook and webmail. A human reader cannot see them. A string comparison engine absolutely can.
The attacker's insertion is trivially mechanical. The lure word:
fundingbecomesf<U+E0066>u<U+E006E>nd<U+E0069>ing(or any arbitrary interleaving)- Rendered output:
funding - Filter token stream: fragmented, unmatchable substrings
Keyword lists, YARA-style content rules, regexes, and statistical classifiers that never see the canonical token all fail open. This is the same character-confusion family as homoglyph substitution (Cyrillic 'а' for Latin 'a') and zero-width space insertion (U+200B), but tag characters are arguably more effective because they are rarer in legitimate traffic and less commonly normalized by gateway pipelines.
Why This Matters Beyond One Campaign
Notably, Microsoft drew a contrast with prior research where threat actors used these same tag characters to smuggle hidden instructions past humans into AI model prompts (prompt injection via invisible text). This campaign inverts the direction: hiding content from machines (filters) while exposing it cleanly to humans. As more organizations route email through LLM-based triage and summarization, both directions of this technique will matter. Any content your SOC feeds to an AI assistant should be treated as potentially adversarial input.
Campaign Profile and Exploitation Status
| Attribute | Detail |
|---|---|
| Threat type | High-volume social engineering / financial lure phishing |
| Scale | Millions of messages (per Microsoft Security Research) |
| Technique | Unicode tag block insertion (U+E0001, U+E0020–E007F) to defeat keyword tokenization |
| Delivery | Email, rendered normally in Outlook/webmail |
| Vulnerability | None — technique abuse, no CVE assigned |
| Exploitation status | Confirmed active in the wild at scale |
| CISA KEV | Not applicable (no CVE) |
The downstream payload is conventional — credential harvesting, payment redirection, business email compromise pretexting, or malware delivery via link/attachment. The novelty is entirely in the transport-layer evasion, which means your best compensating controls are (1) mail flow inspection that normalizes or rejects tag codepoints, and (2) endpoint-side detection of post-click execution, since some percentage of these lures will always get through.
Detection & Response
The highest-fidelity, lowest-noise detection is matching the tag codepoint range itself in message content — legitimate business email essentially never contains U+E0001 or U+E0020–E007F. On the endpoint, hunt for the execution behavior that follows a successful lure click, since content inspection alone will lag the variants.
---
title: Invisible Unicode Tag Characters in Process Command Line
description: Detects Unicode tag block characters (U+E0001, U+E0020-U+E007F) in process command lines or file names, consistent with phishing-delivered artifacts carrying obfuscated names from the invisible Unicode social engineering campaign. These codepoints are non-rendering and have near-zero legitimate presence on endpoints.
references:
- https://thehackernews.com/2026/09/phishing-campaign-sends-millions-of.html
- https://attack.mitre.org/techniques/T1027/
- https://attack.mitre.org/techniques/T1566/001/
author: Security Arsenal
date: 2026/09/15
id: 3b7e2a41-9c6d-4f18-b2a5-7d4c8e1f9032
status: experimental
tags:
- attack.defense_evasion
- attack.t1027
- attack.initial_access
- attack.t1566.001
logsource:
category: process_creation
product: windows
detection:
selection:
CommandLine|re: '[\u{E0001}\u{E0020}-\u{E007F}]'
falsepositives:
- Extremely rare; possible in copy-pasted AI model research content or internationalization testing
level: high
---
title: Office Application Spawning Script Engine or Shell After Lure Execution
description: Detects Microsoft Office or email client processes spawning script interpreters, shells, or LOLBins — the common post-click execution chain following a successful financial lure phish. Tuned to exclude known benign Office add-in behavior via unsigned or user-profile child process paths.
references:
- https://thehackernews.com/2026/09/phishing-campaign-sends-millions-of.html
- https://attack.mitre.org/techniques/T1204/002/
- https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/09/15
id: 8f1c5d92-4a7b-4e63-9d01-2b6f3a8c5e47
status: experimental
tags:
- attack.execution
- attack.t1204.002
- attack.t1059
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\winword.exe'
- '\excel.exe'
- '\powerpnt.exe'
- '\outlook.exe'
- '\msedge.exe'
- '\chrome.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\curl.exe'
- '\bitsadmin.exe'
- '\certutil.exe'
selection_path:
Image|contains:
- '\Users\'
- '\Temp\'
- '\AppData\'
- '\ProgramData\'
condition: all of selection_*
falsepositives:
- Legitimate Office add-ins and line-of-business integrations spawning scripts (typically signed and in Program Files — the user-profile path filter excludes most)
- Browser-launched enterprise SSO tooling; baseline and exclude per environment
level: high
// Hunt 1: Inbound email containing invisible Unicode tag characters in the subject
// Tag block: U+E0001 and U+E0020-U+E007F — near-zero legitimate use in business mail
EmailEvents
| where TimeGenerated > ago(14d)
| where EmailDirection == "Inbound"
| where Subject matches regex @"[\x{E0001}\x{E0020}-\x{E007F}]"
| project TimeGenerated, SenderFromAddress, SenderFromDomain, RecipientEmailAddress,
Subject, NetworkMessageId, ThreatTypes, DetectionMethods, EmailAction
| order by TimeGenerated desc
;
// Hunt 2: Financial-lure keyword mail from first-time senders (catches variants
// where tag chars appear only in the body, not the subject)
let FinancialLures = dynamic(["funding","invoice","payment","wire transfer","remittance","purchase order","ach","quote","statement"]);
let KnownSenders = EmailEvents
| where TimeGenerated > ago(90d) and TimeGenerated < ago(14d)
| where EmailDirection == "Inbound"
| summarize by SenderFromAddress;
EmailEvents
| where TimeGenerated > ago(14d)
| where EmailDirection == "Inbound"
| where Subject has_any (FinancialLures)
| where SenderFromAddress !in (KnownSenders)
| summarize MessageCount = count(), Recipients = dcount(RecipientEmailAddress),
SampleSubjects = make_set(Subject, 5) by SenderFromAddress, SenderFromDomain
| where MessageCount > 5
| order by MessageCount desc
;
// Hunt 3: Post-click execution — Office/browser spawning script engines from user paths
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFileName in~ ("winword.exe","excel.exe","powerpnt.exe","outlook.exe","msedge.exe","chrome.exe")
| where FileName in~ ("cmd.exe","powershell.exe","pwsh.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","curl.exe","bitsadmin.exe")
| where FolderPath has_any (@"\Users\", @"\Temp\", @"\AppData\", @"\ProgramData\")
| project TimeGenerated, DeviceName, AccountName, InitiatingProcessFileName,
FileName, ProcessCommandLine, FolderPath, SHA256
| order by TimeGenerated desc
-- Hunt for email-delivered lure artifacts with Mark-of-the-Web in user-writable locations
-- Targets file types common in financial-lure phishing: .url, .html, .svg, .lnk, archives, disk images
LET suspicious_ext = '(?i)\.(url|html|htm|svg|lnk|iso|img|zip|js|vbs)$'
SELECT FullPath,
Size,
Mtime,
Btime,
read_file(filename=FullPath + ':Zone.Identifier', length=512) AS MOTW
FROM glob(globs=[
'C:/Users/*/Downloads/*',
'C:/Users/*/Desktop/*',
'C:/Users/*/AppData/Local/Temp/*',
'C:/Users/*/AppData/Local/Microsoft/Windows/INetCache/Content.Outlook/**/*'
])
WHERE FullPath =~ suspicious_ext
AND Mtime > ago(7 * 24 * 3600)
AND MOTW =~ 'ZoneId=3'
ORDER BY Mtime DESC
# Block invisible Unicode tag characters at the Exchange Online transport layer.
# Requires: ExchangeOnlineManagement module and Exchange Administrator (or Transport Rules) role.
# The pattern is built from codepoints programmatically so editors/clipboard cannot strip the non-printing characters.
Connect-ExchangeOnline
# Tag block: U+E0001 (LANGUAGE TAG) and U+E0020-U+E007F (TAG characters)
$tagPattern = "[{0}{1}-{2}]" -f [char]0xE0001, [char]0xE0020, [char]0xE007F
# Sanity check: the pattern must match a split lure word and must NOT match normal text
"fu$([char]0xE0020)nding" -match $tagPattern # Expected: True
"normal funding request" -match $tagPattern # Expected: False
# Deploy in Audit mode first, review for 48-72 hours, then flip to Enforce
New-TransportRule -Name "SEC-ARSN-Quarantine-Invisible-Unicode-Tags" `
-SubjectOrBodyMatchesPatterns $tagPattern `
-Quarantine $true `
-Mode Audit `
-Priority 0 `
-Comments "Quarantines messages containing Unicode tag block characters used to split lure keywords past filters. Ref: Microsoft Security Research invisible Unicode campaign, Sept 2026."
# Verify rule creation and inspect matched message counts during the audit window
Get-TransportRule -Identity "SEC-ARSN-Quarantine-Invisible-Unicode-Tags" | Format-List Name, State, Mode, Priority, SubjectOrBodyMatchesPatterns
Get-TransportRuleAction -Name "SEC-ARSN-Quarantine-Invisible-Unicode-Tags" | Format-List
# After audit validation, enforce:
# Set-TransportRule -Identity "SEC-ARSN-Quarantine-Invisible-Unicode-Tags" -Mode Enforce
# Hunting note: message trace does not expose body content. For retro hunting across delivered mail,
# use Defender for Office 365 Explorer (Threat Explorer) filtered on the Subject regex from the KQL section,
# or export via Graph API and scan body content for the tag range client-side.
Remediation
There is no vendor patch because there is no product flaw — remediation is a controls-engineering exercise. Prioritize the following:
-
Deploy the transport-layer block immediately. Use the Exchange Online transport rule above (or the equivalent in your SEG — Proofpoint, Mimecast, and Abnormal all support custom content regex dictionaries) to quarantine any message containing U+E0001 or U+E0020–E007F in subject or body. The false-positive surface in legitimate business email is effectively zero. Audit-mode first for 48–72 hours, then enforce.
-
Normalize before you inspect. If your detection pipeline does any custom content analytics, add a Unicode normalization step that strips or replaces non-rendering codepoints (tag block, zero-width space U+200B, zero-width joiners, soft hyphens) before keyword/token matching. This closes the entire evasion family, not just this campaign.
-
Tighten Defender for Office 365. Verify Safe Links and Safe Attachments are enabled for all inbound mail, enable Zero-Hour Auto Purge (ZAP) for phishing so Microsoft can pull reclassified messages post-delivery, and confirm first-contact safety tips are on — these lures lean heavily on first-time sender infrastructure.
-
Retro-hunt 14–30 days. Run Hunt 1 and Hunt 2 from the KQL section against your mail telemetry, and the VQL artifact across endpoints. Any hit from Hunt 1 is a near-certain malicious message that your filters passed; pull the NetworkMessageId and investigate recipient click behavior via UrlClickEvents.
-
Instrument the post-click path. Since content-layer controls will always lag evasion variants, your durable defense is detecting what happens after the click: Office/browser-spawned script engines (Sigma rule two), MOTW-flagged lure artifacts, and anomalous authentication following credential-lure visits.
-
Treat AI-adjacent pipelines as attack surface. If email content is summarized, triaged, or auto-responded to by any LLM-based tooling, sanitize invisible codepoints before ingestion. The same tag block that defeats your keyword filter can carry hidden instructions into your model.
-
Brief users on the specific pretext. Financial lures — funding, invoices, wire transfers, purchase orders — from unsolicited senders should route to your phishing report button, and reported messages should be auto-scanned for the tag codepoint range before analyst triage.
Conclusion
This campaign is a reminder that filter evasion doesn't require exploitation — it requires asymmetry between what machines parse and what humans read. The invisible Unicode tag block is cheap for attackers and nearly free for defenders to detect once you know to look. Quarantine the codepoint range, normalize your inspection pipeline, and hunt the execution chain that follows a successful lure. The organizations that get hurt here will be the ones whose entire anti-phishing posture is a keyword list.
Related Resources
Security Arsenal Red Team Services AlertMonitor Platform Book a SOC Assessment pen-testing Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.