Microsoft Internet Explorer の未修正の脆弱性 (CVE-2020-0674) に関する注意喚起の話。
MSから提示されている回避策は、everyoneからjscript.dll
へのアクセス権を奪うこと。
Restrict access to JScript.dll
For 32-bit systems, enter the following command at an administrative command prompt:
takeown /f %windir%\system32\jscript.dll cacls %windir%\system32\jscript.dll /E /P everyone:N
For 64-bit systems, enter the following command at an administrative command prompt:
takeown /f %windir%\syswow64\jscript.dll cacls %windir%\syswow64\jscript.dll /E /P everyone:N takeown /f %windir%\system32\jscript.dll cacls %windir%\system32\jscript.dll /E /P everyone:N
How to undo the workaround
For 32-bit systems, enter the following command at an administrative command prompt:
cacls %windir%\system32\jscript.dll /E /R everyone
For 64-bit systems, enter the following command at an administrative command prompt:
cacls %windir%\system32\jscript.dll /E /R everyone cacls %windir%\syswow64\jscript.dll /E /R everyone
適用すると、JScriptの実行にjscript.dll
を使用しているWSHではJScriptが実行できなくなってしまう。
個人的にとても困る。
なので、WSHがJScriptを実行する際に参照するレジストリを書き換えて、今回の脆弱性の対象にはなっていないjscript9.dll
を利用するように変更してみる。
レジストリの書き換えは自己責任で!※おまじない
それにはHKEY_LOCAL_MACHINE\SOFTWARE\Classes\JScript\CLSID
の(既定)
に指定するCLSIDを{16d51579-a30b-4c8b-a276-0ff4dc41e755}
へ書き換える。regファイル的には以下の通り。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\JScript\CLSID]
@="{16d51579-a30b-4c8b-a276-0ff4dc41e755}"
これで上記回避策を適用した後でもJScriptを実行できるようになる。
WScript.Echo(ScriptEngine() + '/' + [ScriptEngineMajorVersion(), ScriptEngineMinorVersion(), ScriptEngineBuildVersion()].join('.'));
ちなみにレジストリ書き換え前にjscript.dll
で表示されるバージョンは5.8.16384
だった。
もし不都合がありjscript.dll
へ戻すときはCLSIDを元に戻せばよい。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\JScript\CLSID]
@="{f414c260-6ac0-11cf-b6d1-00aa00bbbb58}"