2019/08/12(月)Tera Term の「リンク」と「接続」


Tera Term の「リンク」と「接続」

Tera Term は、複数のプログラムで構成されていて、相互にプロセス間通信をすることで成り立っています。

Tera Term のヘルプから画像を引用します。

Tera Term モジュール構成
Tera Term モジュール構成

上記の図からは Tera Term 本体 (ttermpro.exe) と Tera Term マクロ実行プログラム (ttpmacro.exe) が異なることがわかります。
「リンク」と「接続」の違いを説明する上で、これの理解が必要になります。

リンク

Tera Term マクロ実行プログラム (ttpmacro.exe) から見た Tera Term 本体 (ttermpro.exe) へのアクセス有無を「リンク」と呼んでいます。
このため、マクロが Tera Term 本体へ通信している状態を「リンクしている」と呼び、マクロが Tera Term 本体へ通信していない状態を「リンクしていない」と呼んでいます。

リンクするためには ttpmacro.exe が connect 等で ttermpro.exe と DDE によるプロセス間通信を行う必要があります。
DDE については、このページの下部にもう少し技術的な内容を書いたのでここでは省略します。

また Tera Term を終了した場合、デフォルト設定では併せてリンクも終了するようになっています。

Point:
DDE による Tera Term 内アプリケーション同士のプロセス間通信。

接続

Tera Term 本体が「Tera Term を構成するプログラム以外」のサーバやスイッチングハブ等と通信している状態を「接続」や「アクセス」と呼んでいます。

Telnet や SSH 等のプロトコルで通信している状態ですね。

Point:
TCP/IP による通信。

DDE

DDE (Dynamic Data Exchange) は日本語で「動的データ交換」とも呼ばれる Windows 2.0 (1987年) の時代に発表されたプロセス間通信のメカニズムです。

DDE 通信から見た Tera Term の「リンク」は Tera Term 本体がサーバ、マクロ実行プログラムがクライアントになっています。
サーバ - クライアントモデルで通信していると書くと TCP/IP による Telnet や ssh との通信と混乱しかねませんが、実のところ概念は同じものでも利用している技術が異なります。

OLE (Object Linking and Embeddin) の登場以降では活躍の場が少なくなったものの VBA といったマクロを介さず利用できることから 2017 年 10 月にはセキュリティ研究者が DDE を悪用したマルウェア拡散手順を公開、2017年12月には Word の DDE 機能がデフォルトで Disable される*1という変遷がありました。

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV170021

この攻撃手法については https://www.ipa.go.jp/files/000063813.pdf に詳しいため、参照いただければ幸いです。
参照先の PDF では「この文書には、他のファイルへのリンクが含まれています。リンクされたファイルのデータでこの文書を更新しますか?」といったダイアログボックスが表示されていることがわかります。

これらのことから、セキュリティの向上という名目で DDE が無効化される流れも想像できます。
Windows で DDE が利用できなくなると Tera Term マクロが動作しなくなります。

*1 : Excel や Outlook は、現在でも DDE を利用可能。