Detection: Splunk DOS via printf search function

Description

The following analytic identifies the use of the printf SPL function in Splunk searches, which can be exploited for a denial of service (DoS) attack. It detects this activity by querying the audit_searches data source for specific patterns involving makeresults, eval, fieldformat, and printf functions, excluding searches by the splunk_system_user. This activity is significant because it targets a known vulnerability in Splunk Enterprise versions lower than 8.1.14, 8.2.12, 9.0.6, and 9.1.1, potentially disrupting the availability of the Splunk instance. If confirmed malicious, this could lead to service outages and impact the monitoring and logging capabilities of the organization.

1`audit_searches` "*makeresults * eval * fieldformat *printf*" user!="splunk_system_user" search!="*audit_searches*" 
2| stats count by user splunk_server host search 
3| convert ctime(*time) 
4|`splunk_dos_via_printf_search_function_filter`

Data Source

Name Platform Sourcetype Source Supported App
Splunk Splunk icon Splunk 'splunkd_ui_access' 'splunkd_ui_access.log' N/A

Macros Used

Name Value
audit_searches index=_audit sourcetype=audittrail action=search
splunk_dos_via_printf_search_function_filter search *
splunk_dos_via_printf_search_function_filter is an empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.

Annotations

- MITRE ATT&CK
+ Kill Chain Phases
+ NIST
+ CIS
- Threat Actors
ID Technique Tactic
T1499.004 Application or System Exploitation Impact
KillChainPhase.ACTIONS_ON_OBJECTIVES
NistCategory.DE_AE
Cis18Value.CIS_10

Default Configuration

This detection is configured by default in Splunk Enterprise Security to run with the following settings:

Setting Value
Disabled true
Cron Schedule 0 * * * *
Earliest Time -70m@m
Latest Time -10m@m
Schedule Window auto
Creates Risk Event False
This configuration file applies to all detections of type hunting.

Implementation

This search requires the ability to search internal indexes.

Known False Positives

This search may produces false positives, analyst most focuse in the use of printf conversion function of eval to craft an expression that splunkd cannot interpret correctly causing it to crash.

Associated Analytic Story

Risk Based Analytics (RBA)

Risk Message Risk Score Impact Confidence
Possible denial of service attack against $host$ 100 100 100
The Risk Score is calculated by the following formula: Risk Score = (Impact * Confidence/100). Initial Confidence and Impact is set by the analytic author.

References

Detection Testing

Test Type Status Dataset Source Sourcetype
Validation Passing N/A N/A N/A
Unit Passing Dataset audittrail audittrail
Integration ✅ Passing Dataset audittrail audittrail

Replay any dataset to Splunk Enterprise by using our replay.py tool or the UI. Alternatively you can replay a dataset into a Splunk Attack Range


Source: GitHub | Version: 2