CVE-2026-90487 Overview
CVE-2026-90487 is an improper privilege management vulnerability [CWE-266] in Xuxueli xxl-job versions up to 3.4.2. The flaw resides in the JobGroupController.java file within the xxl-job-admin module. Specifically, the loadById endpoint lacks proper authentication controls, allowing authenticated low-privileged users to access data they should not be able to reach. The attack is executed remotely over the network and requires only low privileges. A public proof-of-concept exists on GitHub. The vendor was contacted about the disclosure but did not respond.
Critical Impact
Authenticated attackers with low privileges can access sensitive job group information over the network by invoking the unauthenticated loadById endpoint in the xxl-job admin interface.
Affected Products
- Xuxueli xxl-job versions up to and including 3.4.2
- xxl-job-admin component (JobGroupController.java)
- Deployments exposing the xxl-job admin console to untrusted networks
Discovery Timeline
- 2026-09-12 - CVE-2026-90487 published to the National Vulnerability Database (NVD)
- 2026-09-14 - Last updated in NVD database
Technical Details for CVE-2026-90487
Vulnerability Analysis
The vulnerability affects the job group management functionality of xxl-job, a distributed task scheduling platform. The loadById endpoint in JobGroupController.java handles requests to load job group configuration by identifier. This endpoint does not enforce appropriate authorization checks. Authenticated users can invoke it regardless of their intended privilege level. The result is improper privilege management, categorized under [CWE-266].
Successful exploitation exposes job group configuration data. While the confidentiality impact is limited and integrity and availability remain unaffected, exposed metadata can help attackers map the scheduler environment and plan follow-on attacks against executor nodes.
Root Cause
The root cause is a missing authorization check on the loadById handler. The controller performs the data lookup without verifying whether the calling principal has the required role or ownership over the requested job group. This deviates from the least-privilege principle expected in administrative APIs.
Attack Vector
Exploitation requires network access to the xxl-job admin interface and valid low-privileged credentials. An attacker sends a crafted HTTP request to the loadById endpoint referencing an arbitrary job group identifier. No user interaction is required. Because a public proof-of-concept is available, exploitation complexity is low.
For technical detail and reproduction steps, see the GitHub PoC Repository and the VulDB entry for CVE-2026-90487.
Detection Methods for CVE-2026-90487
Indicators of Compromise
- HTTP requests to /jobgroup/loadById originating from non-administrative user sessions or unexpected source IPs.
- Access log entries showing enumeration of sequential job group identifiers by the same authenticated user.
- Unusual API traffic patterns to the xxl-job admin console from workstations that do not normally manage the scheduler.
Detection Strategies
- Review web server and application logs for calls to the loadById endpoint made by accounts without administrator role assignments.
- Correlate xxl-job admin authentication events with subsequent controller invocations to identify low-privileged users accessing privileged endpoints.
- Deploy a web application firewall rule that flags or blocks requests to JobGroupController endpoints from non-admin sessions.
Monitoring Recommendations
- Enable verbose access logging on the xxl-job-admin module and ship logs to a centralized analytics platform.
- Monitor for enumeration patterns against integer identifiers on job group endpoints.
- Alert on any successful HTTP 200 responses to loadById requests originating from accounts not in the administrator group.
How to Mitigate CVE-2026-90487
Immediate Actions Required
- Restrict network exposure of the xxl-job admin console to trusted management networks only.
- Enforce strong authentication and rotate credentials for all xxl-job admin accounts.
- Audit existing xxl-job accounts and remove unused or over-privileged users.
- Review recent access logs for suspicious calls to JobGroupController endpoints.
Patch Information
At time of publication, the vendor had not responded to disclosure and no official patch is referenced in the advisory sources. Track the VulDB Vulnerability #403075 entry and the upstream xxl-job project for updates. Organizations should plan to upgrade as soon as a fixed release is published.
Workarounds
- Place the xxl-job admin interface behind a reverse proxy that enforces role-based access control on the loadById path.
- Apply a local patch adding an authorization check in JobGroupController.java that validates the caller's role before returning job group data.
- Segment scheduler infrastructure so that only jump hosts or CI systems can reach the admin console.
- Disable or firewall the affected endpoint at the gateway if it is not required by legitimate integrations.
# Example: restrict access to the xxl-job admin console at the reverse proxy
# nginx snippet limiting /xxl-job-admin/jobgroup/ to a trusted management CIDR
location /xxl-job-admin/jobgroup/ {
allow 10.0.100.0/24;
deny all;
proxy_pass http://xxl_job_backend;
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.