Lucene search
+L

Jenkins Sidepanel - Unauthorized Agent/Queue Exposure Detection

🗓️ 28 Jul 2026 11:27:38Reported by KittySploitType 
kittysploit
 kittysploit
🔗 kittysploit.com👁 1 Views

Jenkins lacks permission check in sidepanel, letting users without Overall/Read list agents.

Related
Refs
Code
ReporterTitlePublishedViews
Family
alpinelinux
AlpineLinux
CVE-2025-59474
17 Sep 202514:15
–alpinelinux
freebsd
FreeBSD
jenkins -- multiple vulnerabilities
17 Sep 202500:00
–freebsd
bdu_fstec
BDU FSTEC
The vulnerability of the Jenkins automation server, related to improper access control, allows a perpetrator to gain unauthorized access to protected information.
20 Oct 202500:00
–bdu_fstec
cgr
Chainguard
CVE-2025-59474 vulnerabilities
20 Sep 202513:30
–cgr
circl
Circl
CVE-2025-59474
23 Sep 202521:02
–circl
cnnvd
CNNVD
Jenkins 安全漏洞
17 Sep 202500:00
–cnnvd
cve
CVE
CVE-2025-59474
17 Sep 202513:17
–cve
cvelist
Cvelist
CVE-2025-59474
17 Sep 202513:17
–cvelist
euvd
EUVD
EUVD-2025-29723
3 Oct 202520:07
–euvd
nessus
Tenable Nessus
FreeBSD : jenkins -- multiple vulnerabilities (b9b668f0-96ec-4568-b618-2edea45d6933)
18 Sep 202500:00
–nessus
Rows per page
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Jenkins 2."""

import re
from kittysploit import *
from lib.protocols.http.http_client import Http_client


class Module(Scanner, Http_client):
    __info__ = {
        'name': 'Jenkins Sidepanel - Unauthorized Agent/Queue Exposure Detection',
        'description': 'Jenkins 2.527 and earlier, LTS 2.516.2 and earlier does not perform a permission check in the sidepanel of a page intentionally accessible to users lacking Overall/Read permission, allowing attackers without Overall/Read permission to list agent names through its sidepanel executors widget.',
        'author': ['KittySploit Team'],
        'severity': 'medium',
        'tags': ['web', 'scanner', 'cve', 'cve2025', 'jenkins', 'sidepanel', 'unauth', 'vkev', 'vuln'],
        'agent': {
            'risk': 'active',
            'effects': ['network_probe'],
            'expected_requests': 2,
            'reversible': True,
            'approval_required': False,
            'produces': ['tech_hints', 'risk_signals', 'endpoints'],
            'cost': 1.0,
            'noise': 0.3,
            'value': 1.0,
            'requires': {
                'min_endpoints': 0,
                'min_params': 0,
                'tech_hints_any': [],
                'tech_hints_all': [],
                'specializations_any': [],
                'risk_signals_any': [],
                'auth_session': False,
                'capabilities_any': [],
                'capabilities_all': [],
                'confidence_min': {},
                'confidence_min_any': {},
                'endpoint_pattern_any': [],
                'param_any': [],
                'api_surface_ready': False,
            },
            'chain': {
                'produces_capabilities': [
                    {
                        'capability': 'admin_surface',
                        'from_detail': '',
                    },
                ],
                'consumes_capabilities': [],
                'option_bindings': {},
                'suggested_followups': ['auxiliary/scanner/http/login_page_detector'],
            },
        },
        'references': [
            'https://www.jenkins.io/security/advisory/2025-09-17/',
            'https://nvd.nist.gov/vuln/detail/CVE-2025-59474',
            'https://medium.com/@Th3hound/exposing-jenkins-agents-without-auth-research-on-cve-2025-59474-ff95a2e7d22a',
        ],
        'cve': 'CVE-2025-59474',
    }

    def run(self):
        for path in ('/securityRealm/signup', '/jenkins/securityRealm/signup'):
            r = self.http_request(method="GET", path=path, allow_redirects=False)
            if not r or r.status_code != 200:
                continue
            body = r.text or ""
            body_any = ('Build Executor Status', 'Estado del ejecutor', 'id="executors"',)
            body_regexes = ('href="[^"]*/computer/[^"]*/?"',)
            if (any(m in body for m in body_any)) and (any(re.search(rx, body, 0) for rx in body_regexes)):
                self.set_info(
                    severity='medium',
                    reason="Jenkins Sidepanel - Unauthorized Agent/Queue Exposure detected",
                    path=path,
                )
                return True
        return False

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

28 Jul 2026 11:27Current
6.9Medium risk
Vulners AI Score6.9
CVSS 3.15.3
EPSS0.04908
SSVC
1