CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-FP43-VJ7G-PG92

GHSA-FP43-VJ7G-PG92: Multi-Vector Security Vulnerabilities in OmniFaces JSF Utility Library

Alon Barad
Alon Barad
Software Engineer

Jul 25, 2026·5 min read·3 visits

Executive Summary (TL;DR)

OmniFaces versions prior to 2.7.33 contained flaws allowing arbitrary resource access, memory exhaustion, XSS via o:hashParam, and WebSocket hijacking, all mitigated in 2.7.33.

A multi-vector vulnerability advisory in the OmniFaces JavaServer Faces (JSF) utility library covers flaws leading to unauthenticated arbitrary file access, memory exhaustion (DoS), cross-site scripting (XSS), and WebSocket push channel hijacking.

Vulnerability Overview

The vulnerability advisory GHSA-FP43-VJ7G-PG92 covers multiple security boundary bypasses and unhardened code pathways within the OmniFaces utility library for JavaServer Faces (JSF). These weaknesses exist across several core handlers: the combined resource handler, the source-map handler, the hash parameter AJAX component, and the push/WebSocket message endpoint. These flaws expose applications to unauthorized file disclosure, unauthenticated denial of service (DoS) via memory exhaustion, cross-site scripting (XSS), and session hijacking.

An external client can interact with these unauthenticated HTTP and WebSocket endpoints to read internal configuration templates or trigger uncontrolled resource consumption on the application server. The weaknesses were analyzed and subsequently resolved in OmniFaces version 2.7.33.

Root Cause Analysis

The primary weakness in the CombinedResourceHandler stems from the reconstruction of resource identifiers from user-controlled parameters. OmniFaces serializes a collection of resources into a single, URL-safe, compressed Base64 identifier. When parsing requested identifiers, CombinedResourceInfo.get(String id) deserialized client-supplied data without validating the file extensions or directories of the requested files. This allows an attacker to construct a valid resource ID containing path-traversal strings and target non-CSS or non-JS files such as internal .xhtml templates.

Additionally, the decompression utility Utils.unserializeURLSafe did not constrain the output stream length during inflation. A small, compressed payload could be crafted to expand into a massive array of resource names in memory, causing a Zip Bomb denial of service. The caching of reconstructed client-side identifiers also introduced an unbounded growth vector, as every unique request permanently populated the static CACHE map.

Similarly, the SourceMapResourceHandler used an unbounded map lookup mechanism. When a client requested a non-existent source map, computeIfAbsent inserted the key paired with an empty string. An attacker could flood the handler with unique, randomized paths, resulting in memory exhaustion. Finally, the WebSocket handler failed to verify the owning session of view-scoped or session-scoped channel IDs, allowing unauthorized connection handshakes.

Code-Level Patch Analysis

OmniFaces version 2.7.33 resolved these vulnerabilities through several modifications. In CombinedResourceInfo.java, the decompression routine was restricted using a maximum output constraint. The deserialization threshold was capped at 64 KiB to prevent memory exhaustion from zip-bomb payloads:

// Hardening decompression length
private static final int MAX_UNSERIALIZED_LENGTH = 64 * 1024;

Additionally, a validation method isCombinable was added to ensure only stylesheet and script files can be processed during reconstruction:

private static boolean isCombinable(Set<ResourceIdentifier> resourceIdentifiers) {
    for (ResourceIdentifier resourceIdentifier : resourceIdentifiers) {
        String name = resourceIdentifier.getName();
        if (name == null) {
            return false;
        }
        String lowerCaseName = name.toLowerCase();
        if (!lowerCaseName.endsWith(CombinedResourceHandler.EXTENSION_CSS) && !lowerCaseName.endsWith(CombinedResourceHandler.EXTENSION_JS)) {
            return false;
        }
    }
    return true;
}

The WebSocket handshake validation was updated in SocketEndpoint.Configurator to retrieve the HTTP Session and assert that the session registered the requested WebSocket channel identifier prior to allowing connection upgrade.

Exploitation & Attack Scenarios

Exploitation of the combined resource handler requires an attacker to construct a Base64-encoded, deflated resource string containing a path-traversal indicator. A script can generate this payload and make an HTTP request to the resource endpoint. This forces the application server to decompress the path, locate the internal configuration file, and return its contents to the client.

To hijack a WebSocket channel, an attacker must acquire the private channel UUID of a victim. Because the application server did not compare the WebSocket handshake session with the session that registered the channel identifier, the attacker could establish a direct WebSocket connection using the stolen identifier. The server would then deliver view-scoped or session-scoped push messages directly to the unauthorized connection.

Impact Assessment

The collective impact of these vulnerabilities affects confidentiality, availability, and integrity. The arbitrary file disclosure allows attackers to view proprietary source code, application templates, and server configurations, facilitating further analysis and targeted attacks.

Memory exhaustion vectors (via the inflation of combined resource IDs and the unbounded static maps in the source-map cache) enable remote, unauthenticated attackers to systematically deplete the Java Virtual Machine heap memory. This leads to OutOfMemoryError failures, rendering the application unavailable. The WebSocket session hijacking exposes private, session-specific updates directly to unauthorized clients, while the XSS in the hash parameter component allows executing arbitrary JavaScript code within the victim's session.

Remediation & Defense-in-Depth

The primary remediation strategy is upgrading the org.omnifaces:omnifaces dependency to version 2.7.33 or higher. This version implements strict input limits, sanitizes parameters, enforces type restrictions, and secures WebSocket handshake logic.

For defense-in-depth, configure Web Application Firewall (WAF) rules to detect and intercept anomalous queries directed to /javax.faces.resource/ containing combined resource library components (ln=omnifaces.combined). Implement connection limits and request timeouts to minimize the impact of resource exhaustion attempts on your application containers. Ensure WebSocket-capable proxies and load balancers preserve session cookies to allow correct authorization validation during the handshake phase.

Fix Analysis (4)

Technical Appendix

CVSS Score
7.5/ 10

Affected Systems

OmniFaces

Affected Versions Detail

Product
Affected Versions
Fixed Version
OmniFaces
OmniFaces
< 2.7.332.7.33
AttributeDetail
CWE IDCWE-22, CWE-79, CWE-285, CWE-400, CWE-409
Attack VectorNetwork
CVSS Score7.5 (High)
Exploit StatusProof of Concept

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access

References & Sources

  • [1]GitHub Security Advisory GHSA-FP43-VJ7G-PG92

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•4 minutes ago•GHSA-GM3R-Q2WP-HW87
8.7

GHSA-gm3r-q2wp-hw87: Quadratic-Time Denial of Service via Flag-Protection in Shescape

A high-severity algorithmic-complexity vulnerability in the Node.js library Shescape leads to a Quadratic-Time Denial of Service (DoS) when flag protection is enabled. By supplying inputs containing repetitive control characters and hyphens, remote attackers can trigger an inefficient nested loop in Shescape's argument-composition logic, blocking the Node.js single-threaded event loop and causing total application Denial of Service.

Amit Schendel
Amit Schendel
0 views•7 min read
•about 2 hours ago•GHSA-FWJX-9P69-H25H
6.3

GHSA-FWJX-9P69-H25H: Terminal Escape Sequence Injection in Oh My Posh

Oh My Posh prior to version 29.35.1 is vulnerable to terminal escape sequence injection. Dynamic strings from directory names or Git repository metadata are written to the prompt output without neutralization, enabling unauthenticated remote code execution, clipboard hijacking, or terminal DoS when users navigate to malicious folders.

Amit Schendel
Amit Schendel
4 views•8 min read
•about 3 hours ago•GHSA-6XJ8-QV9J-XCJQ
7.8

GHSA-6XJ8-QV9J-XCJQ: Arbitrary Command Execution via Template Injection in Oh My Posh

A critical-severity template injection vulnerability in Oh My Posh allows for unauthenticated arbitrary command execution. This issue occurs when a user navigates their shell into a directory whose name contains malicious Go template syntax, which is subsequently parsed and executed by the prompt engine.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 4 hours ago•GHSA-3R53-75J5-3G7J
5.6

GHSA-3r53-75j5-3g7j: Prototype Pollution in Quasar Framework extend Utility

A prototype pollution vulnerability (CWE-1321) in the Quasar framework's utility function 'extend' allows unauthenticated remote attackers to modify the global Object.prototype. This vulnerability can lead to application-level logic bypasses, denial of service, or potentially arbitrary code execution depending on downstream implementation.

Alon Barad
Alon Barad
7 views•6 min read
•about 5 hours ago•GHSA-HMJ8-5XMH-5573
7.5

GHSA-HMJ8-5XMH-5573: Connection Denial of Service via Oversized DATA Frame in py-libp2p

A critical connection-level Denial of Service (DoS) vulnerability exists in the Yamux stream multiplexer implementation of py-libp2p (versions <= 0.6.0). The flaw allows unauthenticated or authenticated peers to permanently stall a Yamux multiplexed connection by transmitting a single malformed 12-byte header claiming an oversized payload while withholding the payload bytes.

Amit Schendel
Amit Schendel
6 views•7 min read
•about 6 hours ago•CVE-2026-16756
7.5

CVE-2026-16756: Slowloris Denial of Service via Resource Exhaustion in aws-smithy-http-server

An unauthenticated remote resource exhaustion vulnerability in Amazon aws-smithy-http-server enables denial-of-service (DoS) attacks. Affected versions do not enforce connection limits or header timeouts, allowing standard Slowloris techniques to block server operations.

Alon Barad
Alon Barad
7 views•7 min read