↳ GitHub sourceAnalytics ruleMedium
Tailscale Premium: Unexpected exit-node egress
Description
Identifies when a node sends traffic via an exit node not used in the prior 7-day baseline. First-seen exit destinations from a node may indicate routing-policy drift, data exfiltration, or compromise.
- Rule type
- Scheduled
- Version
- 1.0.0
- Declared status
- Available
- Query frequency
- 1h
- Query period
- 1h
- Trigger
- gt 0
Declared MITRE coverage
Declared sources
Metadata from the source file. No dependencies inferred from KQL.
Connectors
Data types
KQL query
Original query, unchanged.
let baseline = 7d;
let recent = 1h;
let recentEgress =
Tailscale_Network_CL
| where TimeGenerated > ago(recent)
| where HasExitTraffic
| mv-expand t = ExitTraffic
| extend Src = tostring(t.src), ExitDst = tostring(t.dst), Bytes = tolong(t.txBytes) + tolong(t.rxBytes)
| summarize FirstSeen = min(TimeGenerated), TotalBytes = sum(Bytes) by NodeId, SrcNodeName, SrcUser, SrcOs, Src, ExitDst;
let baselineEgress =
Tailscale_Network_CL
| where TimeGenerated between (ago(baseline + recent) .. ago(recent))
| where HasExitTraffic
| mv-expand t = ExitTraffic
| extend Src = tostring(t.src), ExitDst = tostring(t.dst)
| distinct NodeId, Src, ExitDst;
recentEgress
| join kind=leftanti baselineEgress on NodeId, Src, ExitDst
| extend TotalMB = round(TotalBytes / 1024.0 / 1024.0, 2)
Declared entities
Related content
Links established from declared identifiers and solution manifests.
Source provenance
GitHubDisplayed values come from files in Azure/Azure-Sentinel. They describe the published template, not your workspace configuration.
- Commit
9800e51↗- Source identifier
c1d2e3f4-1a2b-3c4d-5e6f-7a8b9c0d1e2f
GSTEP / CATALOG TRACKING
Added to catalog : 16 Sept 2026 · 05:49 UTC
Last change observed : 16 Sept 2026 · 05:49 UTC