Phillip Roberts | 5 August 2026
Over the past two weeks, Fortian has observed a significant increase in campaigns abusing legitimate application hosting platforms - Vercel, Cloudflare Workers, and Netlify - to stage credential harvesting pages and malware loaders. The platforms themselves aren't compromised. Attackers are simply deploying malicious content using the same free-tier accounts your developers might use. A common theme between these campaigns was that they are all distributed via phishing emails that abuse tax-themed lures.
This works because these platforms serve content from trusted, clean-reputation domains (vercel.app, workers.dev, netlify.app) that bypass URL reputation filters and domain block lists.
Here's what we found across three distinct campaigns in July:
Common thread: Every campaign uses tax-season lures, abuses vercel.app subdomains for hosting, and delivers either credential harvesting or RMM tool deployment. The operational objectives differ but the infrastructure playbook is identical.
The shift here isn't the phishing technique - it's the infrastructure choice. These platforms offer instant deployment, auto-TLS, trusted domains, and no identity verification on free tiers. Attackers are treating them as disposable staging infrastructure that inherits the reputation of the platform itself. The tool of choice in most campaigns are legitimate RMM tools that will not be flagged by your EDR. Detection relies on custom, behavioural-based analytics rules and threat hunting.
We already detect and action these across our managed environments. If your organisation relies on URL reputation alone to filter threats or EDR tools to block the payloads, this is the gap.
// Detect clicks to application hosting platforms
CommonSecurityLog
| where TimeGenerated >= ago(90d)
| where RequestURL has_any ("vercel.app", "workers.dev", "netlify.app", "pages.dev")
| where not(RequestURL has_any ("your-legitimate-apps-here")) // Tune for your environment
| summarize count(), dcount(SourceUserName), make_set(SourceUserName) by DestinationHostName
| order by dcount_SourceUserName desc
// Hunt for RMM tool downloads from unusual initiating processes
DeviceFileEvents
| where TimeGenerated >= ago(90d)
| where FileName has_any ("sc.msi", "LogMeInResolve", "ScreenConnect", "ConnectWise")
| where InitiatingProcessFileName has_any ("cmd.exe", "wscript.exe", "cscript.exe", "powershell.exe", "curl.exe")
| project TimeGenerated, DeviceName, FileName, FolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine
// Hunt for URL click events
UrlClickEvents
| where TimeGenerated >= ago(90d)
| where Url has_any("vercel.app", "workers.dev", "netlify.app", "pages.dev")
| project-reorder TimeGenerated, AccountUpn, Url, UrlChain
Phishing infrastructure:
ups-murex.vercel[.]appupss-vert.vercel[.]app/doc/sc.msistatementaccountshared09334.vercel[.]appstatements-summary0172206194.vercel[.]app - ATO fake PDF / JS loadersummary-statement-000280154492.vercel[.]appfileshraedocumentsharedrev.vercel[.]appsunlighterssummers.vercel[.]appFile hash:
b64572b3df55930638db3226d9213d5e55c7165d28ae75782cf72967c2aeffa0Sender addresses:
admin@learnstax[.]comsupport@smartdebtadvisors[.]co[.]zasale@quickemail15[.]orgRequest a consultation with one of our security specialists today or sign up to receive our monthly newsletter via email.
Get in touch Sign up!