Looking for the vulnerability index of Invicti's legacy products?
JSF ViewState client side storage - Vulnerability Database

JSF ViewState client side storage

Description

JavaServer Faces (JSF) is a Java-based framework for building web application user interfaces. JSF ViewState can be stored either server-side or client-side. This application is configured to use client-side ViewState storage, which transmits application state data to the user's browser. Client-side storage poses significant security risks because ViewState data can be intercepted, modified, or analyzed by attackers. Unless the ViewState is properly encrypted and integrity-protected, sensitive information may be exposed or manipulated, leading to various security vulnerabilities.

Remediation

Change the ViewState storage method from client-side to server-side to eliminate the risk of ViewState tampering and information disclosure. To configure server-side storage, add the following configuration to your web.xml deployment descriptor:

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>

If client-side storage is absolutely required for your application architecture, ensure that:
1. ViewState encryption is enabled using a strong encryption algorithm
2. Message Authentication Code (MAC) validation is configured to detect tampering
3. Sensitive data is never stored in ViewState
4. The JSF implementation and all dependencies are kept up-to-date with security patches

After making configuration changes, thoroughly test the application to ensure proper functionality and verify that ViewState is no longer visible in client-side HTML responses.

Related Vulnerabilities