Analytic rule catalog
UniFi Site Manager Firmware drift hotspots
Back
| Id | 1d767977-460a-29c3-06f7-799a91a80daf |
| Rulename | UniFi Site Manager: Firmware drift hotspots |
| Description | Devices behind on firmware updates - ranked by product line and model. Identifies models where firmware drift is concentrated, indicating either a vendor-side delay or operational neglect. Each unpatched device is a CVE attack surface. |
| Tactics | Reconnaissance |
| Techniques | T1595 |
| Required data connectors | UniFiSiteManagerConnectorDefinition |
| Kind | HuntingQuery |
| Source Uri | https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/UniFi%20Site%20Manager%20%28CCF%29/Hunting%20Queries/UniFiCloudFirmwareDriftHotspots.yaml |
| Version | 1.0.0 |
| Arm template | 1d767977-460a-29c3-06f7-799a91a80daf.json |
Unifi_SiteManager_Devices_CL
| where TimeGenerated > ago(2h)
| summarize arg_max(TimeGenerated, *) by Id
| where FirmwareStatus in ("UpdateAvailable", "updatePending")
| summarize Devices=count(),
SampleDevice = take_any(Name),
['Pending updates'] = countif(FirmwareStatus =~ "updatePending"),
['Updates available'] = countif(FirmwareStatus =~ "UpdateAvailable")
by Model = Model, ['Product line'] = ProductLine
| order by Devices desc
id: 1d767977-460a-29c3-06f7-799a91a80daf
requiredDataConnectors:
- connectorId: UniFiSiteManagerConnectorDefinition
dataTypes:
- Unifi_SiteManager_Devices_CL
description: |
Devices behind on firmware updates - ranked by product line and model. Identifies models where firmware drift is concentrated, indicating either a vendor-side delay or operational neglect. Each unpatched device is a CVE attack surface.
name: 'UniFi Site Manager: Firmware drift hotspots'
version: 1.0.0
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/UniFi%20Site%20Manager%20%28CCF%29/Hunting%20Queries/UniFiCloudFirmwareDriftHotspots.yaml
entityMappings:
- fieldMappings:
- identifier: HostName
columnName: SampleDevice
entityType: Host
tactics:
- Reconnaissance
kind: HuntingQuery
relevantTechniques:
- T1595
query: |
Unifi_SiteManager_Devices_CL
| where TimeGenerated > ago(2h)
| summarize arg_max(TimeGenerated, *) by Id
| where FirmwareStatus in ("UpdateAvailable", "updatePending")
| summarize Devices=count(),
SampleDevice = take_any(Name),
['Pending updates'] = countif(FirmwareStatus =~ "updatePending"),
['Updates available'] = countif(FirmwareStatus =~ "UpdateAvailable")
by Model = Model, ['Product line'] = ProductLine
| order by Devices desc
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspace": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2024-01-01-preview",
"id": "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/1d767977-460a-29c3-06f7-799a91a80daf')]",
"kind": "Huntingquery",
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/1d767977-460a-29c3-06f7-799a91a80daf')]",
"properties": {
"alertRuleTemplateName": "1d767977-460a-29c3-06f7-799a91a80daf",
"customDetails": null,
"description": "Devices behind on firmware updates - ranked by product line and model. Identifies models where firmware drift is concentrated, indicating either a vendor-side delay or operational neglect. Each unpatched device is a CVE attack surface.\n",
"displayName": "UniFi Site Manager: Firmware drift hotspots",
"enabled": true,
"entityMappings": [
{
"entityType": "Host",
"fieldMappings": [
{
"columnName": "SampleDevice",
"identifier": "HostName"
}
]
}
],
"OriginalUri": "https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/UniFi%20Site%20Manager%20%28CCF%29/Hunting%20Queries/UniFiCloudFirmwareDriftHotspots.yaml",
"query": "Unifi_SiteManager_Devices_CL\n| where TimeGenerated > ago(2h)\n| summarize arg_max(TimeGenerated, *) by Id\n| where FirmwareStatus in (\"UpdateAvailable\", \"updatePending\")\n| summarize Devices=count(),\n SampleDevice = take_any(Name),\n ['Pending updates'] = countif(FirmwareStatus =~ \"updatePending\"),\n ['Updates available'] = countif(FirmwareStatus =~ \"UpdateAvailable\")\n by Model = Model, ['Product line'] = ProductLine\n| order by Devices desc\n",
"subTechniques": [],
"suppressionDuration": "PT1H",
"suppressionEnabled": false,
"tactics": [
"Reconnaissance"
],
"techniques": [
"T1595"
],
"templateVersion": "1.0.0"
},
"type": "Microsoft.OperationalInsights/workspaces/providers/alertRules"
}
]
}