VYPR
High severity8.2NVD Advisory· Published Jul 4, 2016· Updated May 6, 2026

CVE-2016-1182

CVE-2016-1182

Description

ActionServlet.java in Apache Struts 1 1.x through 1.3.10 does not properly restrict the Validator configuration, which allows remote attackers to conduct cross-site scripting (XSS) attacks or cause a denial of service via crafted input, a related issue to CVE-2015-0899.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
org.apache.struts:struts-coreMaven
<= 1.3.10
struts:strutsMaven
<= 1.2.9

Affected products

28
  • Apache/Struts28 versions
    cpe:2.3:a:apache:struts:1.0:*:*:*:*:*:*:*+ 27 more
    • cpe:2.3:a:apache:struts:1.0:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.0.1:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.0.2:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.0:beta1:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.0:beta2:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.0:beta3:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.1:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.1:b1:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.1:b2:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.1:b3:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.1:rc1:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.1:rc2:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.0:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.1:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.2:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.3:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.4:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.5:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.6:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.7:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.8:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.2.9:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.3.10:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.3.5:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.3.6:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.3.7:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.3.8:*:*:*:*:*:*:*
    • cpe:2.3:a:apache:struts:1.3.9:*:*:*:*:*:*:*

Patches

1
eda3a79907ed

Fixed CVE-2016-1181 and CVE-2016-1182

2 files changed · +31 22
  • README.md+12 5 modified
    @@ -1,14 +1,21 @@
    -STRUTS
    -======
    +# STRUTS
     
     ![build status](https://circleci.com/gh/kawasima/struts1-forever.png?style=shield&circle-token=8f99c0e6c923ca570acda8c3640446fdacad2a47)
     
     This struts1's fork is for maintenance to fix the vulnerabilities.
     
    -$Id: README,v 1.18 2003/12/10 01:04:10 husted Exp $
    +## Requirements
     
    -Introduction (Original)
    -------------------------
    +Original Struts requires Java 1.4 or higher. But struts1-forever requires Java 1.5 or higher.
    +Because Commons-Beanutils 1.9.2 is used for preventing a dangerous population.
    +
    +## Fixed vulnerabilities
    +
    +- CVE-2014-0114
    +- CVE-2016-1181
    +- CVE-2016-1182
    +
    +## Introduction (Original)
     
     This subproject contains the source code for the "Struts" application support
     package, consisting of the following major components:
    
  • src/share/org/apache/struts/action/ActionServlet.java+19 17 modified
    @@ -1,14 +1,14 @@
     /*
    - * $Id$ 
    + * $Id$
      *
      * Copyright 2000-2005 The Apache Software Foundation.
    - * 
    + *
      * Licensed under the Apache License, Version 2.0 (the "License");
      * you may not use this file except in compliance with the License.
      * You may obtain a copy of the License at
    - * 
    + *
      *      http://www.apache.org/licenses/LICENSE-2.0
    - * 
    + *
      * Unless required by applicable law or agreed to in writing, software
      * distributed under the License is distributed on an "AS IS" BASIS,
      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    @@ -24,10 +24,7 @@
     import java.math.BigInteger;
     import java.net.MalformedURLException;
     import java.net.URL;
    -import java.util.ArrayList;
    -import java.util.Enumeration;
    -import java.util.Iterator;
    -import java.util.MissingResourceException;
    +import java.util.*;
     
     import javax.servlet.ServletContext;
     import javax.servlet.ServletException;
    @@ -327,7 +324,7 @@ public void init() throws ServletException {
                 initInternal();
                 initOther();
                 initServlet();
    -    
    +
                 getServletContext().setAttribute(Globals.ACTION_SERVLET_KEY, this);
                 initModuleConfigFactory();
                 // Initialize modules as needed
    @@ -336,7 +333,7 @@ public void init() throws ServletException {
                 initModuleDataSources(moduleConfig);
                 initModulePlugIns(moduleConfig);
                 moduleConfig.freeze();
    -    
    +
                 Enumeration names = getServletConfig().getInitParameterNames();
                 while (names.hasMoreElements()) {
                     String name = (String) names.nextElement();
    @@ -351,23 +348,23 @@ public void init() throws ServletException {
                     initModulePlugIns(moduleConfig);
                     moduleConfig.freeze();
                 }
    -    
    +
                 this.initModulePrefixes(this.getServletContext());
    -    
    +
                 this.destroyConfigDigester();
             } catch (UnavailableException ex) {
                 throw ex;
             } catch (Throwable t) {
     
                 // The follow error message is not retrieved from internal message
    -            // resources as they may not have been able to have been 
    +            // resources as they may not have been able to have been
                 // initialized
                 log.error("Unable to initialize Struts ActionServlet due to an "
                     + "unexpected exception or error thrown, so marking the "
                     + "servlet as unavailable.  Most likely, this is due to an "
                     + "incorrect or missing library dependency.", t);
                 throw new UnavailableException(t.getMessage());
    -        }    
    +        }
         }
     
         /**
    @@ -726,13 +723,13 @@ protected void parseModuleConfigFile(Digester digester, String path)
                 if (url == null) {
                     url = getClass().getResource(path);
                 }
    -            
    +
                 if (url == null) {
                     String msg = internal.getMessage("configMissing", path);
                     log.error(msg);
                     throw new UnavailableException(msg);
                 }
    -	    
    +
                 InputSource is = new InputSource(url.toExternalForm());
                 input = url.openStream();
                 is.setByteStream(input);
    @@ -1060,8 +1057,13 @@ protected void initInternal() throws ServletException {
          * @exception ServletException if we cannot initialize these resources
          */
         protected void initOther() throws ServletException {
    +        HashSet suppressProperties = new HashSet();
    +        suppressProperties.add("class");
    +        suppressProperties.add("multipartRequestHandler");
    +        suppressProperties.add("resultValueMap");
    +
             PropertyUtils.addBeanIntrospector(
    -                SuppressPropertiesBeanIntrospector.SUPPRESS_CLASS);
    +                new SuppressPropertiesBeanIntrospector(suppressProperties));
             PropertyUtils.clearDescriptors();
     
             String value = null;
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

23

News mentions

0

No linked articles in our index yet.