EXPLORE
← Back to Explore
crowdstrike_cqlHunting

CVE-2025-59287 vulnerable WSUS servers identification

This query identifies WSUS servers that have the wsusservice enabled and that are vulnerable to CVE-2025-59287 This CQL query helps to identify WSUS servers that are vulnerable to CVE-2025-59287 Reference: https://www.reddit.com/r/crowdstrike/comments/1ohdzpm/comment/nlp7men/

Detection Query

// Make table that contains Agent ID values of Windows systems with WSUS service discovered
| defineTable(query={
  #repo = "base_sensor" event_platform=Win #event_simpleName="ProcessRollup2" FileName="wsusservice.exe"
  | groupBy([aid], function=[]
  ) 
}, include=[aid], name="WsusServiceRunning", start=7d)

// Get OsVersionInfo events; sent by sensor every 24-hours or at sensor start or update
| #event_simpleName=OsVersionInfo event_platform=Win 
 
// Aggregate results to get latest information per Agent ID value
| groupBy([aid], function=([selectLast([@timestamp, ComputerName, event_platform, ProductName, LocalAddressIP4])]), limit=max)
 
// Merge details from AID Master
| match(file="aid_master_main.csv", field=[aid], include=[ProductType])

// Restrict above results to servers or domain controllers
| in(field="ProductType", values=[2,3])

// Evaluate Windows build numbers
| case {
    event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=17763 SubBuildNumber<7922 | Status:="NEEDS PATCH";
    event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=20348 SubBuildNumber<4297 | Status:="NEEDS PATCH";
    event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=26100 SubBuildNumber<6905 | Status:="NEEDS PATCH";
    event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=25398 SubBuildNumber<1916 | Status:="NEEDS PATCH";
    event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=26100 SubBuildNumber<6905 | Status:="NEEDS PATCH";
    event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=14393 SubBuildNumber<8524 | Status:="NEEDS PATCH";
    event_platform=Win MajorVersion=6 MinorVersion=2 BuildNumber=9200 SubBuildNumber<25728  | Status:="NEEDS PATCH";
    event_platform=Win MajorVersion=6 MinorVersion=3 BuildNumber=9600 SubBuildNumber<22826  | Status:="NEEDS PATCH";
    *                                                                                       | Status:="OK";
}
 
// Check to see if WSUS service was discovered on host
| case {
  match(file="WsusServiceRunning", field=aid, column=aid) | WsusService := "YES";
  *                                                       | WsusService := "NO";
}

// Oragnize table
| table([@timestamp, aid, ComputerName, WsusService, Status, ProductName, LocalAddressIP4], sortby=Status, order=asc, limit=50000)

// Make ProductType field human readable
| $falcon/helper:enrich(field=ProductType)

Author

Crowdstrike

Data Sources

EndpointOther

Platforms

windows

Tags

HuntingMonitoringcs_module:Insight
Raw Content
# --- Query Metadata ---
# Human-readable name for the query. Will be displayed as the title.
name: CVE-2025-59287 vulnerable WSUS servers identification

# Description of what the query does and its purpose.
description: This query identifies WSUS servers that have the wsusservice enabled and that are vulnerable to CVE-2025-59287

# The author or team that created the query.
author: Crowdstrike

# The required log sources to run this query successfully in Next-Gen SIEM.
# This will be displayed in the UI to inform the user.
log_sources:
  - Endpoint
  - Other

# The CrowdStrike modules required to run this query.
cs_required_modules:
  - Insight

# Tags for filtering and categorization.
# Include relevant techniques, tactics, or platforms.
tags:
  - Hunting
  - Monitoring

# --- Query Content ---
# The actual CrowdStrike Query Language (CQL) code.
# Using the YAML block scalar `|` allows for multi-line strings.
cql: |
  // Make table that contains Agent ID values of Windows systems with WSUS service discovered
  | defineTable(query={
    #repo = "base_sensor" event_platform=Win #event_simpleName="ProcessRollup2" FileName="wsusservice.exe"
    | groupBy([aid], function=[]
    ) 
  }, include=[aid], name="WsusServiceRunning", start=7d)
  
  // Get OsVersionInfo events; sent by sensor every 24-hours or at sensor start or update
  | #event_simpleName=OsVersionInfo event_platform=Win 
   
  // Aggregate results to get latest information per Agent ID value
  | groupBy([aid], function=([selectLast([@timestamp, ComputerName, event_platform, ProductName, LocalAddressIP4])]), limit=max)
   
  // Merge details from AID Master
  | match(file="aid_master_main.csv", field=[aid], include=[ProductType])
  
  // Restrict above results to servers or domain controllers
  | in(field="ProductType", values=[2,3])
  
  // Evaluate Windows build numbers
  | case {
      event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=17763 SubBuildNumber<7922 | Status:="NEEDS PATCH";
      event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=20348 SubBuildNumber<4297 | Status:="NEEDS PATCH";
      event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=26100 SubBuildNumber<6905 | Status:="NEEDS PATCH";
      event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=25398 SubBuildNumber<1916 | Status:="NEEDS PATCH";
      event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=26100 SubBuildNumber<6905 | Status:="NEEDS PATCH";
      event_platform=Win MajorVersion=10 MinorVersion=0 BuildNumber=14393 SubBuildNumber<8524 | Status:="NEEDS PATCH";
      event_platform=Win MajorVersion=6 MinorVersion=2 BuildNumber=9200 SubBuildNumber<25728  | Status:="NEEDS PATCH";
      event_platform=Win MajorVersion=6 MinorVersion=3 BuildNumber=9600 SubBuildNumber<22826  | Status:="NEEDS PATCH";
      *                                                                                       | Status:="OK";
  }
   
  // Check to see if WSUS service was discovered on host
  | case {
    match(file="WsusServiceRunning", field=aid, column=aid) | WsusService := "YES";
    *                                                       | WsusService := "NO";
  }
  
  // Oragnize table
  | table([@timestamp, aid, ComputerName, WsusService, Status, ProductName, LocalAddressIP4], sortby=Status, order=asc, limit=50000)
  
  // Make ProductType field human readable
  | $falcon/helper:enrich(field=ProductType)

# Explanation of the query.
# Using the YAML block scalar `|` allows for multi-line strings.
# Uses markdown for formatting on the webpage.
explanation: |
  This CQL query helps to identify WSUS servers that are vulnerable to CVE-2025-59287
  
  Reference: https://www.reddit.com/r/crowdstrike/comments/1ohdzpm/comment/nlp7men/