Back
Id83b88ab5-21ca-5dd2-df91-6db4354f9360
RulenameUniFi Site Manager: Firmware Update Available
DescriptionIdentifies UniFi devices with firmware updates available. Keeping firmware patched is critical as updates often include security vulnerability fixes.
SeverityLow
TacticsInitialAccess
TechniquesT1190
Required data connectorsUniFiSiteManagerConnectorDefinition
KindScheduled
Query frequency1d
Query period1d
Trigger threshold0
Trigger operatorgt
Source Urihttps://github.com/Azure/Azure-Sentinel/blob/master/Solutions/UniFi%20Site%20Manager%20%28CCF%29/Analytic%20Rules/UniFiCloudFirmwareUpdateAvailable.yaml
Version1.0.2
Arm template83b88ab5-21ca-5dd2-df91-6db4354f9360.json
Deploy To Azure
Unifi_SiteManager_Devices_CL
| where TimeGenerated > ago(1d)
| summarize arg_max(TimeGenerated, *) by Id
| where isnotempty(UpdateAvailable)
| extend DeviceDetail = strcat(coalesce(Name, "Unnamed"), " (", Model, ") ", Version, " -> ", UpdateAvailable, " @", Ip)
| summarize
    DevicesNeedingUpdate = count(),
    DeviceList = make_list(DeviceDetail),
    Models = make_set(Model),
    ProductLines = make_set(ProductLine)
| where DevicesNeedingUpdate >= 1
| extend
    TimeGenerated = now(),
    AffectedModels = strcat_array(Models, ", "),
    AffectedProductLines = strcat_array(ProductLines, ", "),
    DeviceListString = strcat_array(DeviceList, "; ")
| extend Activity = strcat(DevicesNeedingUpdate, ' device(s) have firmware updates available: ', AffectedModels)
| project
    TimeGenerated,
    DevicesNeedingUpdate,
    AffectedModels,
    AffectedProductLines,
    Activity,
    DeviceListString
entityMappings:
- entityType: CloudApplication
  fieldMappings:
  - identifier: Name
    columnName: AffectedProductLines
name: 'UniFi Site Manager: Firmware Update Available'
kind: Scheduled
triggerOperator: gt
status: Available
subTechniques: []
queryPeriod: 1d
requiredDataConnectors:
- connectorId: UniFiSiteManagerConnectorDefinition
  dataTypes:
  - Unifi_SiteManager_Devices_CL
tactics:
- InitialAccess
query: |
  Unifi_SiteManager_Devices_CL
  | where TimeGenerated > ago(1d)
  | summarize arg_max(TimeGenerated, *) by Id
  | where isnotempty(UpdateAvailable)
  | extend DeviceDetail = strcat(coalesce(Name, "Unnamed"), " (", Model, ") ", Version, " -> ", UpdateAvailable, " @", Ip)
  | summarize
      DevicesNeedingUpdate = count(),
      DeviceList = make_list(DeviceDetail),
      Models = make_set(Model),
      ProductLines = make_set(ProductLine)
  | where DevicesNeedingUpdate >= 1
  | extend
      TimeGenerated = now(),
      AffectedModels = strcat_array(Models, ", "),
      AffectedProductLines = strcat_array(ProductLines, ", "),
      DeviceListString = strcat_array(DeviceList, "; ")
  | extend Activity = strcat(DevicesNeedingUpdate, ' device(s) have firmware updates available: ', AffectedModels)
  | project
      TimeGenerated,
      DevicesNeedingUpdate,
      AffectedModels,
      AffectedProductLines,
      Activity,
      DeviceListString
description: |
  Identifies UniFi devices with firmware updates available. Keeping firmware patched is critical as updates often include security vulnerability fixes.
severity: Low
incidentConfiguration:
  groupingConfiguration:
    lookbackDuration: P7D
    enabled: true
    reopenClosedIncident: false
    matchingMethod: AnyAlert
  createIncident: true
id: 83b88ab5-21ca-5dd2-df91-6db4354f9360
triggerThreshold: 0
queryFrequency: 1d
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/UniFi%20Site%20Manager%20%28CCF%29/Analytic%20Rules/UniFiCloudFirmwareUpdateAvailable.yaml
version: 1.0.2
relevantTechniques:
- T1190
{
  "$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/83b88ab5-21ca-5dd2-df91-6db4354f9360')]",
      "kind": "Scheduled",
      "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/83b88ab5-21ca-5dd2-df91-6db4354f9360')]",
      "properties": {
        "alertRuleTemplateName": "83b88ab5-21ca-5dd2-df91-6db4354f9360",
        "customDetails": null,
        "description": "Identifies UniFi devices with firmware updates available. Keeping firmware patched is critical as updates often include security vulnerability fixes.\n",
        "displayName": "UniFi Site Manager: Firmware Update Available",
        "enabled": true,
        "entityMappings": [
          {
            "entityType": "CloudApplication",
            "fieldMappings": [
              {
                "columnName": "AffectedProductLines",
                "identifier": "Name"
              }
            ]
          }
        ],
        "incidentConfiguration": {
          "createIncident": true,
          "groupingConfiguration": {
            "enabled": true,
            "lookbackDuration": "P7D",
            "matchingMethod": "AnyAlert",
            "reopenClosedIncident": false
          }
        },
        "OriginalUri": "https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/UniFi%20Site%20Manager%20%28CCF%29/Analytic%20Rules/UniFiCloudFirmwareUpdateAvailable.yaml",
        "query": "Unifi_SiteManager_Devices_CL\n| where TimeGenerated > ago(1d)\n| summarize arg_max(TimeGenerated, *) by Id\n| where isnotempty(UpdateAvailable)\n| extend DeviceDetail = strcat(coalesce(Name, \"Unnamed\"), \" (\", Model, \") \", Version, \" -> \", UpdateAvailable, \" @\", Ip)\n| summarize\n    DevicesNeedingUpdate = count(),\n    DeviceList = make_list(DeviceDetail),\n    Models = make_set(Model),\n    ProductLines = make_set(ProductLine)\n| where DevicesNeedingUpdate >= 1\n| extend\n    TimeGenerated = now(),\n    AffectedModels = strcat_array(Models, \", \"),\n    AffectedProductLines = strcat_array(ProductLines, \", \"),\n    DeviceListString = strcat_array(DeviceList, \"; \")\n| extend Activity = strcat(DevicesNeedingUpdate, ' device(s) have firmware updates available: ', AffectedModels)\n| project\n    TimeGenerated,\n    DevicesNeedingUpdate,\n    AffectedModels,\n    AffectedProductLines,\n    Activity,\n    DeviceListString\n",
        "queryFrequency": "P1D",
        "queryPeriod": "P1D",
        "severity": "Low",
        "status": "Available",
        "subTechniques": [],
        "suppressionDuration": "PT1H",
        "suppressionEnabled": false,
        "tactics": [
          "InitialAccess"
        ],
        "techniques": [
          "T1190"
        ],
        "templateVersion": "1.0.2",
        "triggerOperator": "GreaterThan",
        "triggerThreshold": 0
      },
      "type": "Microsoft.OperationalInsights/workspaces/providers/alertRules"
    }
  ]
}