Skip to content

Commit 3afca81

Browse files
Splunk Vuln content to Github (#4134)
* move from gitlab * moving removed from gitlab * udpating versions due to removal of whitespace * UTC is 23 * deprecate content * bump ver --------- Co-authored-by: nasbench <8741929+nasbench@users.noreply.github.com>
1 parent 395e1db commit 3afca81

93 files changed

Lines changed: 3509 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ dist/ContentPack-*.appinspect_api_results.html
1313
dist/ContentPack-*.appinspect_api_results.json
1414
atomic-red-team/
1515
external_repos/
16+
schemas/
1617

1718
# IDE
1819
.vscode/
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Splunk Authentication Token Exposure in Debug Log
2+
id: 9a67e749-d291-40dd-8376-d422e7ecf8b5
3+
version: 9
4+
creation_date: '2024-03-27'
5+
modification_date: '2026-06-24'
6+
author: Rod Soto, Chase Franklin
7+
status: production
8+
type: TTP
9+
description: |-
10+
The following analytic identifies exposed authentication tokens in debug logs within Splunk Enterprise.
11+
It leverages logs from the `splunkd` component with a DEBUG log level, specifically searching for event messages that validate tokens. This activity is significant because exposed tokens can be exploited by attackers to gain unauthorized access to the Splunk environment.
12+
If confirmed malicious, this exposure could lead to unauthorized data access, privilege escalation, and potential compromise of the entire Splunk infrastructure.
13+
Monitoring and addressing this vulnerability is crucial for maintaining the security and integrity of the Splunk deployment.
14+
data_source: []
15+
search: |-
16+
`splunkd`
17+
component=JsonWebToken
18+
log_level=DEBUG
19+
eventtype="splunkd-log"
20+
event_message="Validating token:*"
21+
| rex "Validating token: (?<token>.*)\.$"
22+
| search token!=None
23+
| stats count min(_time) as firstTime
24+
max(_time) as lastTime
25+
values(log_level) as log_level
26+
values(event_message) as event_message
27+
by index, sourcetype, host, token
28+
| `security_content_ctime(firstTime)`
29+
| `security_content_ctime(lastTime)`
30+
| `splunk_authentication_token_exposure_in_debug_log_filter`
31+
how_to_implement: Requires access to internal Splunk indexes.
32+
known_false_positives: Only applies to affected versions of Splunk Enterprise below 9.2.1, 9.1.4, and 9.0.9
33+
references:
34+
- https://advisory.splunk.com/advisories/SVD-2024-0301
35+
drilldown_searches:
36+
- name: View the detection results for $host$
37+
search: '%original_detection_search% | search host = $host$'
38+
earliest_offset: $info_min_time$
39+
latest_offset: $info_max_time$
40+
- name: View risk events for the last 7 days for $host$
41+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ($host$) starthoursago=168 endhoursago=1 | 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)`'
42+
earliest_offset: $info_min_time$
43+
latest_offset: $info_max_time$
44+
finding:
45+
title: Possible JsonWebToken exposure, please investigate affected $host$
46+
entity:
47+
field: host
48+
type: system
49+
score: 50
50+
analytic_story:
51+
- Splunk Vulnerabilities
52+
asset_type: Splunk Server
53+
cve:
54+
- CVE-2024-29945
55+
mitre_attack_id:
56+
- T1654
57+
product:
58+
- Splunk Enterprise
59+
- Splunk Cloud
60+
- Splunk Enterprise Security
61+
category: application
62+
security_domain: endpoint
63+
tests:
64+
- name: True Positive Test
65+
attack_data:
66+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1654/splunk/jsonwebtokenplaintokensvd_splunkd.log
67+
source: /opt/splunk/var/log/splunk/splunkd.log
68+
sourcetype: splunkd
69+
index: _internal
70+
test_type: unit
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
name: Splunk RCE Through Arbitrary File Write to Windows System Root
2+
id: c97e0704-d9c6-454d-89ba-1510a987bf72
3+
version: 7
4+
creation_date: '2024-10-14'
5+
modification_date: '2026-06-23'
6+
author: Rod Soto
7+
status: production
8+
type: Hunting
9+
description: In Splunk Enterprise for Windows versions below 9.3.0, 9.2.3, and 9.1.6, a low-privileged user that does not hold the “admin” or “power” Splunk roles could write a file to the Windows system root directory, which has a default location of C:\Windows\System32, when Splunk Enterprise for Windows is installed on a separate drive. Additionally, this user may be able to upload and execute code due to insecure session storage configuration.
10+
data_source:
11+
- Splunk
12+
search: |-
13+
```Each exploit attempt abuses the following endpoint. A request to the endpoint MUST occur immediately before the App Creation Message. However, this endpoint does not expose the name of the app that was created```
14+
`splunkda` status=200 uri_path="*/search/apps/local/_new"
15+
| bin _time span=1m | stats count by _time, user
16+
``` A request to this endpoint also results in an ApplicationManager event showing that a new application was created. This exposes the name and is created immediately following the initial request. We will look for these creation messages up to 60 seconds after the request to the vulnerable endpoint.```
17+
| eval earliest_app_creation_time=_time
18+
| eval latest_app_creation_time=_time+60
19+
| eval api_user=user
20+
```Search for the names of apps that were created with the time bounds above```
21+
| map maxsearches=150 search="search index=_internal earliest=$earliest_app_creation_time$ latest=$latest_app_creation_time$
22+
```Admins, or users with app creation privileges may abuse this command```
23+
(sourcetype=splunkd component=ApplicationManager event_message=\"Detected app creation:*\") OR
24+
```But the command may also be abused by users with lower privileges```
25+
(sourcetype=splunk_python user=$api_user$ type=ERROR \"requires capability\" AND (\"edit_local_apps\" OR \"admin_all_objects\"))
26+
```Create meaningful messages in the case that app creation was successful or if it failed```
27+
| strcat event_message \" - This app should be examined to ensure that it is legitimate.\" message_if_app_creation_successful
28+
| strcat event_message \"Detected failed app creation: user does not have admin_all_objects or edit_local_apps capability and the user account MUST be investigated. This may still have resulted in the upload of malicious file(s) or execution of maliciouis command(s).\" message_if_app_creation_failed
29+
| eval message=if(isnull(event_message), message_if_app_creation_failed, message_if_app_creation_successful )
30+
| eval user=\"$api_user$\""
31+
| stats count min(_time) as firstTime max(_time) as lastTime by user, message, host
32+
| `security_content_ctime(firstTime)`
33+
| `security_content_ctime(lastTime)`
34+
| `splunk_rce_through_arbitrary_file_write_to_windows_system_root_filter`
35+
how_to_implement: This search requires access to the _internal index and only applies Splunk Enterprise installations on Microsoft Windows. Apps, messages, and/or users reported by the search should be analyzed to see if they are legitimate.
36+
known_false_positives: This search may produce false positives as it is not possible to analyze the contents of an App Creation. This only applies to Splunk installations on Microsoft Windows where installation is placed on a different root directory like e or d.
37+
references:
38+
- https://advisory.splunk.com/advisories/SVD-2024-1001
39+
- https://advisory.splunk.com/advisories/SVD-2024-1003
40+
analytic_story:
41+
- Splunk Vulnerabilities
42+
asset_type: Splunk Server
43+
cve:
44+
- CVE-2024-45731
45+
- CVE-2024-45733
46+
mitre_attack_id:
47+
- T1210
48+
product:
49+
- Splunk Enterprise
50+
- Splunk Enterprise Security
51+
- Splunk Cloud
52+
category: application
53+
security_domain: endpoint
54+
tests:
55+
- name: True Positive Test SVD 1001
56+
attack_data:
57+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1210/splunk/svd-2024-1001-index_internal_sourcetype_splunkd.log
58+
sourcetype: splunkd
59+
source: D:\\Program Files\\Splunk\\var\\log\\splunk\\splunkd.log
60+
index: _internal
61+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1210/splunk/svd-2024-1001-index_internal_sourcetype_splunkd_access.log
62+
sourcetype: splunkd_access
63+
source: D:\\Program Files\\Splunk\\var\\log\\splunk\\splunkd_access.log
64+
index: _internal
65+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1210/splunk/svd-2024-1001-index_internal_sourcetype_splunk_python.log
66+
sourcetype: splunk_python
67+
source: D:\\Program Files\\Splunk\\var\\log\\splunk\\python.log
68+
index: _internal
69+
test_type: unit
70+
- name: True Positive Test SVD 1003
71+
attack_data:
72+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1210/splunk/svd-2024-1003-index_internal_sourcetype_splunkd_access.log
73+
sourcetype: splunkd_access
74+
source: C:\\Program Files\\Splunk\\var\\log\\splunk\\splunkd_access.log
75+
index: _internal
76+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1210/splunk/svd-2024-1003-index_internal_sourcetype_splunk_python.log
77+
sourcetype: splunk_python
78+
source: C:\\Program Files\\Splunk\\var\\log\\splunk\\python.log
79+
index: _internal
80+
test_type: unit
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Splunk RCE via User XSLT
2+
id: 6cb7e011-55fb-48e3-a98d-164fa854e37e
3+
version: 7
4+
creation_date: '2023-11-22'
5+
modification_date: '2026-05-14'
6+
author: Marissa Bower, Chase Franklin, Rod Soto, Bhavin Patel, Eric McGinnis, Splunk
7+
status: production
8+
type: Hunting
9+
description: The following analytic identifies potential remote code execution (RCE) attempts via user-supplied Extensible Stylesheet Language Transformations (XSLT) in Splunk versions 9.1.x. It detects this activity by analyzing `splunkd_ui` logs for specific URI patterns and status codes indicative of XSLT injection attempts. This activity is significant because successful exploitation could allow an attacker to execute arbitrary code on the Splunk server. If confirmed malicious, this could lead to full system compromise, unauthorized data access, and further lateral movement within the network.
10+
data_source: []
11+
search: '`splunkd_ui` ((uri="*NO_BINARY_CHECK=1*" AND "*input.path=*.xsl*") OR uri="*dispatch*.xsl*") AND uri!= "*splunkd_ui*" | rex field=uri "(?<string>=\s*([\S\s]+))" | eval decoded_field=urldecode(string) | eval action=case(match(status,"200"),"Allowed",match(status,"303|500|401|403|404|301|406"),"Blocked",1=1,"Unknown") | stats count min(_time) as firstTime max(_time) as lastTime by clientip useragent uri decoded_field action host | rename clientip as src, uri as dest_uri | iplocation src | fillnull value="N/A" | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | table firstTime, lastTime src, useragent, action, count, Country, Region, City, dest_uri, decoded_field | `splunk_rce_via_user_xslt_filter`'
12+
how_to_implement: This detection does not require you to ingest any new data. The detection does require the ability to search the _internal index.
13+
known_false_positives: This search will provide information for investigation and hunting possible abuse of user-supplied XSLT. There may be false positives and results should individually evaluated. Please evaluate the source IP and useragent responsible for creating the requests.
14+
references:
15+
- https://advisory.splunk.com/advisories/SVD-2023-1104
16+
analytic_story:
17+
- Splunk Vulnerabilities
18+
asset_type: Endpoint
19+
cve:
20+
- CVE-2023-46214
21+
mitre_attack_id:
22+
- T1210
23+
product:
24+
- Splunk Enterprise
25+
- Splunk Enterprise Security
26+
- Splunk Cloud
27+
category: application
28+
security_domain: endpoint
29+
tests:
30+
- name: True Positive Test
31+
attack_data:
32+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1210/splunk/splunk_rce_via_user_xslt_splunkd_ui_access.log
33+
source: /opt/splunk/var/log/splunk/splunkd_ui_access.log
34+
sourcetype: splunkd_ui_access
35+
index: _internal
36+
test_type: unit
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Splunk Sensitive Information Disclosure in DEBUG Logging Channels
2+
id: 93dc7182-c5da-4085-82ec-401abf33d623
3+
version: 6
4+
creation_date: '2024-10-14'
5+
modification_date: '2026-05-14'
6+
author: Rod Soto, Eric McGinnis, Splunk
7+
status: production
8+
type: Hunting
9+
description: In Splunk versions 9.3, 9.2, 9.1, 9.1.5 Applications which have been enabled with logging level DEBUG may write sensitive information such as keys, tokens, or other sensitive strings into the internal index.
10+
data_source:
11+
- Splunk
12+
search: |-
13+
`splunkd` log_level="DEBUG" AND component IN ("REST_Calls", "AdminManager", "JSONWebToken")
14+
| stats count min(_time) as firstTime max(_time) as lastTime by host splunk_server log_level component event_message
15+
| `security_content_ctime(firstTime)`
16+
| `security_content_ctime(lastTime)`
17+
| `splunk_sensitive_information_disclosure_in_debug_logging_channels_filter`
18+
how_to_implement: Requires access to _internal index. It is recommended to inventory and modify the search for specific apps that may have DEBUG logging enabled.
19+
known_false_positives: There will be false positives as not every message to the DEBUG log will expose sensitive information, such as keys or other secrets.
20+
references:
21+
- https://advisory.splunk.com/advisories/SVD-2024-0301
22+
- https://advisory.splunk.com/advisories/SVD-2024-1008
23+
- https://advisory.splunk.com/advisories/SVD-2024-1009
24+
analytic_story:
25+
- Splunk Vulnerabilities
26+
asset_type: Splunk Server
27+
cve:
28+
- CVE-2024-29945
29+
- CVE-2024-45738
30+
- CVE-2024-45739
31+
mitre_attack_id:
32+
- T1552
33+
product:
34+
- Splunk Enterprise
35+
- Splunk Enterprise Security
36+
- Splunk Cloud
37+
category: application
38+
security_domain: endpoint
39+
tests:
40+
- name: True Positive Test of JsonWebToken DEBUG Logging Channel
41+
attack_data:
42+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1654/splunk/jsonwebtokenplaintokensvd_splunkd.log
43+
source: /opt/splunk/var/log/splunk/splunkd.log
44+
sourcetype: splunkd
45+
index: _internal
46+
test_type: unit
47+
- name: True Positive Test of REST_Calls DEBUG Logging Channel
48+
attack_data:
49+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1552/splunk/svd-2024-1008.log
50+
sourcetype: splunkd
51+
source: /opt/splunk/var/log/splunk/splunkd.log
52+
index: _internal
53+
test_type: unit
54+
- name: True Positive Test of AdminManager DEBUG Logging Channel
55+
attack_data:
56+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1552/splunk/svd-2024-1009.log
57+
sourcetype: splunkd
58+
source: /opt/splunk/var/log/splunk/splunkd.log
59+
index: _internal
60+
test_type: unit
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: Splunk User Enumeration Attempt
2+
id: 25625cb4-1c4d-4463-b0f9-7cb462699cde
3+
version: 9
4+
creation_date: '2022-04-29'
5+
modification_date: '2026-05-14'
6+
author: Lou Stella, Splunk
7+
status: production
8+
type: TTP
9+
description: The following analytic identifies attempts to enumerate usernames in Splunk by detecting multiple failed authentication attempts from the same source. It leverages data from the `_audit` index, specifically focusing on failed authentication events. This activity is significant for a SOC because it can indicate an attacker trying to discover valid usernames, which is a precursor to more targeted attacks like password spraying or brute force attempts. If confirmed malicious, this activity could lead to unauthorized access, compromising the security of the Splunk environment and potentially exposing sensitive data.
10+
data_source:
11+
- Splunk
12+
search: '`splunkd_failed_auths` | stats count(user) as auths by user, src | where auths>5 | stats values(user) as user, sum(auths) as TotalFailedAuths by src | `splunk_user_enumeration_attempt_filter`'
13+
how_to_implement: This detection does not require you to ingest any new data. The detection does require the ability to search the _audit index. This detection may assist in efforts to find password spraying or brute force authorization attempts in addition to someone enumerating usernames.
14+
known_false_positives: Automation executing authentication attempts against your Splunk infrastructure with outdated credentials may cause false positives.
15+
references:
16+
- https://www.splunk.com/en_us/product-security/announcements/svd-2022-0502.html
17+
drilldown_searches:
18+
- name: View the detection results for $user$
19+
search: '%original_detection_search% | search user = $user$'
20+
earliest_offset: $info_min_time$
21+
latest_offset: $info_max_time$
22+
- name: View risk events for the last 7 days for $user$
23+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ($user$) starthoursago=168 endhoursago=1 | 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)`'
24+
earliest_offset: $info_min_time$
25+
latest_offset: $info_max_time$
26+
finding:
27+
title: $TotalFailedAuths$ failed authentication events to Splunk from $src$ detected.
28+
entity:
29+
field: user
30+
type: user
31+
score: 40
32+
threat_objects:
33+
- field: src
34+
type: ip_address
35+
analytic_story:
36+
- Splunk Vulnerabilities
37+
asset_type: Endpoint
38+
cve:
39+
- CVE-2021-33845
40+
mitre_attack_id:
41+
- T1078
42+
product:
43+
- Splunk Enterprise
44+
- Splunk Enterprise Security
45+
- Splunk Cloud
46+
category: application
47+
security_domain: access
48+
tests:
49+
- name: True Positive Test
50+
attack_data:
51+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1078/splunkd_auth/audittrail.log
52+
source: audittrail
53+
sourcetype: audittrail
54+
index: _audit
55+
test_type: unit

0 commit comments

Comments
 (0)