<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
  <meta http-equiv="Content-Language" content="en"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

  <title>Announcements 2020</title>

  <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
  <link href="/css/main.css" rel="stylesheet">
  <link href="/css/custom.css" rel="stylesheet">
  <link href="/highlighter/github-theme.css" rel="stylesheet">

  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
  <script type="text/javascript" src="/js/community.js"></script>
</head>
<body>

<a href="http://github.com/apache/struts" class="github-ribbon">
  <img style="position: absolute; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>

<header>
  <nav>
    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
            Menu
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
        </div>
        <div id="struts-menu" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Home<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/index.html">Welcome</a></li>
                <li><a href="/download.cgi">Download</a></li>
                <li><a href="/releases.html">Releases</a></li>
                <li><a href="/announce.html">Announcements</a></li>
                <li><a href="http://www.apache.org/licenses/">License</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Support<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/mail.html">User Mailing List</a></li>
                <li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
                <li><a href="/security.html">Reporting Security Issues</a></li>
                <li class="divider"></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
                <li class="divider"></li>
                <li><a href="/maven/project-info.html">Maven Project Info</a></li>
                <li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
                <li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Documentation<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/birdseye.html">Birds Eye</a></li>
                <li><a href="/primer.html">Key Technologies</a></li>
                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
                <li class="divider"></li>
                <li><a href="/getting-started/">Getting Started</a></li>
                <li><a href="/security/">Security Guide</a></li>
                <li><a href="/core-developers/">Core Developers Guide</a></li>
                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
                <li><a href="/plugins/">Plugins</a></li>
                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
                <li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Contributing<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/youatstruts.html">You at Struts</a></li>
                <li><a href="/helping.html">How to Help FAQ</a></li>
                <li><a href="/dev-mail.html">Development Lists</a></li>
                <li><a href="/contributors/">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/submitting-patches.html">Submitting patches</a></li>
                <li><a href="/builds.html">Source Code and Builds</a></li>
                <li><a href="/coding-standards.html">Coding standards</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Contributors+Guide">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/release-guidelines.html">Release Guidelines</a></li>
                <li><a href="/bylaws.html">PMC Charter</a></li>
                <li><a href="/volunteers.html">Volunteers</a></li>
                <li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
                <li><a href="/updating-website.html">Updating the website</a></li>
              </ul>
            </li>
            <li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
          </ul>
        </div>
      </div>
    </div>
  </nav>
</header>


<article class="container">
  <section class="col-md-12">
    <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/announce.md" title="Edit this page on GitHub">Edit on GitHub</a>
    
    <h1 class="no_toc" id="announcements-2020">Announcements 2020</h1>

<ul id="markdown-toc">
  <li><a href="#a20201208" id="markdown-toc-a20201208">08 December 2020 - Potential RCE when using forced evaluation - CVE-2020-17530</a></li>
  <li><a href="#a20201206" id="markdown-toc-a20201206">06 December 2020 - Struts 2.5.26 General Availability</a></li>
  <li><a href="#a20200928" id="markdown-toc-a20200928">28 September 2020 - Struts 2.5.25 General Availability</a></li>
  <li><a href="#a20200813" id="markdown-toc-a20200813">13 August 2020 - Security Advice: Announcing CVE-2019-0230 (Possible RCE) and CVE-2019-0233 (DoS) security issues</a></li>
</ul>

<p class="pull-right">
  Skip to: <a href="announce-2019.html">Announcements - 2019</a>
</p>

<h4 id="a20201208">08 December 2020 - Potential RCE when using forced evaluation - CVE-2020-17530</h4>

<p>The Apache Struts Security team would like to announce that forced OGNL evaluation, when evaluated on raw user input 
in tag attributes, may lead to remote code execution.</p>

<p><strong>Problem</strong></p>

<p>Some of the tag’s attributes could perform a double evaluation if a developer applied forced OGNL evaluation 
by using the <code class="highlighter-rouge">%{...}</code> syntax. Using forced OGNL evaluation on untrusted user input can lead to a Remote Code Execution 
and security degradation.</p>

<p><strong>Solution</strong></p>

<p>Avoid using forced OGNL evaluation on untrusted user input, and/or upgrade to Struts 2.5.26 which checks if expression 
evaluation won’t lead to the double evaluation.</p>

<p>Please read our Security Bulletin <a href="https://cwiki.apache.org/confluence/display/WW/S2-061">S2-061</a> for more details.</p>

<p>This vulnerability was identified by:</p>
<ul>
  <li>Alvaro Munoz - pwntester at github dot com</li>
  <li>Masato Anzai of Aeye Security Lab, inc.</li>
</ul>

<p><strong>All developers are strongly advised to perform this action.</strong></p>

<h4 id="a20201206">06 December 2020 - Struts 2.5.26 General Availability</h4>

<p>The Apache Struts group is pleased to announce that Struts 2.5.26 is available as a “General Availability”
release. The GA designation is our highest quality grade.</p>

<p>Apache Struts 2 is an elegant, extensible framework for creating enterprise-ready Java web applications.
The framework has been designed to streamline the full development cycle, from building, to deploying,
to maintaining applications over time.</p>

<p>Below is a full list of all changes:</p>

<ul>
  <li>Junit plugin does not push ACTION_MAPPING into the context resulting in NPE</li>
  <li>Struts2 StaticParametersInterceptor’s addParametersToContext method is not working as expected</li>
</ul>

<blockquote>
  <p>Please read the <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.26">Version Notes</a> to find more details about performed 
bug fixes and improvements.</p>
</blockquote>

<p><strong>All developers are strongly advised to perform this action.</strong></p>

<p>The 2.5.x series of the Apache Struts framework has a minimum requirement of the following specification versions:
Servlet API 2.4, JSP API 2.0, and Java 7.</p>

<p>Should any issues arise with your use of any version of the Struts framework, please post your comments to the user list, 
and, if appropriate, file <a href="https://issues.apache.org/jira/projects/WW/">a tracking ticket</a>.</p>

<p>You can download this version from our <a href="download.cgi#struts-ga">download</a> page.</p>

<h4 id="a20200928">28 September 2020 - Struts 2.5.25 General Availability</h4>

<p>The Apache Struts group is pleased to announce that Struts 2.5.25 is available as a “General Availability”
release. The GA designation is our highest quality grade.</p>

<p>Apache Struts 2 is an elegant, extensible framework for creating enterprise-ready Java web applications.
The framework has been designed to streamline the full development cycle, from building, to deploying,
to maintaining applications over time.</p>

<p>Below is a full list of all changes:</p>

<ul>
  <li>Package Level Properties in Global Results</li>
  <li>AbstractMatcher adds values to the map passed into replaceParameters</li>
  <li>Minor bug in single file upload example of the Showcase application</li>
  <li>Unable to set long pathname variables</li>
  <li>s:set with empty body</li>
  <li>AliasInterceptor doesn’t properly handle Parameter.Empty</li>
  <li>Improve build behaviour on JDK9+</li>
  <li>Update multiple Struts 2.5.x libraries / Maven build plugin versions</li>
  <li>Upgrade OSGi to the latest version</li>
</ul>

<blockquote>
  <p>Please read the <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.25">Version Notes</a> to find more details about performed 
bug fixes and improvements.</p>
</blockquote>

<p><strong>All developers are strongly advised to perform this action.</strong></p>

<p>The 2.5.x series of the Apache Struts framework has a minimum requirement of the following specification versions:
Servlet API 2.4, JSP API 2.0, and Java 7.</p>

<p>Should any issues arise with your use of any version of the Struts framework, please post your comments to the user list, 
and, if appropriate, file <a href="https://issues.apache.org/jira/projects/WW/">a tracking ticket</a>.</p>

<p>You can download this version from our <a href="download.cgi#struts-ga">download</a> page.</p>

<h4 id="a20200813">13 August 2020 - Security Advice: Announcing CVE-2019-0230 (Possible RCE) and CVE-2019-0233 (DoS) security issues</h4>

<p>Two new <a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletin">Struts Security Bulletins</a> have been issued for Struts 2 by the Apache Struts Security Team:</p>

<ul>
  <li><a href="https://cwiki.apache.org/confluence/display/ww/s2-059">S2-059</a> - Forced double OGNL evaluation, when evaluated on raw user input in tag attributes, may lead to remote code execution (CVE-2019-0230)</li>
  <li><a href="https://cwiki.apache.org/confluence/display/ww/s2-060">S2-060</a> - Access permission override causing a Denial of Service when performing a file upload (CVE-2019-0233)</li>
</ul>

<p>Both issues affect Apache Struts in the version range 2.0.0 - 2.5.20. The current version 2.5.22, which was released in November 2019, is not affected.</p>

<p><a href="https://cwiki.apache.org/confluence/display/ww/s2-059">CVE-2019-0230</a> has been reported by Matthias Kaiser, Apple Information Security.
By design, Struts 2 allows developers to utilize forced double evaluation for certain tag attributes.
When used with unvalidated, user modifiable input, malicious OGNL expressions may be injected.
In an ongoing effort, the Struts framework includes mitigations for limiting the impact of injected expressions, but Struts before 2.5.22 left an attack vector open which is addressed by this report.
<strong>However, we continue to urge developers building upon Struts 2 to <a href="https://struts.apache.org/security/#use-struts-tags-instead-of-raw-el-expressions">not use <code class="highlighter-rouge">%{...}</code> or <code class="highlighter-rouge">${...}</code> syntax referencing unvalidated user modifiable input in tag attributes </a>, since this is the ultimate fix for this class of vulnerabilities.</strong></p>

<p><a href="https://cwiki.apache.org/confluence/display/ww/s2-060">CVE-2019-0233</a> has been reported by Takeshi Terada of Mitsui Bussan Secure Directions, Inc.
In Struts before 2.5.22, when a file upload is performed to an Action that exposes the file with a getter, an attacker may manipulate the request such that the working copy of the uploaded file or even the container temporary upload directory may be set to read-only access. As a result, subsequent actions on the file or file uploads in general will fail with an error.</p>

<p>Both issues are already fixed in Apache Struts <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.22">2.5.22</a>, which was released in November 2019.</p>

<p><strong>We strongly recommend all users to <a href="download.cgi#struts-ga">upgrade</a> to Struts 2.5.22, if this has not been done already.</strong></p>

<p>The Apache Struts Security Team would like to thank the reporters for their efforts and their practice of responsible disclosure, as well as their help while investigating the report and coordinating public disclosure.</p>

<p class="pull-right">
  Skip to: <a href="announce-2019.html">Announcements - 2019</a>
</p>

<p class="pull-left">
  <strong>Next:</strong>
  <a href="kickstart.html">Kickstart FAQ</a>
</p>

  </section>
</article>


<footer class="container">
  <div class="col-md-12">
    Copyright &copy; 2000-2018 <a href="http://www.apache.org/">The Apache Software Foundation </a>.
    All Rights Reserved.
  </div>
  <div class="col-md-12">
    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
    trademarks of The Apache Software Foundation.
  </div>
  <div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>

<script>!function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (!d.getElementById(id)) {
    js = d.createElement(s);
    js.id = id;
    js.src = "//platform.twitter.com/widgets.js";
    fjs.parentNode.insertBefore(js, fjs);
  }
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>

<div id="fb-root"></div>

<script>(function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s);
  js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>


</body>
</html>
