EXPLORE
← Back to Explore
splunk_escuTTP

Web Spring4Shell HTTP Request Class Module

The following analytic detects HTTP requests containing payloads related to the Spring4Shell vulnerability (CVE-2022-22965). It leverages Splunk Stream HTTP data to inspect the HTTP request body and form data for specific fields such as "class.module.classLoader.resources.context.parent.pipeline.first". This activity is significant as it indicates an attempt to exploit a critical vulnerability in Spring Framework, potentially leading to remote code execution. If confirmed malicious, this could allow attackers to gain unauthorized access, execute arbitrary code, and compromise the affected system.

MITRE ATT&CK

initial-accesspersistence

Detection Query

`stream_http` http_method IN ("POST")
  | stats values(form_data) as http_request_body min(_time) as firstTime max(_time) as lastTime count
    BY src dest http_method
       http_user_agent uri_path url
       bytes_in bytes_out
  | search http_request_body IN ("*class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=_*", "*class.module.classLoader.resources.context.parent.pipeline.first.pattern*","*suffix=.jsp*")
  | `security_content_ctime(firstTime)`
  | `security_content_ctime(lastTime)`
  | `web_spring4shell_http_request_class_module_filter`

Author

Michael Haag, Splunk

Created

2026-03-10

Data Sources

Splunk Stream HTTP

Tags

Spring4Shell CVE-2022-22965
Raw Content
name: Web Spring4Shell HTTP Request Class Module
id: fcdfd69d-0ca3-4476-920e-9b633cb4593e
version: 7
date: '2026-03-10'
author: Michael Haag, Splunk
status: production
type: TTP
description: The following analytic detects HTTP requests containing payloads related to the Spring4Shell vulnerability (CVE-2022-22965). It leverages Splunk Stream HTTP data to inspect the HTTP request body and form data for specific fields such as "class.module.classLoader.resources.context.parent.pipeline.first". This activity is significant as it indicates an attempt to exploit a critical vulnerability in Spring Framework, potentially leading to remote code execution. If confirmed malicious, this could allow attackers to gain unauthorized access, execute arbitrary code, and compromise the affected system.
data_source:
    - Splunk Stream HTTP
search: |-
    `stream_http` http_method IN ("POST")
      | stats values(form_data) as http_request_body min(_time) as firstTime max(_time) as lastTime count
        BY src dest http_method
           http_user_agent uri_path url
           bytes_in bytes_out
      | search http_request_body IN ("*class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=_*", "*class.module.classLoader.resources.context.parent.pipeline.first.pattern*","*suffix=.jsp*")
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `web_spring4shell_http_request_class_module_filter`
how_to_implement: To successfully implement this search, you need to be ingesting logs with the stream HTTP logs or network logs that catch network traffic. Make sure that the http-request-body, payload, or request field is enabled.
known_false_positives: False positives may occur and filtering may be required. Restrict analytic to asset type.
references:
    - https://github.com/DDuarte/springshell-rce-poc/blob/master/poc.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$") starthoursago=168  | 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: $info_min_time$
      latest_offset: $info_max_time$
rba:
    message: A http body request related to Spring4Shell has been sent to $dest$ by $src$.
    risk_objects:
        - field: dest
          type: system
          score: 50
    threat_objects:
        - field: src
          type: ip_address
tags:
    analytic_story:
        - Spring4Shell CVE-2022-22965
    asset_type: Web Server
    cve:
        - CVE-2022-22965
    mitre_attack_id:
        - T1190
        - T1133
    product:
        - Splunk Enterprise
        - Splunk Enterprise Security
        - Splunk Cloud
    security_domain: network
tests:
    - name: True Positive Test
      attack_data:
        - data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1190/spring4shell/http_request_body_streams.log
          source: stream:http
          sourcetype: stream:http