【お知らせ】Red Hat Enterprise Linux 6.5環境上のHinemosに関する注意喚起

 

本日は、Red Hat Enterprise Linux 6.5環境上のHinemosに関して、重大な注意喚起がございます。

 

 

チケット情報

#2477 【管理チケット】jdk.xml.entityExpansionLimit対応 ★★★
#2478 jdk.xml.entityExpansionLimit対応(Hinemos ver 4.0.3用) ★★★
#2479 jdk.xml.entityExpansionLimit対応(Hinemos ver 4.1.1用) ★★★

 

事象

 Hinemosマネージャ及びHinemosエージェントが、特定のOpenJDK上で一定期間動作すると、
 Hinemosコンポーネント間の通信が行えなくなる。

 

発生バージョン

 ver4.0.0~ver4.0.3
 ver4.1.0~ver4.1.1

 

対象機能

 Hinemosエージェントを利用する全機能

 

  ver4.0
   ジョブ管理、ログファイル監視、カスタム監視

  ver4.1
   ジョブ管理、ログファイル監視、カスタム監視、Windowsイベント監視

 

発生条件

発生環境

 Hinemosマネージャ、エージェントが以下のRed Hat Enterprise Linux(RHEL)及び
 OpenJDKのバージョンを利用していること

 

 RHEL 6.5(32bit/64bit)
  以下のメディア付属の OpenJDKと、それより後の アップデート rpmパッケージで発生。
   java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6
   java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6

 RHEL 6.4
  以下のもの以後の アップデート rpmパッケージで発生します。
   java-1.7.0-openjdk-1.7.0.45-2.4.3.2.el6_4
   java-1.6.0-openjdk-1.6.0.0-1.65.1.11.14.el6_4

 

発生環境外

 以下の アップデート rpmパッケージ以前では発生しません。

 

 RHEL 5.10以前
  RHEL 5.10以前に対して提供されているOpenJDKについては、本事象は発生いたしません。
  RHEL 5.10以前に対してOpenJDKのUpdateを行っている場合は、本事象が発生する可能性があります。

 RHEL 6.3以前
  RHEL 6.3以前に対して提供されているOpenJDKについては、本事象は発生いたしません。
  RHEL 6.3以前に対してOpenJDKのUpdateを行っている場合は、本事象が発生する可能性があります。

 RHEL 6.4
  RHEL 6.4に対して提供されているOpenJDKについては、本事象は発生いたしません。
   java-1.7.0-openjdk-1.7.0.25-2.3.10.4.el6_4
   java-1.6.0-openjdk-1.6.0.0-1.65.1.11.13.el6_4

 

RHEL以外の環境について

 Windows
  HinemosのWindows用インストールパッケージにはOracle Javaを同梱しています。
  Hinemosが同梱するOracle Javaについては、本事象は発生いたしません。

 CentOS
  OSのパッケージ構成はRHELと同様です。
  RHELの発生環境、発生環境外の情報をご参照ください(例. CentOS 6.3⇒RHEL 6.3の情報を参照)。

 Oracle Linux
  OSのパッケージ構成はRHELと同様です。
  RHELの発生環境、発生環境外の情報をご参照ください(例. Oracle Linux 6.3⇒RHEL 6.3の情報を参照)。

 

注意事項

 Hinemosマネージャ及び、Hinemosエージェントにて、本事象が発生します。
  Hinemosマネージャ及び、Hinemosエージェントにおいて、起動直後は本事象は発生しません。
  Hinemosマネージャ及び、Hinemosエージェントの起動後に、ある程度日数が経過すると発生します。
  Hinemosのオプションによっては、オプション非適用環境より早く事象が発生する可能性があります。

 

 Hinemosマネージャが上記発生環境で動作する場合、Hinemosマネージャが全Hinemosエージェント、
 Hinemosクライアントに対して通信が行えなくなる
  (Hinemosマネージャが外部とSOAP通信が行えなくなります。)


 Hinemosエージェントが上記発生環境で動作する場合、該当エージェントのみで通信が行えなくなる
  (Hinemosエージェントが外部とSOAP通信が行えなくなります。)


 本事象を回避するには、上記環境に該当する全てのHinemosマネージャ及び、Hinemosエージェントにて
 パッチ適用が必要です。

 

事象詳細

 本事象が発生すると次の状況となる。

 

 1.Hinemosエージェントの全機能が動作しない

   - ジョブ管理機能が動作しない(ver4.0/4.1)
   - ログファイル監視の結果が通知されない(ver4.0/4.1)
   - カスタム監視の結果が通知されない(ver4.0/4.1)
   - Windowsイベント監視の結果が通知されない(4.1)

 

 2.HinemosクライアントがHinemosマネージャに接続できなくなる

  本事象の発生原因はOpenJDK6,7の特定バージョン以降より追加された機能による。
  OpenJDKのXML解析に関するDoSの脆弱性情報に関して、以下のCVEデータベースに対する影響である。
  (entityExpansionLimitを含むXML解析処理に対する制約が追加)

 

  CVE-2013-4002
  https://access.redhat.com/security/cve/CVE-2013-4002
  CVE-2013-5825
  https://access.redhat.com/security/cve/CVE-2013-5825

 

 

  具体的には以下の通り。

 

  Hinemosマネージャ、エージェント、クライアント間の通信は基本的にJAX-WSによるSOAP通信を行う。
  Hinemosエージェントからは定期的に設定変更の有無等の確認通信が行うが、設定変更が無ければ
  同一のSOAPメッセージを繰り返し通信することになる。

 

  同一のJAX-WSアプリの同一スレッドで64,001通のSOAPメッセージを受信し、処理しようとすると
  エラー(JAXP00010001)が発生する。
  OpenJDKの特定バージョン以降よりDoS攻撃に対応するため、entityExpansionLimitパラメタ導入され、
  このデフォルト設定値が64,000である。
  そして、64,001通のSOAPメッセージの処理(正確にはXML解析処理)を行うと、DoS攻撃の可能性として
  以降のSOAPメッセージの処理が行われなくなる。

 

  Hinemosの監視やジョブの設定変更有無にも影響するが、Hinemosクライアントから何も設定を
  行っていない状況の場合、約1か月の連続運転で本事象が発生する。

  特徴的なものとして、Hinemosのジョブが「Agent Timeout Error」になり、Hinemosエージェント側の
  ログ(agent.log)に以下のようなメッセージが表示される。

 

  [agent.log]
  -----------------
  WebServiceException Couldn't create SOAP message due to exception: Unable to create StAX reader or writer
  -----------------

 

  復旧方法としては、Hinemosマネージャ及び、Hinemosエージェントの再起動が必要となる。

  運用対処としては、Hinemosマネージャ、エージェントのJavaプロセスの起動時オプションに
  「-Djdk.xml.entityExpansionLimit=0」を追加することで、この制限を無視して既存のOpenJDKと同様の動作に変更できる。

 

修正に伴う動作変更

 Hinemosの連続運転に伴う上記「事象」を回避できる。


 [補足]
 ★★★:通常の使用状態でもクリティカルになる可能性・範囲の大きい内容
 ★★ :条件によってはクリティカルになる可能性・範囲が生じうる内容
 ★  :クリティカルになる可能性・範囲が低い内容

 

 

 

対処方法

本事象については、Hinemosマネージャ及び、Hinemosエージェントへのパッチ適用が必要です。
Hinemosエージェントについては、パッチを使用すると「エージェントアップデート」機能により、全エージェントに
一括配布が可能です。

 

Hinemosのパッチ入手については、Hinemosパートナー各企業までお問い合わせください。
Hinemosの保守サポートやオプション製品など、既存のご契約先がある場合は、同Hinemosパートナー企業までご相談ください。

以下では、パッチを使用せずに手動で「-Djdk.xml.entityExpansionLimit=0」の設定を追加して対処を行う方法を記載します。

 

パッチを適用しない場合の対処方法

Hinemosマネージャ

 Hinemosマネージャの起動オプションを指定する設定ファイルへ追記します。
 本設定の反映には、Hinemosマネージャの再起動が必要です。

 

 〇Hinemos ver4.0用
 /opt/hinemos/etc/jboss/run.confに以下を追加

 #### Hinemos : for entityExpansionLimit
 JAVA_OPTS="${JAVA_OPTS} -Djdk.xml.entityExpansionLimit=0"

 

 〇Hinemos ver4.1用
 /opt/hinemos/hinemos.cfgの以下の行を修正

 ### JVM
 JAVA_OPTS=""
 ↓(修正)
 ### JVM
 JAVA_OPTS="-Djdk.xml.entityExpansionLimit=0"

 

Hinemosエージェント for Linux

 Hinemosエージェント for Linuxの起動オプションを指定する起動スクリプトへ追記します。
 本設定の反映には、Hinemosエージェントの再起動が必要です。

 

 〇Hinemos ver4.0用
 /opt/hinemos_agent/bin/agent_start.shに以下を追加。

 ## for entityExpansionLimit
 JAVA_OPTS="${JAVA_OPTS} -Djdk.xml.entityExpansionLimit=0"

 

 〇Hinemos ver4.1用
 /opt/hinemos_agent/bin/agent_start.shに以下を追加。

 ## for entityExpansionLimit
 JAVA_OPTS="${JAVA_OPTS} -Djdk.xml.entityExpansionLimit=0"

 

Hinemosエージェント for Windows

 Hinemosプロジェクトのサイトで公開しているHinemosエージェント for Windowsに同梱されるJREについては
 本事象は発生しません。
 そのため、特に対処は不要です。

 

 

 Hinemosプロジェクト(SourceForge.JP)
 http://sourceforge.jp/projects/hinemos/