{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.1",
    "cveMetadata": {
        "cveId": "CVE-2025-22232",
        "assignerOrgId": "dcf2e128-44bd-42ed-91e8-88f912c1401d",
        "state": "PUBLISHED",
        "assignerShortName": "vmware",
        "dateReserved": "2025-01-02T04:29:59.191Z",
        "datePublished": "2025-04-10T17:26:56.755Z",
        "dateUpdated": "2025-04-10T18:08:28.560Z"
    },
    "containers": {
        "cna": {
            "affected": [
                {
                    "defaultStatus": "unaffected",
                    "product": "Spring Cloud Config",
                    "vendor": "Spring",
                    "versions": [
                        {
                            "lessThan": "4.2.2",
                            "status": "affected",
                            "version": "4.2.x",
                            "versionType": "custom"
                        },
                        {
                            "lessThan": "4.1.6",
                            "status": "affected",
                            "version": "4.1.x",
                            "versionType": "custom"
                        },
                        {
                            "lessThan": "4.0.10",
                            "status": "affected",
                            "version": "4.0.x",
                            "versionType": "custom"
                        },
                        {
                            "lessThan": "3.1.10",
                            "status": "affected",
                            "version": "3.1.x",
                            "versionType": "custom"
                        },
                        {
                            "lessThan": "4.1.6",
                            "status": "affected",
                            "version": "3.0.x",
                            "versionType": "custom"
                        },
                        {
                            "lessThan": "4.1.6",
                            "status": "affected",
                            "version": "2.2.x",
                            "versionType": "custom"
                        }
                    ]
                }
            ],
            "datePublic": "2025-04-07T16:40:00.000Z",
            "descriptions": [
                {
                    "lang": "en",
                    "supportingMedia": [
                        {
                            "base64": false,
                            "type": "text/html",
                            "value": "Spring Cloud Config Server may not use Vault token sent by clients using a <code>X-CONFIG-TOKEN</code>&nbsp;header when making requests to Vault.<br>Your application may be affected by this if the following are true:<br><ol><li>You have Spring Vault on the classpath of your Spring Cloud Config Server and</li><li>You are using the <code>X-CONFIG-TOKEN</code>&nbsp;header to send a Vault token to the Spring Cloud Config Server for the Config Server to use when making requests to Vault and</li><li>You are using the default Spring Vault <code>SessionManager</code>&nbsp;implementation <code>LifecycleAwareSessionManager</code>&nbsp;or a <code>SessionManager</code>&nbsp;implementation that persists the Vault token such as <code>SimpleSessionManager</code>.</li></ol><br>In this case the <code>SessionManager</code>&nbsp;persists the first token it retrieves and will continue to use that token even if client requests to the Spring Cloud Config Server include a <code>X-CONFIG-TOKEN</code>&nbsp;header with a different value.<br>Affected Spring Products and Versions<br>Spring Cloud Config:<br><ul><li>2.2.1.RELEASE - 4.2.1</li></ul>Mitigation<br>Users of affected versions should upgrade to the corresponding fixed version.<br><br><table><thead><tr><th>Affected version(s)</th><th>Fix version</th><th>Availability</th></tr></thead><tbody><tr><td>4.2.x</td><td>4.2.2</td><td>OSS</td></tr><tr><td>4.1.x</td><td>4.1.6</td><td>OSS</td></tr><tr><td>4.0.x</td><td>4.0.10</td><td>Commercial</td></tr><tr><td>3.1.x</td><td>3.1.10</td><td>Commercial</td></tr><tr><td>3.0.x</td><td>4.1.6</td><td>OSS</td></tr><tr><td>2.2.x</td><td>4.1.6</td><td>OSS</td></tr></tbody></table><br>NOTE: Spring Cloud Config 3.0.x and 2.2.x are no longer under open source or commercial support. Users of these versions are encouraged to upgrade to a supported version.<br><br>No other mitigation steps are necessary.<br>"
                        }
                    ],
                    "value": "Spring Cloud Config Server may not use Vault token sent by clients using a X-CONFIG-TOKEN header when making requests to Vault.\nYour application may be affected by this if the following are true:\n  *  You have Spring Vault on the classpath of your Spring Cloud Config Server and\n  *  You are using the X-CONFIG-TOKEN header to send a Vault token to the Spring Cloud Config Server for the Config Server to use when making requests to Vault and\n  *  You are using the default Spring Vault SessionManager implementation LifecycleAwareSessionManager or a SessionManager implementation that persists the Vault token such as SimpleSessionManager.\n\nIn this case the SessionManager persists the first token it retrieves and will continue to use that token even if client requests to the Spring Cloud Config Server include a X-CONFIG-TOKEN header with a different value.\nAffected Spring Products and Versions\nSpring Cloud Config:\n  *  2.2.1.RELEASE - 4.2.1\n\n\nMitigation\nUsers of affected versions should upgrade to the corresponding fixed version.\n\nAffected version(s)Fix versionAvailability4.2.x4.2.2OSS4.1.x4.1.6OSS4.0.x4.0.10Commercial3.1.x3.1.10Commercial3.0.x4.1.6OSS2.2.x4.1.6OSS\nNOTE: Spring Cloud Config 3.0.x and 2.2.x are no longer under open source or commercial support. Users of these versions are encouraged to upgrade to a supported version.\n\nNo other mitigation steps are necessary."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "attackComplexity": "LOW",
                        "attackVector": "NETWORK",
                        "availabilityImpact": "NONE",
                        "baseScore": 5.3,
                        "baseSeverity": "MEDIUM",
                        "confidentialityImpact": "LOW",
                        "integrityImpact": "NONE",
                        "privilegesRequired": "NONE",
                        "scope": "UNCHANGED",
                        "userInteraction": "NONE",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N",
                        "version": "3.1"
                    },
                    "format": "CVSS",
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "GENERAL"
                        }
                    ]
                }
            ],
            "problemTypes": [
                {
                    "descriptions": [
                        {
                            "cweId": "CWE-287",
                            "description": "CWE-287 Improper Authentication",
                            "lang": "en",
                            "type": "CWE"
                        }
                    ]
                }
            ],
            "providerMetadata": {
                "orgId": "dcf2e128-44bd-42ed-91e8-88f912c1401d",
                "shortName": "vmware",
                "dateUpdated": "2025-04-10T17:26:56.755Z"
            },
            "references": [
                {
                    "url": "https://spring.io/security/cve-2025-22232"
                }
            ],
            "source": {
                "discovery": "UNKNOWN"
            },
            "title": "Spring Cloud Config Server May Not Use Vault Token Sent By Clients",
            "workarounds": [
                {
                    "lang": "en",
                    "supportingMedia": [
                        {
                            "base64": false,
                            "type": "text/html",
                            "value": "<p>If you cannot upgrade, then you can either:</p><ol><li>Remove Spring Vault from the classpath if it is not needed or</li><li>Implement your own <code>SessionManager</code>&nbsp;that does not persist the Vault token and provide a bean using that implementation in a <code>@Configuration</code>&nbsp;class. For example:</li></ol><br><tt><br>public class StatelessSessionManager implements SessionManager {<br><br>&nbsp; private final ClientAuthentication clientAuthentication;<br><br>&nbsp; private final ReentrantLock lock = new ReentrantLock();<br><br>&nbsp; public StatelessSessionManager(ClientAuthentication clientAuthentication) {<br>&nbsp; &nbsp; Assert.notNull(clientAuthentication, \"ClientAuthentication must not be null\");<br>&nbsp; &nbsp; this.clientAuthentication = clientAuthentication;<br>&nbsp; }<br><br>&nbsp; public VaultToken getSessionToken() {<br>&nbsp; &nbsp; this.lock.lock();<br>&nbsp; &nbsp; try {<br>&nbsp; &nbsp; &nbsp; return this.clientAuthentication.login();<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; finally {<br>&nbsp; &nbsp; &nbsp; this.lock.unlock();<br>&nbsp; &nbsp; }<br>&nbsp; }<br><br>}<br><br>@Configuration<br>public class MySessionManagerConfiguration extends SpringVaultClientConfiguration {<br><br>&nbsp; private final VaultEnvironmentProperties vaultProperties;<br><br>&nbsp; public MySessionManagerConfiguration(VaultEnvironmentProperties vaultProperties, ConfigTokenProvider configTokenProvider, List&lt;springvaultclientauthenticationprovider&gt; authProviders) {<br>&nbsp; &nbsp; super(vaultProperties, configTokenProvider, authProviders);<br>&nbsp; &nbsp; this.vaultProperties = vaultProperties;<br>&nbsp; }<br><br>&nbsp; @Bean<br>&nbsp; @Primary<br>&nbsp; public SessionManager sessionManager() {<br>&nbsp; &nbsp; if (vaultProperties.getAuthentication() == null &amp;&amp; !StringUtils.hasText(vaultProperties.getToken())) {<br>&nbsp; &nbsp; &nbsp; return new StatelessSessionManager(clientAuthentication());<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return super.sessionManager();<br>&nbsp; }<br>}<br>&lt;/springvaultclientauthenticationprovider&gt;<br></tt><br>"
                        }
                    ],
                    "value": "If you cannot upgrade, then you can either:\n\n  *  Remove Spring Vault from the classpath if it is not needed or\n  *  Implement your own SessionManager that does not persist the Vault token and provide a bean using that implementation in a @Configuration class. For example:\n\n\npublic class StatelessSessionManager implements SessionManager {\n\n  private final ClientAuthentication clientAuthentication;\n\n  private final ReentrantLock lock = new ReentrantLock();\n\n  public StatelessSessionManager(ClientAuthentication clientAuthentication) {\n    Assert.notNull(clientAuthentication, \"ClientAuthentication must not be null\");\n    this.clientAuthentication = clientAuthentication;\n  }\n\n  public VaultToken getSessionToken() {\n    this.lock.lock();\n    try {\n      return this.clientAuthentication.login();\n    }\n    finally {\n      this.lock.unlock();\n    }\n  }\n\n}\n\n@Configuration\npublic class MySessionManagerConfiguration extends SpringVaultClientConfiguration {\n\n  private final VaultEnvironmentProperties vaultProperties;\n\n  public MySessionManagerConfiguration(VaultEnvironmentProperties vaultProperties, ConfigTokenProvider configTokenProvider, List<springvaultclientauthenticationprovider> authProviders) {\n    super(vaultProperties, configTokenProvider, authProviders);\n    this.vaultProperties = vaultProperties;\n  }\n\n  @Bean\n  @Primary\n  public SessionManager sessionManager() {\n    if (vaultProperties.getAuthentication() == null && !StringUtils.hasText(vaultProperties.getToken())) {\n      return new StatelessSessionManager(clientAuthentication());\n    }\n    return super.sessionManager();\n  }\n}\n</springvaultclientauthenticationprovider>"
                }
            ],
            "x_generator": {
                "engine": "Vulnogram 0.2.0"
            }
        },
        "adp": [
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "timestamp": "2025-04-10T18:08:12.310467Z",
                                "id": "CVE-2025-22232",
                                "options": [
                                    {
                                        "Exploitation": "none"
                                    },
                                    {
                                        "Automatable": "yes"
                                    },
                                    {
                                        "Technical Impact": "partial"
                                    }
                                ],
                                "role": "CISA Coordinator",
                                "version": "2.0.3"
                            }
                        }
                    }
                ],
                "title": "CISA ADP Vulnrichment",
                "providerMetadata": {
                    "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
                    "shortName": "CISA-ADP",
                    "dateUpdated": "2025-04-10T18:08:28.560Z"
                }
            }
        ]
    }
}