Repository navigation
feat(alerts): SSID impostor detection from existing neighbor scans - #1393
Merged
Merged
Conversation
…1358) An unknown BSSID advertising a fleet SSID is the classic evil-twin signature. No new collection needed: passive neighbor scans already land in wifi_scans, and fleet BSSIDs/SSIDs already come from the agent registry (#1087) plus SSH-polled radios. - New AgentRegistry.LocalSsids() (OwnBssids + dawn/usteer local APs). - Live.EvalSsidImpostors(): one bounded query over the last 6h of wifi_scans. A candidate confirms only with >=2 real scans (distinct timestamps, so a frozen re-pushed payload does not count) separated by >=20 min dwell, and auto-resolves after 2h unseen. Alert id is stable per BSSID; tracking lives in memory on purpose - a restarted server re-alerts if the impostor is still around (security over re-notice). - Category clients, not signal: signal defaults to LevelNone and a security alert must not be invisible on stock config. - Wired after SaveScan in the agent ingest handler (the exact moment the evidence changes); i18n es/en (title, description with vars, hint). Tests: single sighting does not alert, dwell confirms once, own/foreign BSSID ignored, frozen payload does not confirm, auto-resolve, LocalSsids composition. Closes #1358
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Request (#1358)
NetPulse already collects neighbor scans per radio (SSID + BSSID + channel + signal) and already knows its own fleet BSSIDs. That is enough for a high-value security alert with zero new collection: if a scanned BSSID advertises an SSID that belongs to the fleet but is not one of our radios, something is impersonating the network (classic evil-twin signature).
Changes
AgentRegistry.LocalSsids(): fleet SSIDs from agent OwnBssids plus dawn/usteer local APs. The approved list derives from the fleet itself - zero-config, nothing to type by hand.Live.EvalSsidImpostors(): one bounded query over the last 6h ofwifi_scans. A candidate BSSID confirms only with >=2 real scans (distinct timestamps, so a frozen re-pushed payload does not count) separated by >=20 min dwell, and the alert auto-resolves after 2h unseen. Stable alert ID per BSSID; in-memory tracking on purpose: a restarted server re-alerts if the impostor is still around (security beats re-notice).clients, notsignal: signal defaults toLevelNoneand a security alert must not be invisible on stock config.SaveScanin the agent ingest handler (the exact moment the evidence changes); i18n es/en (title, description with vars, hint).Verification
Closes #1358