P.K. SHARMA

Cyber security intelligence, AI governance, practitioner analysis

WSO2 says low privilege users could run admin actions on its System REST APIs; its advisory is 280 days old

WSO2's CVE-2025-11969 record, published on 2 November 2026, says the System REST APIs in seven products let lower privilege roles run administrative actions. WSO2's own advisory and fixes date from January. Read at 10:20 GMT on 2 November.

By · LinkedIn · · 13 min read

A critical CVE for a fix WSO2 announced in January

WSO2 published the CVE record for CVE-2025-11969 at 05:53 UTC on 2 November 2026, as its own CVE Numbering Authority. The record scores it CVSS 3.1 9.4, Critical, and says the System REST APIs in WSO2 products "do not correctly enforce access control mechanisms, allowing users with lower privilege roles to execute administrative actions that should be restricted." Its only reference is WSO2 advisory WSO2-2025-4733. That advisory, in the source file WSO2 keeps in its public docs-security repository, carries the line "Published: January 26, 2026". From 26 January to 2 November is 280 days (derived). The update levels that fix it were listed in the advisory from the day it was published.

The fix itself is older still. The advisory points community users to one public change, carbon-apimgt pull request 13521, titled "Improve code", which GitHub shows merged into the master branch at 07:10 UTC on 27 October 2025. That is 371 days before the CVE record (derived), and seven days after the record says the CVE identifier was reserved, on 20 October 2025. This briefing was read between 10:09 and 10:20 GMT on Monday 2 November 2026. WSO2's live advisory page answered our requests with a browser check, which we did not try to get past; the advisory text quoted here is WSO2's own published source file and its history on GitHub.

So the question for a defender is not only whether the flaw is serious. It is whether a vulnerability scanner or patch process that keys on CVE identifiers could have told you about it at any point in those 280 days, and whether your WSO2 servers already sit at the update level WSO2 named in January.

What the record does not establish

The record and the advisory make no statement about exploitation, victims or attacks. CVE-2025-11969 was not in the CISA Known Exploited Vulnerabilities catalogue, version 2026.10.30, when read at 10:10 GMT on 2 November 2026. Absence from that list is not evidence that nobody has used the flaw; it means no listing as of that catalogue version.

Neither primary gives a count of exposed or affected servers, and this briefing does not estimate one. Neither names a reporter: the record's source block says the discovery was INTERNAL, and it carries no credit. Neither defines which REST APIs WSO2 means by "System REST APIs". And the dates show only when files were written and published; they do not explain why the CVE record followed the advisory by 280 days.

Lower privilege user, or no privilege at all?

The two WSO2 documents describe the attacker in words as an account holder. The record says "users with lower privilege roles". The advisory says "a user with low privileges can perform unauthorized actions, including executing administrative actions." But the CVSS vector WSO2 assigned in both places says PR:N, no privileges required, which in CVSS terms means an attacker who is not signed in at all.

The difference moves the score across a severity line. With every other metric unchanged, the same vector with PR:L, low privileges, scores 8.3, High, not 9.4, Critical (derived with the CVSS 3.1 formula; arithmetic in the fact check). So either the prose undersells the exposure, or the vector oversells it. The primaries do not say which, and this briefing treats the question as unresolved.

WSO2's own documentation gives one clue to how the role check is meant to work. Its page on scope to role mappings says certain REST API resources are protected by OAuth 2.0 scopes, and that a token for a scope is issued "only if that user has been assigned one or more of the roles specified in the RESTAPIScopes configuration for that scope." In other words, the role check lives in the scope check.

The public fix changes exactly that. In the shared REST API code, the scope validation routine used to log "Skipping scope validation" and return true when it found no resource template matching the request path; after the fix it logs "Hence, failing the scope validation" and returns false. The same change removes an OAuth authentication interceptor from the Gateway REST API's configuration. Our reading, which is inference and not WSO2's wording: a check that passed whenever it could not match a path would let a token holding few or no admin scopes through to an admin resource, which fits the "lower privilege user" prose better than a fully unauthenticated caller. The fix diff alone does not settle PR:N.

The path, drawn

Drawn by this site from the CVE-2025-11969 record, WSO2 advisory WSO2-2025-4733 and carbon-apimgt pull request 13521, read 2 November 2026. The fix reading is ours.

Steps one and two are what the record states. The purple card is this site's reading of the public change WSO2 names, and is labelled as such. The green card is WSO2's own exclusion, which the next section examines.

Stated, and not stated

What WSO2's CVE record and advisory WSO2-2025-4733 state, and what they leave out. Read 2 November 2026.

QuestionStated by WSO2Not stated
What is brokenSystem REST APIs do not correctly enforce access control (CWE-285, Improper Authorization)Which REST APIs count as System REST APIs
Who can use itProse: users with lower privilege roles. Vector: PR:NWhich of the two is right
What they getUnauthorized administrative operations; C:H, I:H, A:LWhich administrative actions, or examples
What is excludedAPIs created and exposed through the API Manager's API GatewayWhether the System REST APIs are reachable from the internet in default deployments
FixUpdate levels for 15 product versions; public pull request 13521 for community usersA release number for community users on each product line
WhenAdvisory published 26 January 2026; CVE published 2 November 2026Why the CVE record came 280 days later
ExploitationNothingAny exploitation, victims or exposed server count
Who found itDiscovery: INTERNALAny named finder

"Not affected through the Gateway" is not "not reachable"

Both WSO2 documents carry a reassuring sentence. The advisory: "Any APIs created and exposed through the WSO2 API Manager's API Gateway remain unaffected." Read quickly, it sounds like the gateway shields you. It does not say that.

An API Manager deployment carries two kinds of API. There are the business APIs an organisation creates and publishes through the gateway for its consumers, and there are the product's own management APIs. WSO2's REST API overview lists the latter as the APIs exposed from the Publisher, Developer Portal, Admin Portal, Gateway, Service Catalog, Devops and Governance components, used "to create and manage APIs". The sentence about the Gateway covers the first kind. The flaw is in the second. The public fix even edits the configuration of the Gateway component's own REST API, which suggests (our reading of the file paths) that the management side of the gateway was in scope, even though the APIs it serves were not.A label that tells you your published APIs are safe says nothing about the management interface where the access check failed, and that interface is what needs fencing and patching.

Open banking deployments are the obvious high stakes case, because WSO2 lists Open Banking AM 2.0.0 and Open Banking IAM 2.0.0 among the affected products. WSO2 says nothing specific to open banking beyond those two rows and their update levels, 396 and 416, and this briefing adds nothing it does not state.

Products, versions and the fix

Drawn by this site from WSO2 advisory WSO2-2025-4733 and the CVE-2025-11969 record, read 2 November 2026.

This advisory splits the fix by customer type.Support subscription holders are told to update to the listed update level or higher through WSO2 Updates. Community users, running the open source distributions, are told: "Apply the relevant fixes to your product using the public fix(es) provided below." The one public fix listed is pull request 13521. Failing that: "If applying the fix or update is not feasible, migrate to the latest unaffected version of the respective WSO2 product(s)." The advisory does not name a community release number for each product line.

WSO2's update levels from advisory WSO2-2025-4733, with the matching boundary in the CVE-2025-11969 record. Every one of the fifteen rows agrees.

ProductVersionFixed at update level
WSO2 API Control Plane4.5.033 (record: affected below 4.5.0.33)
WSO2 API Manager4.5.032 (record: affected below 4.5.0.32)
WSO2 API Manager4.4.049 (record: affected below 4.4.0.49)
WSO2 API Manager4.3.085 (record: affected below 4.3.0.85)
WSO2 API Manager4.2.0173 (record: affected below 4.2.0.173)
WSO2 API Manager4.1.0233 (record: affected below 4.1.0.233)
WSO2 API Manager4.0.0370 (record: affected below 4.0.0.370)
WSO2 API Manager3.2.170 (record: affected below 3.2.1.70)
WSO2 API Manager3.2.0450 (record: affected below 3.2.0.450)
WSO2 API Manager3.1.0347 (record: affected below 3.1.0.347)
WSO2 Identity Server as Key Manager5.10.0367 (record: affected below 5.10.0.367)
WSO2 Open Banking AM2.0.0396 (record: affected below 2.0.0.396)
WSO2 Open Banking IAM2.0.0416 (record: affected below 2.0.0.416)
WSO2 Traffic Manager4.5.031 (record: affected below 4.5.0.31)
WSO2 Universal Gateway4.5.031 (record: affected below 4.5.0.31)

The record lists versions of API Manager before 3.1.0, and of the other products before their first listed version, as unknown, not unaffected. It also lists two library components that do not appear in WSO2's table: the Carbon API Manager Rest API Utility and Rest API Common Functions packages, with affected ranges and 9.32.147 marked unaffected. The exact ranges are in the technical details below.

GitHub's advisory database mirrored the record as GHSA-p4rq-q6fh-965p at 06:31 UTC on 2 November, marked unreviewed and with no affected package listed, so dependency scanners that rely on it will not match a Maven artifact yet. WSO2 products have been in the exploited catalogue before; this site covered an earlier WSO2 catalogue entry whose name did not match its own record.

Fixed in October 2025, advised in January, recorded in November

Dated events for CVE-2025-11969, each from the source named. Day counts are derived.

Date (UTC)EventSource
20 Oct 2025, 15:28CVE identifier reservedCVE record, dateReserved
27 Oct 2025, 07:10Pull request 13521, "Improve code", merged to carbon-apimgt master, 47 minutes after it was openedGitHub pull request
23 Jan 2026, 19:01Advisory file added to WSO2's docs-security repository in a commit titled "Add remaining advisories"GitHub commit history
26 Jan 2026Advisory published date, severity Critical, update levels listedWSO2 advisory source
16 Feb and 24 Sep 2026Two later edits: a formatting tag and the date format only; no change to products, levels or wordingGitHub commit history, compared by this site
2 Nov 2026, 05:53CVE record published by WSO2 as CNA, CVSS 9.4CVE record, datePublished
2 Nov 2026, 06:31GitHub advisory GHSA-p4rq-q6fh-965p, unreviewedGitHub advisory database

Three gaps follow, all derived: 7 days from reservation to the merged fix, 91 days from the merged fix to the advisory, and 280 days from the advisory to the CVE record. The fix commit's title says nothing about security, which is common practice for embargoed fixes but means a reader of the open source history would not have known what it closed.

What to do, in order

Take this with you

Ranked actions for CVE-2025-11969

  • Inventory every WSO2 product and version you run against WSO2's list: API Manager 3.1.0 to 4.5.0, API Control Plane 4.5.0, Universal Gateway 4.5.0, Traffic Manager 4.5.0, Identity Server as Key Manager 5.10.0, Open Banking AM 2.0.0 and Open Banking IAM 2.0.0. Include versions the record marks unknown.
  • Subscription holders: confirm each server is at or above the update level WSO2 names (for example API Manager 4.5.0 at 32, Open Banking IAM 2.0.0 at 416). Check the level on the server, not in a ticket. Many may already be there, since the levels date from January.
  • Community users: apply the public fix in pull request 13521 or move to the latest unaffected version, as WSO2 advises; if you built from source, check whether your build includes that merge.
  • Keep the product's management and REST API endpoints off networks that do not need them, separate from the gateway that serves your published APIs. This is this site's suggestion; the advisory names no workaround.
  • Review which accounts hold lower privilege roles, and audit administrative changes made by non administrator accounts since the affected versions were deployed: new users, role changes, API and policy changes. This is this site's suggestion; WSO2 does not ask for it.
  • If debug logging was ever enabled for the REST API common code, search retained logs for the old message 'No matching scopes found for request with path' followed by 'Skipping scope validation'. This site's suggestion, drawn from the public fix.
  • Open banking operators: WSO2 lists Open Banking AM 2.0.0 (level 396) and Open Banking IAM 2.0.0 (level 416) and says nothing further specific to them; treat them as the first two rows to verify.
  • Ask whether your scanner or patch feed would have flagged this flaw before 2 November; if not, add WSO2's advisory index to what you watch.

Technical details

Each block below is copied exactly from the primary it names, read on 2 November 2026. Where this site has reformatted structured data for reading, the caption says so. No request that performs an administrative action is given.

The record's description. This is the statement the CVE list and its mirrors now carry.

Text
The System REST APIs do not correctly enforce access control mechanisms, allowing users with lower privilege roles to execute administrative actions that should be restricted. This weakness permits unauthorized operations on the affected product.

Successful exploitation could enable a malicious actor to perform unauthorized administrative operations, including executing administrative functions. APIs exposed through the WSO2 API Manager's API Gateway are not affected by this vulnerability.
CVE-2025-11969 record description, from the CVE Program record published by WSO2, read 2 November 2026

The score and vector WSO2 assigned. Note PR:N against the prose above; the derived score with PR:L would be 8.3.

Text
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
baseScore 9.4, baseSeverity CRITICAL
CWE-285: Improper Authorization
CVSS 3.1 vector, score and CWE as printed in the CVE-2025-11969 record, read 2 November 2026

WSO2's affected product list, as printed in the advisory. Use it for inventory.

Text
* WSO2 API Control Plane: 4.5.0
* WSO2 API Manager: 4.5.0, 4.4.0, 4.3.0, 4.2.0, 4.1.0, 4.0.0, 3.2.1, 3.2.0, 3.1.0
* WSO2 Identity Server as Key Manager: 5.10.0
* WSO2 Open Banking AM: 2.0.0
* WSO2 Open Banking IAM: 2.0.0
* WSO2 Traffic Manager: 4.5.0
* WSO2 Universal Gateway: 4.5.0
Affected products, WSO2 advisory WSO2-2025-4733 source file in WSO2's docs-security repository, read 2 November 2026

WSO2's update level table. A server at the listed level or higher carries the fix.

Text
| Product Name                          | Product Version   | Update Level   |
| ------------------------------------- | ----------------- | -------------- |
| WSO2 API Control Plane                | 4.5.0             | 33             |
| WSO2 API Manager                      | 4.5.0             | 32             |
| WSO2 API Manager                      | 4.4.0             | 49             |
| WSO2 API Manager                      | 4.3.0             | 85             |
| WSO2 API Manager                      | 4.2.0             | 173            |
| WSO2 API Manager                      | 4.1.0             | 233            |
| WSO2 API Manager                      | 4.0.0             | 370            |
| WSO2 API Manager                      | 3.2.1             | 70             |
| WSO2 API Manager                      | 3.2.0             | 450            |
| WSO2 API Manager                      | 3.1.0             | 347            |
| WSO2 Identity Server as Key Manager   | 5.10.0            | 367            |
| WSO2 Open Banking AM                  | 2.0.0             | 396            |
| WSO2 Open Banking IAM                 | 2.0.0             | 416            |
| WSO2 Traffic Manager                  | 4.5.0             | 31             |
| WSO2 Universal Gateway                | 4.5.0             | 31             |
Support subscription update levels, WSO2 advisory WSO2-2025-4733 source file, read 2 November 2026

The two library components that appear only in the record, rendered one range per line by this site from the record's JSON fields; the values are copied exactly. The repeated base versions with two different upper bounds are as the record prints them.

Text
WSO2 Carbon API Manager Rest API Utility  (org.wso2.carbon.apimgt:org.wso2.carbon.apimgt.rest.api.util)  defaultStatus: unknown
  affected: version 6.6.163, lessThan 6.6.163.159
  affected: version 6.6.163, lessThan 6.6.163.160
  affected: version 6.7.206, lessThan 6.7.206.574
  affected: version 6.7.206, lessThan 6.7.206.576
  affected: version 6.7.210, lessThan 6.7.210.69
  affected: version 6.7.210, lessThan 6.7.210.71
  affected: version 9.0.174, lessThan 9.0.174.536
  affected: version 9.20.74, lessThan 9.20.74.384
  affected: version 9.20.74, lessThan 9.20.74.385
  affected: version 9.28.116, lessThan 9.28.116.380
  affected: version 9.29.120, lessThan 9.29.120.202
  affected: version 9.30.67, lessThan 9.30.67.125
  affected: version 9.31.86, lessThan 9.31.86.90
  unaffected: version 9.32.147, lessThanOrEqual *
WSO2 Carbon API Manager Rest API Common Functions  (org.wso2.carbon.apimgt:org.wso2.carbon.apimgt.rest.api.common)  defaultStatus: unknown
  affected: version 9.0.174, lessThan 9.0.174.538
  affected: version 9.20.74, lessThan 9.20.74.385
  affected: version 9.28.116, lessThan 9.28.116.382
  affected: version 9.29.120, lessThan 9.29.120.204
  affected: version 9.30.67, lessThan 9.30.67.126
  affected: version 9.31.86, lessThan 9.31.86.91
  unaffected: version 9.32.147, lessThanOrEqual *
Carbon component ranges from the CVE-2025-11969 record, reformatted for reading by this site, read 2 November 2026

The files the public fix changed. The first is the shared REST API scope check; the next two are the Gateway REST API's configuration; the last sets a default API version on requests.

Text
modified  +20 -4  components/apimgt/org.wso2.carbon.apimgt.rest.api.common/src/main/java/org/wso2/carbon/apimgt/rest/api/common/RestApiCommonUtil.java
modified  +0 -5  components/apimgt/org.wso2.carbon.apimgt.rest.api.gateway/src/main/webapp/WEB-INF/beans.xml
modified  +0 -1  components/apimgt/org.wso2.carbon.apimgt.rest.api.gateway/src/main/webapp/WEB-INF/web.xml
modified  +1 -0  components/apimgt/org.wso2.carbon.apimgt.rest.api.util/src/main/java/org/wso2/carbon/apimgt/rest/api/util/interceptors/URLValidationInterceptor.java
Changed files in carbon-apimgt pull request 13521, from GitHub, read 2 November 2026

The lines in the scope check that changed, copied from the public diff. The old debug message is what a defender with retained debug logs would search for.

Text
-                log.debug("No matching scopes found for request with path: " + basePath
-                        + ". Skipping scope validation.");
+                log.debug("No matching scopes found for request with path: " + derivedBasePath
+                        + ". Hence, failing the scope validation.");
-            return true;
+            return false;
Scope validation lines from the RestApiCommonUtil diff in carbon-apimgt pull request 13521, GitHub, read 2 November 2026

The exploited catalogue check, summarised by this site from the feed's own fields.

Text
catalogVersion: 2026.10.30
dateReleased: 2026-10-30T17:02:45.3665Z
count: 1766
entries with cveID CVE-2025-11969: 0
CISA Known Exploited Vulnerabilities feed, fields read by this site at 10:10 GMT on 2 November 2026

The question that exposes the gap

WSO2 graded this flaw Critical, named the update levels and published a public fix by 26 January 2026. Its customers with subscriptions had a route to the fix all year. Anyone whose process starts from a CVE identifier, a scanner, a feed, a dependency check, had nothing to match until 2 November.

So the question for every WSO2 operator, and for any vendor that is its own CNA: if a critical fix exists for 280 days before its CVE does, whose patch process was it written for, and who was left to find it by reading the vendor's advisory index?

Key facts

Sources

  1. PrimaryCVE-2025-11969 record: title, description, CWE, CVSS 3.1 vector and score, affected products and ranges, solution pointer, discovery INTERNAL, reserved and published datesWSO2 as CNA, via the CVE Programaccessed 2026-11-02
  2. PrimarySource file of advisory WSO2-2025-4733: published January 26, 2026, severity, affected products, description, impact, solution for community users and update levels for subscription holdersWSO2 (docs-security repository on GitHub)accessed 2026-11-02
  3. PrimaryCommit history of the advisory file: added 23 January 2026, edited 16 February and 24 September 2026GitHub API, WSO2 docs-securityaccessed 2026-11-02
  4. PrimaryCommit 11a397c, "Add remaining advisories", 23 January 2026, which added the advisory fileWSO2 (docs-security repository on GitHub)accessed 2026-11-02
  5. PrimaryWSO2's 2026 security advisories index source, which lists WSO2-2025-4733GitHub API, WSO2 docs-securityaccessed 2026-11-02
  6. PrimaryPull request 13521, "Improve code", merged 27 October 2025: the public fix the advisory namesWSO2 (carbon-apimgt on GitHub)accessed 2026-11-02
  7. PrimaryChanged files and diff of pull request 13521: scope validation now fails when no resource template matchesGitHub API, WSO2 carbon-apimgtaccessed 2026-11-02
  8. PrimaryGHSA-p4rq-q6fh-965p, unreviewed mirror of CVE-2025-11969, published 2 November 2026 at 06:31 UTC, no affected package listedGitHub Advisory Databaseaccessed 2026-11-02
  9. PrimaryWSO2 API Manager documentation source, advanced configurations: REST API resources protected by OAuth 2.0 scopes mapped to rolesWSO2 (docs-apim repository on GitHub)accessed 2026-11-02
  10. PrimaryWSO2 API Manager documentation source, RESTful APIs overview: the product REST APIs exposed from Publisher, Developer Portal, Admin Portal, Gateway and othersGitHub API, WSO2 docs-apimaccessed 2026-11-02
  11. PrimaryKnown Exploited Vulnerabilities catalogue feed, version 2026.10.30, read at 10:10 GMT on 2 November 2026: CVE-2025-11969 not listedCISAaccessed 2026-11-02

Share this briefing

Know someone who owns this problem? Send it to them.

Related briefings

The briefing, in your inbox

Practitioner analysis of cyber and AI security news. No vendor noise.

How often

Every new briefing in one email, at 7am, or at 7am, 12:30pm and 6pm. Nothing is sent when nothing is new. Unsubscribe any time.