SPSS Modeler 18.3のlog4jパッチ適用

SPSS Modelerのlog4j問題の対応とフィックスが出始めています。

* 2021/12/29修正:当初log4j 2.15.0に置き換えるIF006が出ましたが、これに問題があり、log4j 2.17.0に対応したIF007がでたため修正しています。

Security Bulletin:IBM SPSS Modeler is vulnerable to denial of service due to Apache Log4j (CVE-2021-45105) and arbitrary code execution due to Apache Log4j (CVE-2021-45046) 

https://www.ibm.com/support/pages/node/6537212?myns=swgimgmt&mynp=OCSS3RA7&mync=E&cm_sp=swgimgmt-_-OCSS3RA7-_-E

(旧Fix IF006 log4j 2.15.0)Security Bulletin: Log4JShell Vulnerability affects IBM SPSS Modeler (CVE-2021-44228)
https://www.ibm.com/support/pages/node/6527096


18.3.0.0-IM-S18MODELER-IF007-Win64-LOG4J2-2.17.0.txtにあった手順を参考にして、SPSS Modeler 18.3 Client on windowsに適用するコマンドを作りましたのでシェアします。
INSTALLDIRとFIXDIRをご利用環境にあわせて、設定すれば動作すると思います。
元ファイルは.bkp20211220の拡張子をつけて変更しています。


```bat
rem 導入パスの設定
SET INSTALLDIR=C:\Program Files\IBM\SPSS\Modeler\18.3
SET FIXDIR=C:\temp\18.3.0.0-IM-S18MODELER-IF007-Win64-LOG4J2-2.17.0

rem バックアップ(GAから)
ren "%INSTALLDIR%\bin\modelerclient.exe" "modelerclient.exe.bkp20211220"
ren "%INSTALLDIR%\bin\clemb.exe" "clemb.exe.bkp20211220"
ren "%INSTALLDIR%\config\jvm.cfg" "jvm.cfg.bkp20211220"
ren "%INSTALLDIR%\lib\modeler-base.jar" "modeler-base.jar.bkp20211220"
ren "%INSTALLDIR%\lib\log4j-api-2.13.3.jar" "log4j-api-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\lib\log4j-core-2.13.3.jar" "log4j-core-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\libServer\log4j-api-2.13.3.jar" "log4j-api-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\libServer\log4j-core-2.13.3.jar" "log4j-core-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\spss.xd\xdexe\log4j-api-2.13.3.jar" "log4j-api-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\spss.xd\xdexe\log4j-core-2.13.3.jar" "log4j-core-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\spss.xd\xdexe\log4j-1.2-api-2.13.3.jar" "log4j-1.2-api-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\pasw.cognos\log4j-api-2.13.3.jar" "log4j-api-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\pasw.cognos\log4j-core-2.13.3.jar" "log4j-core-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\as\lib\log4j-api-2.13.3.jar" "log4j-api-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\as\lib\log4j-core-2.13.3.jar" "log4j-core-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\as\lib\log4j-1.2-api-2.13.3.jar" "log4j-1.2-api-2.13.3.jar.bkp20211220"
ren "%INSTALLDIR%\spark\jars\log4j-api-2.14.1.jar" "log4j-api-2.14.1.jar.bkp20211220"
ren "%INSTALLDIR%\spark\jars\log4j-core-2.14.1.jar" "log4j-core-2.14.1.jar.bkp20211220"
ren "%INSTALLDIR%\spark\jars\log4j-1.2-api-2.14.1.jar" "log4j-1.2-api-2.14.1.jar.bkp20211220"


rem パッチ適用
copy "%FIXDIR%\modelerclient.exe" "%INSTALLDIR%\bin"
copy "%FIXDIR%\clemb.exe" "%INSTALLDIR%\bin"
copy "%FIXDIR%\jvm.cfg" "%INSTALLDIR%\config"
copy "%FIXDIR%\modeler-base.jar" "%INSTALLDIR%\lib"
copy "%FIXDIR%\log4j-api-2.17.0.jar" "%INSTALLDIR%\lib"
copy "%FIXDIR%\log4j-core-2.17.0.jar" "%INSTALLDIR%\lib"
copy "%FIXDIR%\log4j-api-2.17.0.jar" "%INSTALLDIR%\libServer"
copy "%FIXDIR%\log4j-core-2.17.0.jar" "%INSTALLDIR%\libServer"
copy "%FIXDIR%\log4j-api-2.17.0.jar" "%INSTALLDIR%\ext\bin\spss.xd\xdexe"
copy "%FIXDIR%\log4j-core-2.17.0.jar" "%INSTALLDIR%\ext\bin\spss.xd\xdexe"
copy "%FIXDIR%\log4j-1.2-api-2.17.0.jar" "%INSTALLDIR%\ext\bin\spss.xd\xdexe"
copy "%FIXDIR%\log4j-api-2.17.0.jar" "%INSTALLDIR%\ext\bin\pasw.cognos"
copy "%FIXDIR%\log4j-core-2.17.0.jar" "%INSTALLDIR%\ext\bin\pasw.cognos"
copy "%FIXDIR%\log4j-api-2.17.0.jar" "%INSTALLDIR%\as\lib"
copy "%FIXDIR%\log4j-core-2.17.0.jar" "%INSTALLDIR%\as\lib"
copy "%FIXDIR%\log4j-1.2-api-2.17.0.jar" "%INSTALLDIR%\as\lib"
copy "%FIXDIR%\log4j-api-2.17.0.jar" "%INSTALLDIR%\spark\jars"
copy "%FIXDIR%\log4j-core-2.17.0.jar" "%INSTALLDIR%\spark\jars"
copy "%FIXDIR%\log4j-1.2-api-2.17.0.jar" "%INSTALLDIR%\spark\jars"
```
すでにIF006(log4j 2.15.0)を導入していた場合には、上のコマンドのバックアップ部分を以下のスクリプトに置き換えてバックアップしてください。

```bat
rem バックアップ(IF006から)
ren "%INSTALLDIR%\bin\modelerclient.exe" "modelerclient.exe.bkp20211220"
ren "%INSTALLDIR%\bin\clemb.exe" "clemb.exe.bkp20211220"
ren "%INSTALLDIR%\config\jvm.cfg" "jvm.cfg.bkp20211220"
ren "%INSTALLDIR%\lib\modeler-base.jar" "modeler-base.jar.bkp20211220"
ren "%INSTALLDIR%\lib\log4j-api-2.15.0.jar" "log4j-api-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\lib\log4j-core-2.15.0.jar" "log4j-core-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\libServer\log4j-api-2.15.0.jar" "log4j-api-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\libServer\log4j-core-2.15.0.jar" "log4j-core-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\spss.xd\xdexe\log4j-api-2.15.0.jar" "log4j-api-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\spss.xd\xdexe\log4j-core-2.15.0.jar" "log4j-core-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\spss.xd\xdexe\log4j-1.2-api-2.15.0.jar" "log4j-1.2-api-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\pasw.cognos\log4j-api-2.15.0.jar" "log4j-api-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\ext\bin\pasw.cognos\log4j-core-2.15.0.jar" "log4j-core-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\as\lib\log4j-api-2.15.0.jar" "log4j-api-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\as\lib\log4j-core-2.15.0.jar" "log4j-core-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\as\lib\log4j-1.2-api-2.15.0.jar" "log4j-1.2-api-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\spark\jars\log4j-api-2.15.0.jar" "log4j-api-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\spark\jars\log4j-core-2.15.0.jar" "log4j-core-2.15.0.jar.bkp20211220"
ren "%INSTALLDIR%\spark\jars\log4j-1.2-api-2.15.0.jar" "log4j-1.2-api-2.15.0.jar.bkp20211220"
```

なお、ModelerのプログラムはProgram Filesに置いていることが多いと思いますので、上のコマンドを実行するには、コマンドプロンプトを管理者として実行する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/7aa988e1-1599-0fe1-7c27-89e6251a6940.png)

参考
SPSS log4j問題関連URL - Qiita 

https://qiita.com/kawada2017/items/1a8b972a19cbc9600cfd