AutoCAD LT を除く AutoCAD と AutoCAD ベースの業種別製品は、API カスタマイズによって独自に機能を拡張出来る仕組みが備わっています。また、API を使ったカスタマイズでは、しばしば AutoCAD の起動時に API カスタマイズで作成したファイルを自動ロードさせて、すぐに実行できる環境を構築するのが一般的です。
AutoCAD 起動時にカスタマイズ ファイルを自動ロードするには、いくつかの方法が存在します。詳細は、以前のブログ記事 AutoCAD アドオンの自動ロードの方法あれこれ に譲りますが、ここで気になる問題があります。自動ロードは、もともと、AutoCAD を効果的に利用する目的で用意された仕組みですが、インターネットの普及にともない、この仕組みを悪用する例が出始めているのです。実例として、オートデスク ユーザ会のフォーラムに記載されている AutoCAD ウィルスや、トレンドマイクロ社のブログに記載されているマルウェアなどが報告されています。
こうした悪意のあるプログラムは、たとえ、インターネットに接続していない環境でなくても、USB デバイスや EMail による図面ファイルのやり取りでも感染を誘発する可能性があります。重要なのは、AutoCAD が本来持つ自動ロード用のファイルが偽装されて悪用されている点です。このため、AutoCAD の利用者が感染に気が付かない場合が出てきてしまう点です。そこで、AutoCAD は過去数バージョンに渡って、徐々にセキュリティ対策を講じてきています。
ここでセキィリティの対象になるファイルには、次のようなカスタマイズ ファイルがあります。
- ObjectARX ファイル(.arx、.dbx、.crx)
- AutoLISP ファイル(.lsp、.fas、.vlx)
- Heidi システム プリンタ ドライバ ファイル(.hdi)
- メニュー マクロ ファイル(.mnl)
- スクリプト ファイル(.scr)
- .NET アセンブリ ファイル(.dll)
- VBA マクロ(DVB ファイル)
- acad.rx
- JavaScript ファイル(.js、.html、.htm)
- その他 DLL ファイル
セキィリティの基本コンセプト - セキュア ロード
AutoCAD セキュリティの基本コンセプトは、ユーザが指定した特定のフォルダに保存されたアドイン アプリケーション ファイル等のカスタマイズ ファイルしかロードしない、というものです。この特定のフォルダを 信頼できる場所 と呼びます。信頼できる場所は、OPTIONS[オプション] コマンドで表示される [オプション] ダイアログの [ファイル] タブか、SECURITYOPTIONS[セキュリティオプション] コマンドで表示される [セキュリティ オプション] ダイアログで設定することが出来ます。
信頼できる場所には複数のパスを設定することが出来、設定されたパスは、システム変数 TRUSTEDPATHS に格納されます。なお、信頼できる場所に指定するパスは、不用意なファイルの改変やコピー作成を抑止するために、読み込み専用のフォルダ属性を持たせるのが一般的です。
AutoCAD は、信頼できる場所以外からのカスタム ファイルのロードに対し、警告ダイアログを表示して注意を促します。次のダイアログが表示された場合には、ユーザが選択的にロードするか否かを決定します。
セキュリティ関連のシステム変数には、もう1つ重要なシステム変数 SECURELOAD が存在します。この値が、0 に設定されている場合、信頼できる場所 にパスが設定されていても、AutoCAD は警告なしでカスタマイズ ファイルをロードしてしまいます。システム変数 SECURELOAD に設定可能な値と内容は、次のとおりです。
0
警告を表示せずに、すべての場所から実行可能ファイルをロードします。旧バージョンと同じ動作を保持しますが、お勧めできません。
1
実行可能ファイルが、システム変数 TRUSTEDPATHS で指定された信頼できる場所にある場合にのみロードします。信頼できる場所意外のパスにある実行可能ファイルのロード要求に対しては警告が表示されます。
2
実行可能ファイルの場所が、システム変数 TRUSTEDPATHS で指定されている場合にのみロードすることができます。
セキュア ロードで自動的に信頼される場所
AutoCAD には、明示的に信頼できる場所に指定しなくても、自動的に信頼される次のパスがあります。
- AutoCAD インストール フォルダと配下のサブ フォルダ
- バンドル パッケージを使った自動ロード メカニズムが利用する ApplicationPlugins フォルダ
上記いずれかの場所に保存されているカスタマイズ ファイルをロードする場合、AutoCAD はカスタマイズ ファイルを警告なしでロードします。
AutoCAD 2016 のセキィリティ
最新の AutoCAD 2016 では、SECURITYOPTIONS[セキュリティオプション] コマンドによって、セキィリティ制御に関するシステム変数を包括的に設定出来るようになっています。
表示される [セキュリティ オプション] ダイアログを適切に設定、運用することで、作者の不明なアドイン アプリケーションを不用意にロードしてしまうことを効果的に抑止出来るようになっています。このダイアログにある 3 つのセキュリティ レベルでは、それぞれ、アドイン アプリケーションの扱いが異なってきます。
高
- 信頼できる場所からのみロード
- 信頼できる場所意外の場所からのロード指示は無視
- システム変数 SECURELOAD = 2
中
- 信頼できる場所からロード
- 信頼できる場所意外からのロード指示に対しては警告を発してユーザ選択によりロード
- システム変数 SECURELOAD = 1
オフ
- すべてのファイルをロード
- 警告なし
- システム変数 SECURELOAD = 0
※ JavaScript API ファイル(.js)を Web サーバーから ロードする場合には、
システム変数 TRUSTEDDIMAINS にURL を設定する必要があります。
セキュリティ設定の注意
セキィリティ設定で推奨されるのは、言うまでもなく 高(システム変数 SECURELOAD = 2) または 中(システム変数 SECURELOAD = 1) の値となります。不用意なカスタマイズ ファイルのロードを許容してしまう オフ(システム変数 SECURELOAD = 0) の設定は、推奨されません。
なお、これらのセキュリティ設定は、前述のとおり、システム変数 SECURELOAD と TRUSTEDPATHS を利用することになります。これとは別に、システム変数 LEGACYCODESEARCH の設定にも注意を払うべきです。LEGACYCODESEARCH の値が 1 に設定されていると、図面を開く際に、同じフォルダに acad.lsp または、acaddoc.lsp が存在する自動ロード用 AutoLISP ファイルがロードされて不正なコードが実行されてしまう可能性があります(含む、acad.fas、acad.vlx、acaddoc.fas、acaddoc.vls)。なお、図面を開く際に、毎回、acad.lsp(acad.fas、acad.vls) をロードするか否かの設定は、システム変数 ACADLSPASDOC で指定することが可能です。
よりセキュアな環境の構築 - アドイン アプリケーション開発者への要求事項
AutoCAD 2016 では、アドイン アプリケーションに用いられる次のファイルに対して、デジタル署名を施すことを推奨しています。デジタル署名されたアドイン アプリケーション ファイルは、ロード時に信頼できる場所になくても、警告なしで AutoCAD にロードすることが出来ます。
- ObjectARX ファイル(.arx、.dbx、.crx)
- AutoLISP ファイル(.lsp、.fas、.vlx)
- Heidi システム プリンタ ドライバ ファイル(.hdi)
- メニュー マクロ ファイル(.mnl)
- .NET アセンブリ ファイル(.dll)
- その他 DLL ファイル
※ VBA ファイル(.dvb) と JavaScript API ファイル(.js) はデジタル署名の
対象外です。
デジタル署名が施されたアドイン アプリケーションは、過去のブログ 図面ファイルのセキュリティ - デジタル署名 で紹介した図面ファイルへのデジタル署名と同様に、アドイン アプリケーションの作成者を明確するだけでなく、不正な改ざんを把握することも可能になります。不正な改ざんがおこなわれたファイルでは、デジタル署名が無効になってしまいます。 例えば、次のダイアログは、デジタル署名後に内容を修正した AutoLISP ファイル ロード時の警告ダイアログです。
AutoCAD のアドイン アプリケーション ファイルにデジタル署名を施すには、まず、認証局からデジタル証明書を取得(購入)、または、独自に作成してから 、個人情報交換(.pfx)ファイルを作成後にインポートします。続いて、次のいずれかのツールを利用して、ファイルに署名します。
- AcSignApply.exe
AutoLISP ファイル(.lsp、.fas、.vlx) とメニュー マクロ ファイル(.mnl)へデジタル署名します。AcSignApply.exe は、AutoCAD のインストール フォルダ内に格納されています。
ObjectARX ファイル(.arx、.dbx、.crx) と .NET アセンブリ ファイル(.dll)や、その他 DLL ファイルへデジタル署名します。SignTool.exe は、Windows SDK の最新バージョンは、Microsoft のWeb サイト(http://msdn.microsoft.com/ja-JP/windows/desktop)から入手することができます。
なお、ここで利用するデジタル証明書は、図面ファイルへのデジタル署名と同様、X.509 規格に準拠している必要があります。 個々の署名方法については、AutoCAD 2016 のオンラインヘルプを参照してください。
なお、AutoLISP ファイルへ署名する際に利用する AcSignApply.exe ツールは、DWG ファイルへデジタル署名を加えるツールと同一です。操作は [デジタル署名をアタッチ] ダイアログで完了することが出来ます。
一方、SignTool.exe を利用した ObjectARX や .NET API ファイルへの署名は、Windows のコマンド プロンプトからおこないます。例えば、.NET API で作成した MyAddin1.dll への署名は、次のような書式で署名します(黄色部は可変です)。
signtool.exe sign /f xxxx.pfx /p パスワード /t http://timestamp.verisign.com/scripts/timstamp.dll MyAddin1.dll
ウィルスに感染してしまったら
AutoCAD に起動ショートカットを利用して、/safemode コマンド ライン スイッチを指定します。このスイッチで起動された AutoCAD は、すべての実行可能ファイルのロードおよび実行を禁止します。この間に、ウィルスチェッカーなどで不正なファイルを除去するとともに、SECURITYOPTIONS[セキュリティオプション] コマンドで、セキィリティ レベルを 高、または 中 に設定してください。 ウィルスや不正なファイルの駆除/除去が完了したら、/safemode コマンド ライン スイッチを削除します。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。