Skip to main content

Apache Commons BCEL CVE-2026-105111

| EUVDEUVD-2026-93972 LOW
Cross-site Scripting (XSS) (CWE-79)
2026-10-06 security@apache.org GHSA-vpf7-2j6x-pp68
2.3
CVSS 4.0 · Vendor: apache
View

Attack ChainAIDerived

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

  1. Access
    Craft class file with XSS payload in names
  2. Delivery
    Submit to a Class2HTML report pipeline
  3. Exploit
    Payload written unescaped into HTML report
  4. Execution
    Operator opens report in browser
  5. Impact
    Script executes in viewer's browser context

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

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

Exploitation Conditions

Exploitation requires that the deployment actually uses BCEL's Class2HTML utility (classes in org.apache.bcel.util such as Class2HTML, AttributeHTML, CodeHTML, ConstantHTML) to generate HTML reports from class files that are possibly attacker-controlled, and that a victim subsequently opens the generated report in a browser (UI:P). The payload is carried in class-file-derived strings (anchors, type/class names, field/method names, attribute values) that the emitters wrote into HTML without escaping. Limiting factors: this is not reachable in normal library use of BCEL (bytecode parsing/manipulation) - only the report-generation feature is affected; the attacker must get their crafted class file into the report pipeline, and a human must view the resulting HTML, so there is no fully automated/unattended exploitation path. No special server configuration is needed beyond use of the Class2HTML feature itself.

Impact

This is a low-priority, high-conditionality issue despite the CVSS:4.0 vector showing AV:N/AC:L/PR:N. The vendor-assigned CVSS 4.0 base score is only 2.3, and the signals are internally consistent: the vulnerable system suffers no impact (VC:N/VI:N/VA:N), with only low confidentiality/integrity impact against a subsequent system (SC:L/SI:L) - i.e., the browser rendering the generated HTML report, which is the classic signature of XSS rather than direct server compromise. Two metrics strongly dampen real-world risk: AT:P (a specific attack requirement must be met - namely that Class2HTML is run against attacker-controlled class files) and UI:P (a victim must open the generated report). Exploitation status is 'no public exploit identified at time of analysis': the only references are the fix commit and the Apache announcement thread, not exploit code. No EPSS score and no CISA KEV listing were provided; absence of these is expected for a low-severity library-tooling XSS and should not be read as either elevated or suppressed risk. The one caveat worth flagging: PR:N/UI:P describe the abstract attacker, but exploitation realistically depends on an uncommon operational workflow (feeding untrusted bytecode into Class2HTML and publishing/viewing the resulting report), so defenders should treat the deployment precondition, not the CVSS vector, as the true gating factor.

Exploit ScenarioDerived

An attacker crafts a Java class file whose names or attribute strings embed an HTML/JavaScript payload and gets it into a workflow (e.g., an analysis pipeline or shared JAR) where an operator runs BCEL's Class2HTML to produce browsable reports. Class2HTML's emitters write these attacker-controlled strings into the HTML without escaping, so when the operator opens the report the payload executes as stored XSS in their browser. No public exploit code is identified; exploitation requires both low attack complexity and that a victim view the generated report (UI:P).

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 06, 2026

Stored cross-site scripting in the Class2HTML report generator shipped with Apache Commons BCEL before 6.13.0 lets attacker-controlled strings from a Java class file (class, field and method names, constant-pool entries, attribute values and anchors) be written into generated HTML reports without escaping, so script executes in the browser of anyone who opens the report. The issue is unauthenticated (CVSS 4.0 PR:N) but highly conditional: the deployment must actually use the Class2HTML/AttributeHTML/CodeHTML/ConstantHTML utilities to render HTML from class files an attacker can influence, and a victim must then open the resulting report (UI:P), which is why the CVSS 4.0 base score is only 2.3 because attack requirements are present (AT:P) even though the independent assessment rates the same flaw 7.1 under CVSS 3.1 with scope change (S:C). This is not reachable through ordinary BCEL bytecode parsing or manipulation; no public exploit has been identified at time of analysis and the flaw is fixed in 6.13.0.

RemediationAI

Vendor-released patch: Apache Commons Commons BCEL 6.13.0, which adds output escaping to Class2HTML.toHTML and a URL-scheme-safe toHTMLRef used by all emitters; upgrade the org.apache.commons:commons-bcel dependency to 6.13.0 and rebuild any cached report artifacts generated with older versions, since previously produced HTML files remain poisoned. If upgrading is not immediately possible, the most effective compensating control is to stop invoking Class2HTML and its sibling emitters against untrusted or externally supplied class files - this fully removes the attack surface at the cost of losing the HTML report feature, while core BCEL parsing/manipulation remains safe to use. Where reports must still be generated for untrusted input, treat the output as hostile: serve it from a separate origin with no cookies, sessions or privileged APIs, or open the files locally in a sandboxed browser profile, and apply a restrictive Content-Security-Policy (script-src 'none') to the report directory so any residual injected markup cannot execute; both measures reduce usability of the report only marginally but do not remove the underlying stored payload. In applications that accept uploaded class files, validate or re-compile inputs before rendering and quarantine generated reports rather than publishing them from a trusted origin.

Affected VersionsENISA

Apache Commons BCEL 0 <fb72c225cbc6ec3d94060ed6edb269f07428d504
Apache Commons BCEL 0 <6.13.0

Affected Packages

euvd apache_commons_bcel fix: 6.13.0

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

The root cause is CWE-79 (improper neutralization of input during web page generation). Apache Commons BCEL's org.apache.bcel.util package contains a set of emitters - Class2HTML, AttributeHTML, CodeHTML and ConstantHTML - that render a disassembled class file as a static HTML report. These emitters interpolated raw constant-pool strings directly into HTML markup: Anchor/attribute text in AttributeHTML, HREF targets and link text built from class/type names in Class2HTML.referenceType, field references in CodeHTML.codeToHTML, and method/field class links in ConstantHTML.writeConstant. Because a class file's UTF-8 constant-pool entries are fully attacker-controllable, a crafted class file can inject markup or a javascript: URL that is persisted into the generated report and executes when a browser opens it (stored XSS). The upstream fix (commit fb72c225cbc6ec3d94060ed6edb269f07428d504) adds full HTML escaping of &, ", ', < and > in Class2HTML.toHTML and routes all emitter output through it, and introduces toHTMLRef, which replaces ':' with '_' before escaping so a crafted name cannot smuggle a URL scheme such as javascript: into an HREF. Notably, BCEL's core bytecode parsing and generation paths are unaffected - only the documentation/report-generation utility is in scope.

Know when Java 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 (apache) PRIMARY 2.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
vuln.today AI 6.1 MEDIUM

Attacker-supplied class file can arrive over the network (AV:N) with no privileges (PR:N), but a victim must open the report (UI:R); XSS executes in a different security authority (S:C) with low C/I and no availability impact.

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

Primary rating from Vendor (apache).

CVSS VectorVendor: apache

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

Lifecycle Timeline

2
Patch available
Oct 06, 2026 - 21:05 EUVD
CVE Published
Oct 06, 2026 - 20:17 cve.org
LOW 2.3

DescriptionCVE.org

Improper neutralization of input during web page generation ('cross-site scripting') vulnerability in Apache Commons BCEL.

This only happens when you're using Class2HTML to generate webpages for possibly-attacker-controlled class files, where Class2HTML emitters write attacker class-file strings into HTML unescaped (stored XSS in reports).

This issue affects Apache Commons BCEL: before 6.13.0.

Users are recommended to upgrade to version 6.13.0, which fixes the issue.

Threat Intelligence Overview

EPSS Score
0.3%
Top 85% exploitable
Prevalence
Medium
BCEL is a common Java library, but the vulnerable Class2HTML report tool is rarely used
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 LOW
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

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