Skip to main content

OpenWISP Controller CVE-2026-116677

| EUVDEUVD-2026-111234 MEDIUM
Missing Authorization (CWE-862)
2026-10-27 GitHub_M
5.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as org-A manager with CA permission
  2. Delivery
    Enumerate sequential CA integer IDs
  3. Exploit
    Request /api/v1/controller/ca/<id>/crl cross-org
  4. Execution
    Receive org-B CRL bypassing org scope
  5. Impact
    Disclose issuer info and revoked serials

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated OpenWISP Controller account that is an organization manager holding CA view (model) permission (PR:L), and a multi-tenant deployment containing at least one CA in an organization the attacker does not manage so cross-organization enumeration of sequential integer CA IDs is meaningful. The vulnerable path is specifically GET /api/v1/controller/ca/<integer-id>/crl handled by CrlDownloadView.retrieve; the sibling CA detail endpoint is correctly scoped and returns 404. Limiting factors that reduce real-world impact: the leak is confined to CRL contents (CA issuer data and revoked certificate serial numbers) with no private-key disclosure and no modification; and per the advisory, django-x509 serves CRLs publicly by default unless DJANGO_X509_CRL_PROTECTED=True, so only deployments that have explicitly enabled CRL protection experience a genuine new confidentiality exposure from this REST API behavior.

Impact

This is a genuine but low-severity authorization flaw (CWE-862, Missing Authorization) rather than a high-urgency issue. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N, 5.3 Medium) is self-consistent with the description: network-reachable, low attack complexity, but requiring PR:L - an authenticated organization manager holding CA view permission - with only low confidentiality impact and no integrity or availability impact. No EPSS score, SSVC automatable/technical-impact decision, or KEV status was supplied; the only priority signal is the vuln.today Decision label 'this_month', which aligns with a patch-this-cycle posture rather than act_now/emergency. There is no KEV listing and no PoC or exploit reference among the inputs, so exploitation is not demonstrated. Critically, the vendor advisory notes django-x509 exposes CRLs publicly by default unless DJANGO_X509_CRL_PROTECTED=True, meaning default deployments gain no new confidentiality exposure from this bug - the real exposure is confined to multi-tenant deployments that have explicitly enabled CRL protection. Net: a real authorization-boundary defect worth patching on a normal cycle, not a high-CVSS-but-overrated emergency.

Exploit ScenarioDerived

A legitimate organization manager in a multi-tenant OpenWISP Controller instance, holding CA view permission for organization A, enumerates sequential integer CA IDs against GET /api/v1/controller/ca/<id>/crl and requests a CA belonging to organization B. Because the CRL endpoint resolves the CA directly rather than through the organization-scoped queryset, the attacker receives organization B's CRL, disclosing CA issuer information and revoked certificate serial numbers. No public exploit identified at time of analysis; exploitation requires valid authenticated manager credentials and the attack complexity is low once authenticated.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 28, 2026

OpenWISP Controller versions 1.0.0 through 1.3.1 contain a missing-authorization flaw (CWE-862) in the CRL download endpoint: an authenticated organization manager holding CA view permission can retrieve another organization's certificate revocation list by iterating sequential CA identifiers. The exposure is limited to CRL contents - CA issuer information and revoked certificate serial numbers - with no private-key disclosure and no ability to modify data, and the sibling CA detail endpoint remains correctly scoped. It is fixed in 1.3.2; exploitation requires a multi-tenant deployment, and because django-x509 serves CRLs publicly by default unless DJANGO_X509_CRL_PROTECTED is enabled, only deployments that explicitly protect CRLs gain a new confidentiality exposure. Severity is low (CVSS 5.3 as published; assessed 3.1 vector AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N), no public exploit code is identified, and there is no KEV listing.

RemediationAI

Upgrade to OpenWISP Controller 1.3.2, the vendor-released fix, as documented in advisory GHSA-9gh4-xw24-9xh5 and the release at https://github.com/openwisp/openwisp-controller/releases/tag/1.3.2; the corrective commits are 90ded783267aa11b89768b0ec9ae69895cc3730c and 9e1869e17734a0f34bc428622d463c1a8c230720 (queryset = Ca.objects.all() plus self.get_object() in CrlDownloadView.retrieve, with a multitenancy regression test). If upgrading immediately is not possible, reduce exposure by auditing which accounts hold CA view permission and organization manager status and removing it where unnecessary - this narrows the set of users who can enumerate sequential CA IDs at the cost of restricting legitimate PKI administration. Deployments that have set DJANGO_X509_CRL_PROTECTED = True should treat their CRLs as potentially disclosed cross-tenant until patched, while deployments on the default setting already serve CRLs publicly, so this REST path adds no new confidentiality exposure. There is no evidence of in-the-wild exploitation, so the vendor's own guidance to update is the complete fix; the advisory does not specify any additional compensating configuration.

Affected VersionsENISA

openwisp-controller 1.0.0, < 1.3.2

Affected Packages

euvd openwisp_controller fix: 1.3.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

OpenWISP Controller is a Django-based network and WiFi controller that includes a PKI module built on django-x509 for managing certificate authorities and certificates. In the REST API, CrlDownloadView inherits ProtectedAPIMixin, which enforces authentication and model-level permission (an organization manager with CA view permission), and it is supposed to be organization-scoped like the rest of the PKI API via FilterByOrganizationManaged. The retrieve() method instead resolved the requested CA directly with get_object_or_404(Ca, pk=kwargs["pk"]), skipping both the organization-scoped queryset and any object-level permission check; the upstream fix changes the view's queryset from Ca.objects.none() to Ca.objects.all() and replaces the direct lookup with self.get_object(), restoring the standard scoped retrieval path, and adds a multitenancy regression test covering same-organization CA (200), other-organization CA (404) and shared/global CA (200). Root cause is CWE-862 Missing Authorization - an object-level authorization boundary not applied to a resource identified by a predictable sequential integer - not a cryptographic weakness: CRLs are public artifacts by design, and django-x509 publishes them publicly unless DJANGO_X509_CRL_PROTECTED = True.

Know when Openwisp Controller gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.3 MEDIUM

Network REST endpoint with low complexity but requires an authenticated org manager with CA view permission (PR:L); only low confidentiality impact (CRL metadata), no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 27, 2026 - 18:18 EUVD

DescriptionCVE.org

OpenWISP Controller is a network and WiFi controller for provisioning, configuration management, updates, and PKI management. From 1.0.0 until 1.3.2, the GET /api/v1/controller/ca/<integer-id>/crl endpoint allows an authenticated organization manager with CA view permission to retrieve another organization's certificate revocation list by requesting its sequential CA identifier. CrlDownloadView.retrieve resolves the CA directly instead of using the organization-scoped object retrieval enforced by FilterByOrganizationManaged, bypassing the endpoint's intended authorization boundary. The response can disclose CA issuer information and revoked certificate serial numbers, but it does not expose CA private keys or allow modification. This issue is fixed in version 1.3.2.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Low
niche open-source network/WiFi controller, limited enterprise footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy