弁財天

ゴフマン「専門家を信じるのではなく、自分自身で考えて判断せよ」

Struts 1.x の脆弱性対応 update2

security-next.com→サポート終了「Apache Struts 1」に脆弱性 - NTTデータが修正プログラム

サポート終了「Apache Struts 1」に脆弱性 - NTTデータが修正プログラム
「Apache Struts 1」にあらたな脆弱性2件が判明した。公式サポート終了後も、独自に脆弱性への対応を行っているNTTデータでは、これらを解消する修正プログラムを公開した。
今回、あらたに外部からコンポーネントが操作されるおそれがある「CVE-2016-1181」や、入力値検証機能に関する「CVE-2016-1182」が判明したもの。脆弱性が悪用されると、サービス拒否や情報漏洩、コード実行などのおそれがあるという。
これを受け同社では、「Apache Struts 1.2.9 with Security Patch 3 contributed by TERASOLUNA」を開発。「Apache License, Version 2.0」のもと、提供を開始した。
同社は、「Apache Struts 1.2.9」をベースとしたフレームワーク「TERASOLUNA Server Framework for Java」を展開しており、「Apache Struts 1」のサポート終了後も、ベースとなる「Apache Struts 1.2.9」向けの修正プログラムを開発している。
2014年には「ClassLoader」の脆弱性「CVE-2014-0114」が判明したことを受け、「Apache Struts 1.2.9 sp1」で脆弱性を解消。また2015年には「CVE-2015-0899」への対応として「Apache Struts 1.2.9 sp2」をリリースしていた。
「TERASOLUNA Server Framework for Java」の利用者にも同アップデートを提供。「TERASOLUNA Server Framework for Java 2」における脆弱性対応版は、2016年度中にリリースする予定。
また「TERASOLUNA Server Framework for Java 2.0.6.1」から「同2.0.0.1」に関しては、拡張子直接アクセス禁止フィルタが正常に機能しない「CVE-2016-1183」が判明しており、同社では修正モジュール「PI-SJW-261-1」を用意している。
(Security NEXT - 2016/06/09 )
【外部からコンポーネントが操作されるおそれがある「CVE-2016-1181」や、入力値検証機能に関する「CVE-2016-1182」が判明】

blog.goo.ne.jp→ Struts1.X系に脆弱性の続きー1.Xは対応策がなくなっている(中間報告:その3):12時追加

Strutsに脆弱性があってもフィルターサーブレットを組み込めるので対応できるので、まぁ大した脆弱性じゃないな。騒ぎたいだけなんじゃね。w

itpro.nikkeibp.co.jp→「Strutsの脆弱性を突く攻撃を検知、早急な対策を」、ラック西本専務
「Struts1.xは2013年4月にサポートを終了したばかり。」一年前か。
まぁでもオープンソースのサポート終了なので、誰かパッチを作って自分であてる話になる。サポートが継続中のStruts2.x系でもフレームワークのテストが伴うので簡単には当てられないだろうな。だからインターセプターでフィルターするだけになってる。

しかしそんなラックもかなり怪しい会社なんだけど、Strutsの脆弱性を利用して何かやってのか?とか考えてしまう。

ぐは。2011年11月に死去。
nikkei.com→(おくやみ)三柴元氏が死去 ラックホールディングス会長

みしばちゃん死んじゃったのかー。 2011年11月てもろ放射能だな。 A&Iとニイウスの残骸のアイティークルーを吸収してラックになってる。 ニイウスはドラマ「半沢直樹」にナルセンて名前ででてきましたな。

Struts1.xの脆弱性の話をニイウスから半沢直樹に展開できるのはオレだけだろ。

struts.1045723.n5.nabble.com→[ANN][SECURITY] Struts 1 - CVE-2014-0114 -Mitigation Advice Available, Possible RCE Impact

Struts 1 has had its End-Of-Life announcement more than one year ago [3]. However, in a cross project effort the Struts team is looking for a correction or an improved mitigation path. Please stay tuned for further information regarding a solution.
Struts1.xはEnd Of Lifeだけどパッチを作成ちう。やはりラックのデマですな。

scip.ch→VulDB: Apache Struts 1 Class Loader privilege escalation
It is possible to mitigate the problem by applying the configuration setting param name="excludeParams". ん?Struts-2.xは設定で回避できるのか。

nca.gr.jp→Struts: ClassLoader の操作を許してしまう脆弱性 (CVE-2014-0094, CVE-2014-0112, CVE-2014-0113) について
(.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).* な正規表現でフィルターできればいい。

yyyank.blogspot.jp→【Struts脆弱性】サルでも分かるStrutsのClassloader脆弱性(CVE-2014-0094)(CVE-2014-0112)
ぐはは。めっけ。

Struts1系なら、サーブレットフィルター等が良いでしょう。正規表現で一致する場合は不正なリクエストと判断すべきです。 行うべきセキュリティ対策
「classloader」という文字列を含むリクエストパラメータを防ぐ必要があります。
Struts1系なら、サーブレットフィルター等が良いでしょう。正規表現で一致する場合は
不正なリクエストと判断すべきです。
正規表現はpiyologさんのエントリから引用します。
正規表現 公開元 影響緩和の有効性
(^|\W)[cC]lass\W*9 MBSD・LAC 有効
(.*\.|^|.*|\[('|"))(c|C)lass(\.|('|")]|\[).* Apache Software Foundation 有効



実装するとしたらこんな感じかな?(動作確認してません。ごめんなさい)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class RequestCheckFilter implements Filter {

  public void init(FilterConfig conf) throws ServletException {}

  
  public void doFilter(ServletRequest req, 
              ServletResponse res, FilterChain chain) 
              throws ServletException, IOException {

    // 正規表現パターンを生成
    Pattern p = Pattern.compile("(^|\W)[cC]lass\W*9");
    // リクエストパラメータ でループ
    Enumeration e = request.getParameterNames();
    while ( e.hasMoreElements() ) {
        String target = (String) e.nextElement();
        Matcher m = p.matcher(target);
        // パラメータに不正な文字列があった場合例外をthrow
        if (m.find()){
            throw new Exception("不正なリクエストパラメータです")
        }
    }
    
    
    // 後続実行
    chain.doFilter(req, res);

  }

  public void destroy() {
  }
}

フィルターサーブレットですな。Struts1.x系ならSJIS用のフィルターサーブレットを組み込んでるはずだから、それを修正するだけかも。

投稿されたコメント:

コメント
コメントは無効になっています。