![]()
更新日: 2017年04月17日
Apache Struts 2 の Jakarta Multipart parser には、Content-Type ヘッダに "multipart/form-data" を含む不正な HTTP 要求を受信した場合に、任意のコード実行を許してしまう脆弱性 (CVE-2017-5638) が存在し、結果として、脆弱性を悪用される可能性があります。
報告された脆弱性 (CVE-2017-5638) は既に侵害活動に利用されていますので、すみやかに対策版にアップデートしてください。
2017年03月06日
          Jakarta Multipart parser の脆弱性に関するセキュリティ情報(S2-045)が公開されました。同日、簡易的な検証コード(1)がリリースされました。
2017年03月07日
          攻撃コード作成につながる検証コード(2)がリリースされました。
2017年03月07日 10:12 CST
          任意のコマンド実行が可能で、攻撃に利用できる検証コード(3)がリリースされました。
2017年03月07日 06:21 UTC
          Metasploit-frameworkから検証コード(3)をベースとした検証コードがリリースされました。
2017年03月07日 15:36 UTC
          検証コード(3)をベースとした検証コードがリリースされました。
2017年03月08日
          Struts 2.5.10.1、Struts 2.3.32がリリースされました。
2017年03月21日
          Jakarta Multipart parser の脆弱性に関するセキュリティ情報(S2-046)が公開されました。
 CVE-2017-5638: Jakarta Multipart parser の脆弱性により、任意のコードが実行される
        
 CVSSv2 基本値
          CVSS:2.0/AV:N/AC:L/Au:N/C:C/I:C/A:C
          AV:攻撃元区分= ネットワーク
          AC:攻撃条件の複雑さ= 低
          Au:攻撃前の認証要否= 不要
          C:機密性への影響 (情報漏洩の可能性)= 全面的
          I:完全性への影響 (情報改ざんの可能性)= 全面的
          A:可用性への影響 (業務停止の可能性)= 全面的
        
 CVSSv3 基本値
          CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H/E:H/RL:O/RC:C
          AV:攻撃元区分= ネットワーク
          AC:攻撃条件の複雑さ= 低
          PR:必要な特権レベル= 不要
          UI:ユーザ関与レベル= 不要
          S:影響の想定範囲= 変更あり
          C:機密性への影響 (情報漏洩の可能性)= 高
          I:完全性への影響 (情報改ざんの可能性)= 高
          A:可用性への影響 (業務停止の可能性)= 高
        
 現状値 (2017年03月16日時点)
          E:攻撃される可能性= 容易に攻撃可能
          RL:利用可能な対策のレベル= 正式
          RC:脆弱性情報の信頼性= 確認済
        
 + cpe:/a:apache:struts:2.3.5 - cpe:/a:apache:struts:2.3.31
          + cpe:/a:apache:struts:2.5 - cpe:/a:apache:struts:2.5.10
        
Apache Struts 上で稼働するアプリケーションが不正な HTTP 要求を受信した場合、そのサーバ上で任意のコード実行、アプリケーション、データなどに対する不正な操作を許してしまう可能性があります。
Apache Struts を修正バージョンにアップデートしてください。
        
(対策) 修正バージョンへのアップデート
2017年03月08日、Apache Struts 2.5.10.1、Struts 2.3.32リリースがリリースされました。
(回避策) Content-Type / Content-Dispostion / Content-Length ヘッダに "multipart/form-data" を含む不正なリクエストの遮断
既に攻撃で使用されている Content-Type ヘッダには、OgnlContext のような文字列を含んでいることから、このような文字列を含んでいる場合には、不正なリクエストとして遮断します。
[注]
            S2-045では、パーサを JakartaMultipartRequest から他のパーサに変更する回避策を提示しています(You can also switch to a different implementation of the Multipart parser.)。このうち、Struts 2.3.18 からサポートされた JakartaStreamMultiPartRequest については、稼働条件によっては、迂回できる攻撃手法を確認しましたので、修正バージョンへのアップデートを推奨します。
2017年03月15日:JakartaStreamMultiPartRequest に変更しても攻撃可能なことを確認
            2017年03月16日:JPCERT/CC、IPA に通知
            2017年03月17日:JPCERT-AT-2017-0009 の更新を確認、HIRT-PUB17006 の公開
            2017年03月21日:S2-046と同じ問題であることを確認
日立製品ならびに、日立が提供する他社品(*印)の対応状況は、次の通りです。
セキュリティ情報 HIRT-PUB17006 を公開しました。
 + HiRDB Control Manager - Server
            hitachi-sec-2017-110: HiRDB Control Manager - Serverにおける脆弱性
          
        
次の脆弱性識別番号が付与されています。
        
        
        
JakartaStreamMultiPartRequest パーサに変更しても攻撃可能なことを確認しました。
検証環境は、次の通りです。
            + Ubuntu 16.04.1 (Linux 4.4.0-66-generic)
            + Tomcat 8.0.32
            + Struts 2.3.30
HTTP 要求ヘッダに addHeader('X-Check-Struts', 'S2-045 VULNERABLE!!') を設定して送信した結果、指定した通りに HTTP 応答ヘッダに設定されました。
            
            図2:JakartaStreamMultiPartRequest に変更した際の検証結果
          
担当:寺田、大西
グローバルサイン:
          重要な電子文書にデジタル署名。広報にも役立っています