Detection rules › Splunk
F5 BIG-IP iControl REST Vulnerability CVE-2022-1388
The following analytic detects attempts to exploit the F5 BIG-IP iControl REST API vulnerability (CVE-2022-1388) for unauthenticated remote code execution. It identifies suspicious URI paths and POST HTTP methods, along with specific request headers containing potential commands in the utilcmdargs field and a random base64 encoded value in the X-F5-Auth-Token field. This activity is significant as it targets a critical vulnerability that can allow attackers to execute arbitrary commands on the affected system. If confirmed malicious, this could lead to full system compromise and unauthorized access to sensitive data.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Initial Access | T1133 External Remote Services, T1190 Exploit Public-Facing Application |
| Persistence | T1133 External Remote Services |
Rule body splunk
name: F5 BIG-IP iControl REST Vulnerability CVE-2022-1388
id: bb1c2c30-107a-4e56-a4b9-1f7022867bfe
version: 10
creation_date: '2022-05-10'
modification_date: '2026-05-13'
author: Michael Haag, Splunk
status: production
type: TTP
description: |
The following analytic detects attempts to exploit the F5 BIG-IP iControl REST API vulnerability (CVE-2022-1388) for unauthenticated remote code execution.
It identifies suspicious URI paths and POST HTTP methods, along with specific request headers containing potential commands in the `utilcmdargs` field and a random base64 encoded value in the `X-F5-Auth-Token` field.
This activity is significant as it targets a critical vulnerability that can allow attackers to execute arbitrary commands on the affected system.
If confirmed malicious, this could lead to full system compromise and unauthorized access to sensitive data.
data_source:
- Palo Alto Network Threat
search: |-
| tstats `security_content_summariesonly`
count min(_time) as firstTime
max(_time) as lastTime
FROM datamodel=Web WHERE
Web.url="*/mgmt/tm/util/bash*"
Web.http_method="POST"
BY Web.http_user_agent Web.http_method
Web.url Web.url_length
Web.src Web.dest
| `drop_dm_object_name("Web")`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `f5_big_ip_icontrol_rest_vulnerability_cve_2022_1388_filter`
how_to_implement: |
To successfully implement this search, you need to be ingesting web or proxy logs, or ensure it is being filled by a proxy like device, into the Web Datamodel. For additional filtering, allow list private IP space or restrict by known good.
known_false_positives: |
False positives may be present if the activity is blocked or was not successful. Filter known vulnerability scanners. Filter as needed.
references:
- https://github.com/dk4trin/templates-nuclei/blob/main/CVE-2022-1388.yaml
- https://www.randori.com/blog/vulnerability-analysis-cve-2022-1388/
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1388
- https://twitter.com/da_667/status/1523770267327250438?s=20&t=-JnB_aNWuJFsmcOmxGUWLQ
- https://github.com/horizon3ai/CVE-2022-1388/blob/main/CVE-2022-1388.py
drilldown_searches:
- name: View the detection results for - "$dest$"
search: '%original_detection_search% | search dest = "$dest$"'
earliest_offset: $info_min_time$
latest_offset: $info_max_time$
- name: View risk events for the last 7 days for - "$dest$"
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$") | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
earliest_offset: 7d
latest_offset: "0"
finding:
title: An attempt to exploit CVE-2022-1388 against an F5 appliance $dest$ has occurred.
entity:
field: dest
type: system
score: 50
analytic_story:
- F5 BIG-IP Vulnerability CVE-2022-1388
- CISA AA24-241A
asset_type: Web Server
cve:
- CVE-2022-1388
mitre_attack_id:
- T1190
- T1133
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: network
security_domain: network
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/f5/f5.log
source: not_applicable
sourcetype: pan:threat
test_type: unit
Stages and Predicates
Stage 1: tstats
| tstats `security_content_summariesonly`
count min(_time) as firstTime
max(_time) as lastTime
FROM datamodel=Web WHERE
Web.url="*/mgmt/tm/util/bash*"
Web.http_method="POST"
BY Web.http_user_agent Web.http_method
Web.url Web.url_length
Web.src Web.dest
Stage 2: search
| `drop_dm_object_name("Web")`
Stage 3: search
| `security_content_ctime(firstTime)`
Stage 4: search
| `security_content_ctime(lastTime)`
Stage 5: search
| `f5_big_ip_icontrol_rest_vulnerability_cve_2022_1388_filter`
Indicators
Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.
| Field | Kind | Values |
|---|---|---|
Web.http_method | eq |
|
Web.url | eq |
|