FortiSIEM Rules

SQL Server Excessive Blocking

Rule ID

PH_Rule_DB_6

Default Status

Enabled

Description

Detects a particular SQL Server process/user blocked for more than 2 sec

Severity

7

Category

Performance

MITRE ATT&CK® Tactics

Database

MITRE ATT&CK® Techniques

No Technique Specified

Impacts

Application

Data Source

MS SQL Server

Detection

Correlation

Remediation Guidance

Identify the root cause of the performance issue and allocate more resources if needed.

Time Window

If the following pattern or patterns match an ingested event within the given time window in seconds, trigger an incident.

600 seconds

Trigger Conditions

If the following defined pattern/s occur within a 600 second time window.

ExcessBlock

SubPattern Definitions

SubPattern Name: ExcessBlock

This is the named definition of the event query, this is important if multiple subpatterns are defined to distinguish them.

SubPattern Query

This is the query logic that matches incoming events

eventType = "PH_DEV_MON_PERF_MSSQL_BLOCKBY_INFO"

Group by Attributes

This defines how matching events are aggregated, only events with the same matching attribute values are grouped into one unique incident ID

hostName,instanceName,blockingLoginUser,blockingCommand,blockingDbName,blockedLoginUser,blockedCommand,blockedProcessName

Aggregate Constraint

This is most typically a numerical constraint that defines when the rule should trigger an incident

COUNT (*) >= 2 AND AVG(blockedDuration) > 2000

Incident Attribute Mapping

This section defines which fields in matching raw events should be mapped to the incident attributes in the resulting incident.

The available raw event attributes to map are limited to the group by attributes and the aggregate event constraint fields for each subpattern

 hostName = ExcessBlock.hostName,
 instanceName = ExcessBlock.instanceName,
 blockingLoginUser = ExcessBlock.blockingLoginUser,
 blockingCommand = ExcessBlock.blockingCommand,
 blockedLoginUser = ExcessBlock.blockedLoginUser,
 blockedCommand = ExcessBlock.blockedCommand,
 blockedDuration = ExcessBlock.AVG(blockedDuration)