Bug 2491691 (CVE-2026-12992) - CVE-2026-12992 Apicurio/apicurio-registry: apicurio-registry: SSRF via wsdl4j import dereference in WSDL FULL validation
Summary: CVE-2026-12992 Apicurio/apicurio-registry: apicurio-registry: SSRF via wsdl4j...
Keywords:
Status: NEW
Alias: CVE-2026-12992
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-06-23 12:14 UTC by OSIDB Bzimport
Modified: 2026-08-25 10:07 UTC (History)
6 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2026:59360 0 None None None 2026-08-25 10:07:20 UTC

Description OSIDB Bzimport 2026-06-23 12:14:59 UTC
A flaw was found in Apicurio Registry's WSDL validation path. The WSDLReaderAccessor constructs a wsdl4j WSDLReader without disabling the javax.wsdl.importDocuments feature:

```java
WSDLFactory wsdlFactory = WSDLFactory.newInstance();
wsdlReader = wsdlFactory.newWSDLReader();   // no setFeature() calls
```

wsdl4j 1.6.3's WSDLReaderImpl defaults javax.wsdl.importDocuments to true. When WsdlContentValidator.validate() runs at ValidityLevel.FULL, it calls readWSDL() which recursively fetches every <wsdl:import location="..."> and <xsd:import schemaLocation="..."> URL over the network using java.net.URL.openStream() with no allow-list.

An attacker with Developer-role access (or unauthenticated when the registry runs with default configuration) can set the VALIDITY rule to FULL on any artifact, then upload a WSDL document with attacker-controlled import locations pointing to internal services. The registry pod will issue HTTP GET requests to those URLs, enabling server-side request forgery against in-cluster services, cloud metadata endpoints, or other internal infrastructure. The error message in the RuleViolationException may leak partial response content from the target.

The precondition (VALIDITY rule set to FULL) is settable by any Developer-role user via the REST API, so the attacker controls both the precondition and the exploit.

Affected file: schema-util/wsdl/src/main/java/io/apicurio/registry/wsdl/util/WSDLReaderAccessor.java
Upstream: https://github.com/Apicurio/apicurio-registry

Remediation: Disable import dereference by calling wsdlReader.setFeature("javax.wsdl.importDocuments", false) and wsdlReader.setFeature("com.ibm.wsdl.parseXMLSchemas", false). Long-term, replace wsdl4j (unmaintained since 2013) with Apache Woden or restrict WSDL validation to SYNTAX_ONLY.

Comment 2 errata-xmlrpc 2026-08-25 10:07:19 UTC
This issue has been addressed in the following products:

  Red Hat build of Apicurio Registry 3.3.1

Via RHSA-2026:59360 https://access.redhat.com/errata/RHSA-2026:59360


Note You need to log in before you can comment on or make changes to this bug.