Title: The DBMS must manage excess capacity, bandwidth, or other redundancy to limit the effects of information flooding types of Denial of Service (DoS) attacks.
Vulnerability ID: V-32551
IA Controls: None
Description: In the case of application DoS attacks, care must be taken when designing the application to ensure the application makes the best use of system resources. SQL queries have the potential to consume large amounts of CPU cycles if they are not tuned for optimal performance. Web services containing complex calculations requiring large amounts of time to complete can bog down if too many requests for the service are encountered within a short period of time.
The methods employed to meet this requirement will vary depending upon the technology the application utilizes. However, a variety of technologies exist to limit, or in some cases, eliminate the effects of application related DoS attacks. Employing increased capacity and bandwidth combined with specialized application layer protection devices and service redundancy may reduce the susceptibility to some DoS attacks.
Databases are particularly susceptible to SQL related DoS attacks. Databases that do not identify log running SQL queries for review by an administrator may experience dramatic slowdowns from malicious or accidental DoS attacks related to SQL queries.
Check Text: Review DBMS configuration to determine whether DBMS settings to identify long running SQL queries and alert appropriate personnel are enabled. If DBMS does not identify long running SQL queries and alert appropriate personnel, this is a finding.
Fix Text: Configure DBMS settings to identify long running SQL queries and alert appropriate personnel.
The most common way that SQL Server is compromised during a DoS attack is by uncontrolled queries being sent that max the CPU power on the server, thus preventing the server from having resources available to to allocate more connections. There are many ways to prevent queries from getting out of control.
You can use full text index to prevent the use of wildcards in search terms.
You limited the time a connection or execution of a query can exist.
You can also limit the number of connections to the server.
As noted in this STIG, you need to be able to identify and notify appropriate personnel that there are long running queries.
This can be done using a SQL Server extended event setup with a script similar to one that Pinal Dave provides on his site.