InstallShield

03343 : 脆弱性(CVE-2016-2542)に関する InstallShield Hotfix

以下で掲載されている脆弱性(CVE-2016-2542)対策の hotfix をご案内します。

CVE-2016-2542

JVNDB-2016-001684 Flexera InstallShield における権限を取得される脆弱性


対象製品:InstallShield 2012 Spring SP1、InstallShield 2013 SP1、InstallShield 2014 SP1、InstallShield 2015 SP1、InstallShield 2016 SP2
対象プロジェクト:すべてのプロジェクトタイプ


[概要]
CVE-2016-2542 の脆弱性に関する InstallShield の Hotfix が提供されています。

Windows loads a different library or launches a different executable than was intended by the author of a InstallShield setup launcher executable

InstallShield の検索パスに関する処理の不備により信頼性のない検索パスの脆弱性が存在し、ごく特定の条件下で
InstallShield で作成したセットアップランチャー(setup.exe)の実行時に意図しない悪意のある DLL が読み込まれる
可能性があります。

.msi から直接インストーラーを実行する場合には、この脆弱性には該当しません。

詳細につきましては、Flexera から公開されている上記の Knowledge Base をご参照ください。


[Hotfix]
以下の手順で、hotfix を適用してください。

1. 以下の Flexera Knowledge Baseより、該当するバージョンの hotfix をダウンロードします

   Windows loads a different library or launches a different executable than was intended by the author of a InstallShield setup launcher executable
  ----------------------------------------------------------------------------------------
  記事内の InstallShield Hotfix IOJ-1745445   の here よりダウンロードします

  InstallShield 2015 SP1 Hotfix IOJ-1745445 may be downloaded here.
  InstallShield 2014 SP1 Hotfix IOJ-1745445 may be downloaded here.
  InstallShield 2013 SP1 Hotfix IOJ-1745445 may be downloaded here.
  InstallShield 2012 Spring SP1 Hotfix IOJ-1745445 may be downloaded here.
  -----------------------------------------------------------------------------------------

2. InstallShield がインストールされているマシン上で、手順1 でダウンロードした hotfix を実行します
  ※hotfix 適用前に、InstallShield は終了しておく必要があります

3. InstallShield を起動し、各プロジェクトでインストーラーを再ビルドします

  ※再ビルド後に生成されたインストーラーで、脆弱性対策が適用された setup.exe が生成されます


[補足説明]
この脆弱性は、InstallShield だけでなく、setup.exe という名前を持つインストーラーを実行した際の検索パスの動作に
起因する脆弱性の問題です。
詳細につきましては、Flexera Knowledge Base の「Additional Information」にある以下の記事等ご参照ください。

DLL Preloading from Microsoft
Binary Planting
Unquoted Service Path

DLL Preloading issue に関しては、検索パスの問題が対策されている Windows API を使用した hothix にて、
InstallShield の対策が行われています。

しかしながら、Binary Planting issue、Unquoted Service Path issue については、該当するような Windows API はなく、
また開発者側で InstallScript コードのカスタマイズなど行うことができるため、脆弱性対策にはアプリケーション
開発者側で Windows のベストプラクティスに則ったコードの記述を行う必要があります。
例えば、InstallScript で LaunchAppAndWait や UseDLL など、.exe の実行や .dll のロードを行うような関数を使用して
いる場合には、Windows のベストプラクティスに則って、関数の呼び出しで以下の対策が必要となります。

■Binary Planting issue についての対策

seup.exe ランチャから、内部で他の実行可能ファイル(.exe)を呼び出す処理がある場合には、フルパスで各 .exe を参照
するようにコードを修正し、再ビルドしてリリースを生成しなおします。

例.
wmplayer.exe

“C:\Program Files\Windows Media Player\wmplayer.exe”

■Unquoted Service Path issue についての対策

.exeを参照するフルパスに 1つ以上の空白文字が含まれている場合は、パスに二重引用符をつけるようにコードを修正します。
InstallShield はパスに二重引用符をつける関数として LongPathToQuote 関数が用意されています。コード修正後、再ビルド
してリリースを生成しなおします。

例.
C:\Program Files\Windows Media Player\wmplayer.exe

“C:\Program Files\Windows Media Player\wmplayer.exe”


注)
・hotfix が適用されていない setup.exe でインストールされたユーザーのアプリケーションが、この脆弱性の影響を受ける
ことはありません。
・アンインストールやメンテナンスインストールでも seup.exe が使用される場合、コンピューターは脆弱性の影響を受ける
可能性があります。脆弱性対策が適用された setup.exe でアップグレードインストールを行うことで、対策済みの
setup.exe に置き換えることができます。
・.exe を呼び出すカスタムアクションを使用している場合には、呼び出される .exe 内部の動作については InstallShield の
範疇外となるため、.exe 側での対策が必要です。

脆弱性リスクに関しては、「DLL Preloading from Microsoft」の「Making a risk assessment for your environment」
などご参照ください。


[備考]
InstallShield 2012 以前の InstallShield に関しては、公開時点ですでにサポートが終了しているため、hotfix は
提供されておりません。また、InstallShield 2016 ではすでにこの対策が行われています。


JVN、CWE-426、Untrusted Search Path
2016/10/28 17:10:25
2019/05/27 13:52:18