Explzh for Windows脆弱性情報や既知の不具合とその回避方法をご説明します。

Japanese | English
ソフトウエア情報ダウンロードFAQオンラインヘルプご登録方法

既知の不具合とその回避方法、制限事項、脆弱性情報など



 

Explzh における任意のファイルを作成される脆弱性

JVN 公開日:2018/07/13 14:00 最終更新日:2018/07/12 12:00

JVN#55813866 (Japanese)
JVN#55813866 (English)


【概要】
Explzh は、様々な書庫形式のファイルを圧縮・展開するための圧縮展開ソフトです。Explzh v.7.58 以前のバージョンは、 \\aaa\bbb\c.txt のようなパスの格納された書庫において、絶対ディレクトリ扱いで、作業ドライブのルートドライブ以下の、x:\aaa\bbb\c.txt として、(おそらく)意図しない場所へ展開されてしまいます。


【Explzh での対策】
不自然な path やファイル名文字(RLO Unicode文字を含む)が存在する場合は警告を表示、ディレクトリトラバーサルや Windows で扱えない path、扱えない文字に対しても扱えるよう 、展開前に path を Windows 用に最適化しております。 Explzh v.7.58 以前をお使いの方は、最新版へアップデート してください。


【謝辞】
JPCERT/CC様IPA 様、本脆弱性を発見・ご報告頂いた、NTTコミュニケーションズ株式会社 東内 裕二 氏に深く御礼申し上げます。


 

BGA32.DLL に関する脆弱性

JVN 公開日:2015/05/19 最終更新日:2015/05/20 12:58

JVN#78689801


【概要】
BGA32.DLL は、gza、bza 形式のファイルを圧縮・展開するためのライブラリです。BGA32.DLL には、旧バージョンの zlib ライブラリおよび bzip2 ライブラリの使用に起因するバッファオーバーフローの問題を含む複数の脆弱性が存在します。

しばらく対応されるのか様子をみますが、「対応されない」と判断した場合には、次回版以降は Explzh 側では BGA32.DLL の対応を取り止める QBga32.DLL を利用して対応するようにいたします。

現バージョン(v.7.26)以前の版では「gza、bza 形式のファイルを圧縮・展開を行わない」ようにして対処なさいますようお願いいたします。(下記対処方法に参照されている、QBga32.DLL を使う方法でご自身で対処されている場合は問題はありません。また、BGA32.DLL が存在している場合でも、gza、bza 形式の圧縮・展開の操作を行わない限りは本脆弱性の影響を受けることはございません。)

※Explzh 64bit 版では、元々 BGA32.DLL が利用できないので本脆弱性に関する問題は存在しません。

■追記(対処方法): (2015/05/19 20:20)
QBGA32.DLL (Kazuhiro Inaba 氏作) を利用することで本脆弱性を回避することも可能です。
詳細は下記の URL をご覧ください。

QBga32.DLL - kMonos.NET

Common Archivers Library - QBga32.DLL

 

Explzh、Archive decoder における実行ファイル読み込みに関する脆弱性

JVN 公開日:2010/10/20 PM 2:00

JVN#85599999 (Explzh) CVE-2010-3159
JVN#68536660 (Archive Decoder) CVE-2010-3160


【概要】
Explzh、Archive decoder における MS Windows のアプリケーション読み込みで、本来読み込むべきアプリケーションではなく、攻撃者が用意した偽アプリケーションを読み込んでしまう可能性のある脆弱性が存在します。


【想定される影響】
攻撃者が用意した同じモジュール名を偽った Windows アプリケーションを読み込んでしまった場合、任意のコードを実行される可能性があります。


【Explzh、Archive decoder での対策】
Windows アプリケーションのパスの検索方法を変更し、Windows フォルダ以外にあるアプリケーションを読み込まないようにして対策を行いました。
Explzh v.5.67 以前をお使いの方、Archive decoder v.1.23 以前をお使いの方は、最新版へアップデート してください。


【開発側として...】
'notepad', 'explorer', 'rundll32.exe' 等の Windows アプリケーションの殆ど (DLL も含む) は Windows アプリケーションであることの証明の署名がありません。
Windows アプリケーションにも 『Microsoft 製品であることを証明する署名』 を付けていただくか、
正規の Microsoft モジュールであることをチェックできる WinAPI を提供していただきたいと思いました。
参照: Explzh-ML


方法がありました。署名がなくとも、カタログを参照する事でチェックできます。
正規の Windows アプリケーションであるかをチェックする

※ちなみに Explzh では、ユーザが格納ファイルのアプリケーションを実行しようとした場合、実行前に、必ず、「実行モジュールの署名の正当性」のチェックが行われます。


【謝辞】
JPCERT/CC様IPA 様、本脆弱性を発見・ご報告頂いた、塩月 誠人 氏に深く御礼申し上げます。


 

Microsoft Windows における DLL 読み込みに関する脆弱性

JVN 公開日:2010/08/27 最終更新日:2016/10/03 10:30


【概要】
Microsoft Windows における DLL 読み込みには、本来プログラムが読み込むべき DLL ではなく、攻撃者が用意した DLL を読み込んでしまう脆弱性が存在します。


【想定される影響】
攻撃者が用意した同じ名前の DLL をアプリケーションがロードしてしまった場合、任意のコードを実行される可能性があります。 Windows 上で外部 DLL をロードして動作するプログラムの殆どが影響を受ける可能性があります。


【Explzh での対策】
独自の DLL の検索アルゴリズムで DLL の検索方法を変更し、ロード場所を制限しました。
Windows のシステムライブラリは System フォルダ上の DLL のみがロードされ、アーカイバ DLL は [ユーザ側で設定されたアプリケーションパス] → [System フォルダ] → [Explzh の存在するフォルダ] の順に検索され、ロードするように対策しました。カレントフォルダや、環境変数の PATH は無視しますのでご注意ください。

Explzh v.5.65 以前をお使いの方は、最新版へアップデート してください。

2013/10/02 追記
なお、この問題に対して、Explzh の最新バージョンでも、独自の DLL の検索アルゴリズムで DLL をロードするようにしております、最新版についても対策は有効かと存じます。 何かご質問等がございましたらご連絡ください。


2016/10/03 追記
Explzh Ver.7.35 より、更に DLL をロードする制限が絞られて、[アプリケーションパス(*1)] → [System フォルダ]、また、特定の DLL は特定のフォルダでしかロードできないように対策されています。SFX モジュールにおいては [System フォルダ] 以外の DLL をロードしません。

Explzh 本体、及び、関連ファイル(特に自己解凍書庫)は「DLL 読み込みに関する脆弱性」の対策のされている、 Ver.7.35 (2016/07/13 リリース) 以降のバージョンをお使いください。

[*1]アプリケーションパスを設定する場合のレジストリの例
7z.dllを除く、Archive DLL の存在場所をアプリケーションパスで指定できます。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Explzh.exe]
@="C:\\Program Files\\Explzh\\Explzh.exe"
"Path"="C:\\Program Files\\Explzh\\"

アプリケーションパスについては詳しい説明は割愛いたします。理解できる方のみ、自己責任で設定をお願いします。(注:DLL 自動更新はアプリケーションパスを無視しますので、アプリケーションパスを指定した場合は DLL 自動更新は手動で行ってください。)


【マイクロソフト サポートオンライン】
この問題についての説明、解決する為の方法が説明されています。(2010/9/6)

マイクロソフト サポートオンライン


【詳細情報】

 

Explzh におけるバッファオーバーフローの脆弱性 (2010/6/22)

JVN#34729123


【LZH のコメント付きヘッダの処理において、バッファオーバーフローの脆弱性】
LZH 書庫の拡張ヘッダのコメント付き LHA の処理で、各ファイルへ付加されたコメントの合計文字のバイト数が 32KB 以上の場合にバッファーオーバーフローが発生します。


【想定される影響】
拡張ヘッダのコメントヘッダを利用して細工された LHA 書庫ファイルを処理した場合、任意のコードを実行される可能性があります。


【対策方法】
Explzh に含まれている Arcext.dll のバージョンが 2.16.1、及びそれより古いバージョンの場合、本脆弱性の影響を受けます。参照:Explzh 及び各モジュールのバージョン情報の確認方法
Explzh v.5.62 以前をお使いの方は、最新版へアップデート してください。


【その他、補足事項】
  • 本脆弱性は、LZH に存在するものではなく、Explzh の内蔵エンジンの処理の問題によるものです。
    [複数のアンチウィルス製品に脆弱性] JVNVU#545953 とは別の脆弱性です。
    設定で UNLHA32.DLL を利用する設定 にしている場合は問題ありません。
  • 弊サイトで配布している、LHA自己解凍モジュールや Archive Decoder につきましても、本脆弱性はありません。
  • Lv0 ヘッダの LZH 書庫においては、拡張ヘッダ自体が存在しないのでこの脆弱性はありません。
  • 詳細修正内容は こちら をご覧ください。

【謝辞】
JPCERT/CC様IPA 様、本脆弱性を発見・ご報告頂いた、高野 健寿 氏に深く御礼申し上げます。


 

内蔵圧縮解凍エンジンで操作できるファイルサイズ制限


■4GB 以上の書庫への対応について
4GB を超える書庫への対応 をご覧ください。

■CAB (キャビネット)書庫の圧縮できるサイズの上限
CAB 書庫の圧縮可能サイズの上限は 2GB までです。これはCAB 書庫構造上の仕様です。
2GB 以上となるキャビネットになる場合は自動的に分割書庫として作成されます。



 

指定外の場所へファイルが解凍されてしまう脆弱性

参照:窓の杜のNews記事より
http://www.forest.impress.co.jp/article/2004/07/30/arcsecurity.html

この問題について、v.4.20 以降のバージョンで LZH, ZIP ,CAB 内蔵解凍エンジンで対応、v.4.21で全アーカイバDLL 使用時にも対応しました。
この問題を回避するには、v.4.20 以降のバージョンをお使いください。



■ v.4.19 以前の版を使用の場合、本脆弱性問題への対処方法
  1. 心当たりのない書庫を展開する場合は必ず書庫の内容をリスト表示して確認する

    ツリー表示されているフォルダの名前が不自然でおかしい(具体的には ".." のみのツリー階層が存在する)ような書庫の場合には解凍はおこなわないようにしてください。

  2. 「解凍先の指定」ダイアログボックスで「フォルダ構造を無視して展開」をチェックして解凍する。

    パス構成は復元されませんので、指定したフォルダ以外へは解凍されません。
※解凍事前に問題の格納フォルダの名前の変更をおこない、問題を回避する事も可能です。