SecBoard
Zurück zur CVE-Übersicht

CVE-2026-47892

CRITICAL(9.8)

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Risk Signal Score25/100 — MITTEL
  • CVSS 9.8 — Kritisch

Erwähnungen (letzte 60 Tage)

Artikel

EPSS-Score

0.4%

Exploit-Wahrscheinlichkeit (30 Tage)

CVSS Score

9.8

Technische Schwere

Beschreibung

A WebFlux application using functional endpoints and deployed with DispatcherServlet may be vulnerable to a header predicate bypass in a pre-flight request. Spring Framework 7.0.0 - 7.0.8 Spring Framework 6.2.0 - 6.2.19 Spring Framework 6.1.0 - 6.1.28 Spring Framework 6.0.0 - 6.0.30 Spring Framework 5.3.0 - 5.3.49 Spring Framework 5.2.5.RELEASE - 5.2.25.RELEASE

Erkennung & Indikatoren

Ausnutzung

In den geprüften Quellen nicht genannt

Behobene Versionen

  • 7.0.9
  • 7.0.8.1
  • 6.2.20
  • 6.1.29
  • 6.0.31
  • 5.3.50
  • 5.2.26

Threat-Hunting-Queries

Die Schwachstelle betrifft WebFlux-Anwendungen, die funktionale Endpunkte verwenden und mit DispatcherServlet bereitgestellt werden, wodurch ein Header-Prädikat-Bypass in einer Pre-Flight-Anfrage möglich ist. Die Detektion konzentriert sich auf ungewöhnliche oder manipulierte Pre-Flight-Anfragen, die auf einen Bypass hindeuten könnten.

Sentinel/Defender KQL

let PreflightRequests = HttpRequests
| where Url contains "/" // Adjust to specific WebFlux functional endpoint paths if known
| where HttpMethod == "OPTIONS"
| where RequestHeaders contains "Access-Control-Request-Headers" and RequestHeaders contains "Access-Control-Request-Method";
PreflightRequests
| where ResponseStatus == 200 // Successful pre-flight
| join kind=inner (HttpRequests
    | where HttpMethod != "OPTIONS"
    | where Url contains "/" // Same endpoint path as pre-flight
    | where TimeGenerated > ago(1m) and TimeGenerated < now() // Follow-up request shortly after pre-flight
) on RemoteIp, UserAgent, Url
| where RequestHeaders contains "" // Look for unusual or missing headers that should be present based on the pre-flight
| project TimeGenerated, RemoteIp, UserAgent, Url, HttpMethod, RequestHeaders, ResponseStatus, CorrelationId

Splunk SPL

sourcetype=web_access_logs (method=OPTIONS AND uri="/*" AND header_access_control_request_headers=* AND header_access_control_request_method=*) OR (method!=OPTIONS AND uri="/*")
| transaction clientip, uri maxspan=1m keepevicted=true
| where mvcount(method) > 1 AND mvindex(method,0)="OPTIONS" AND mvindex(method,1)!="OPTIONS"
| eval preflight_headers = mvindex(header_access_control_request_headers,0)
| eval actual_headers = mvindex(request_headers,1)
| where NOT match(actual_headers, preflight_headers) // Simplified check, needs refinement based on specific bypass patterns
| table _time, clientip, uri, method, preflight_headers, actual_headers

Sigma

title: Spring Framework WebFlux Header Predicate Bypass Attempt
id: 00000000-0000-0000-0000-000000000001
status: experimental
description: Detects potential attempts to bypass header predicates in Spring WebFlux applications using functional endpoints and DispatcherServlet via pre-flight requests.
references:
  - https://spring.io/security/cve-2026-47892
logsource:
  category: webserver
  product: spring_webflux
detection:
  selection_preflight:
    cs-method: 'OPTIONS'
    cs-uri-stem|contains: '/'
    cs-header-Access-Control-Request-Headers|exists: true
    cs-header-Access-Control-Request-Method|exists: true
  selection_followup:
    cs-method|!in: ['OPTIONS']
    cs-uri-stem|contains: '/'
  condition: selection_preflight and selection_followup
  timeframe: 1m
  # Further refinement needed to compare headers between pre-flight and follow-up
  # This requires advanced correlation capabilities not directly expressible in basic Sigma
falsepositives:
  - Legitimate pre-flight requests followed by valid requests.
level: high

Elastic ES|QL

from logs-webserver-access.*
| where http.request.method == 'OPTIONS' and url.path.keyword : '*' and http.request.headers."access-control-request-headers" : '*' and http.request.headers."access-control-request-method" : '*'
| keep @timestamp, source.ip, user_agent.original, url.path.keyword, http.request.method, http.request.headers
| join (from logs-webserver-access.*
    | where http.request.method != 'OPTIONS' and url.path.keyword : '*'
    | keep @timestamp, source.ip, user_agent.original, url.path.keyword, http.request.method, http.request.headers
) on source.ip, user_agent.original, url.path.keyword
| where @timestamp.x - @timestamp.y < 60000 // Follow-up within 60 seconds
| eval preflight_headers = http.request.headers.x."access-control-request-headers"
| eval actual_headers = http.request.headers.y
| where NOT (actual_headers : preflight_headers) // Simplified check, needs refinement
| project @timestamp.x, source.ip, user_agent.original, url.path.keyword, http.request.method.x, preflight_headers, http.request.method.y, actual_headers

SecBoard-generated · behavioral · requires customizationVon SecBoard erzeugt und nicht in einer Zielumgebung validiert. Vor dem Einsatz an die eigene Protokollierung anpassen.

Betroffene Produkte

  • cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*
  • cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*
  • cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*
  • cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*
  • cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*
  • cpe:2.3:a:vmware:spring_framework:*:*:*:*:*:*:*:*

Referenzen