Meltype はキーボードの入力を扱うソフトです。安心して使ってもらえるように、次の方針で作っています。
- 打った文字を外部に送りません。 判定・変換・学習はすべて PC の中で行います。通信するのは次の 2 つだけです。
- 自動更新: GitHub に新しい版があるかを確かめる (送るのは今の版だけ)。設定「自動で更新する」で止められます。
- 不具合の報告: トレイの「不具合の報告・提案...」から、利用者が自分でフォームや GitHub を開いたときだけ。
- パスワードの欄では何もしません。 Windows がパスワードの欄と知らせている入力欄では、キーを横取りしません。
- ログに打った文字を残しません (既定)。 設定「ログに入力した文字を残す」を ON にしたときだけ残します。OFF のときは文字数だけです (ただし判定の理由には、判定した語の先頭の数文字が残ります)。
- Meltype 本体には管理者権限は要りません。 インストール先はユーザーのフォルダー (
%LOCALAPPDATA%\Programs\Meltype) で、ふつうの権限で動きます。 - Meltype IME (入力欄に直接入力) を入れるときだけ、管理者権限を求めます。 Windows に IME として登録するためです。IME の DLL は、ユーザーが書き換えられない
C:\Program Files\Meltype\tipに置きます。 この DLL は入力するアプリの中に読み込まれ、打鍵を名前付きパイプで Meltype.exe (ふつうの権限) に渡します。Meltype.exe より上の権限の入力は扱わないように、 Meltype.exe より高い権限で動いているアプリ (ふつうは管理者として動いているアプリ)・サインインや UAC の画面では何もしません。パイプはユーザーごとに分け、ほかのつながりの入力には触れません。 同じユーザーの権限で動くほかのプログラムが Meltype.exe より先に同じ名前のパイプを作ると、Meltype IME はそのプログラムにつながり、打鍵とキャレットの前後の文字がそのプログラムに渡り、返ってきた文字が入力欄に入ってしまいます。Meltype.exe は、先に作られていたら IME のサーバーを始めず、ログに書きます。同じユーザーの権限で動く悪意のあるプログラムは、もともとキーボードの入力を読めるので、それ以上の被害にはなりませんが、Meltype.exe より高い権限で動くアプリでは Meltype IME は何もしません。 Meltype IME は、つないだ相手が同じユーザーの整合性レベル Medium 以上のプロセスかを確かめるので、サンドボックス (整合性レベル Low) のプログラムが先にパイプを作っても、ふつうのアプリはつながりません。 ただし、ストアアプリ (自分も Low で、相手を調べられない) はつながってしまいます。 パイプにはストアアプリ (AppContainer) からもつなげます。ストアアプリは自分で入力の本体を作って変換を頼めるので、変換の候補の順番 (学習した結果)・ユーザー辞書の語を間接的に知ることができ、学習データに書き込むこともできます。 ふつうの IME がストアアプリに候補を見せるのと同じ範囲で、ほかのアプリの入力やファイルは読めません。 Meltype IME の登録のときに管理者として動くスクリプト (Register-Tip.ps1) と DLL は、インストール先の%LOCALAPPDATA%\Programs\Meltype\tip(ソースからInstall-Meltype.ps1で入れたときは、ソースのフォルダーのapp-build\tip。どちらもユーザーが書き換えられる場所) から読みます。 自動更新でも、DLL が変わったときはここから管理者として動きます (Meltype IME を登録してあるときだけ。変わっていなければ登録し直さないので、確認は出ません)。 管理者として動かす前に、DLL が配布したときのハッシュ (MeltypeTip.dll.package.sha256。ソースから入れたときはMeltypeTip.dll.sha256) と合うかを確かめます。 確かめてから使うまでの間にすり替えられないように、管理者として動く側は、DLL とスクリプトをユーザーが書き換えられないC:\Program Files\Meltypeの下に写してから、 昇格する前に確かめたハッシュと比べ、合ったものだけを使います。スクリプトをユーザーのフォルダーから直接、管理者として動かすことはしません。 ただし、確かめる前に、同じユーザーの権限で動くプログラムがハッシュのファイルやスクリプトごと書き換えていれば防げません。インストーラーをユーザーのフォルダーに置く作りに共通の制限です。 UAC の確認に見覚えが無いときは「いいえ」を選んでください (Meltype は今までどおり変換ボックスで入力する方式で動きます)。 - 保存するのは、設定・学習データ・ユーザー辞書 (
%LOCALAPPDATA%\Meltype) と、ON にしたときのログだけです。
悪用できそうな問題 (打った文字が漏れる・ほかのアプリに勝手に入力される・権限が上がる など) を見つけたら、 公開の Issue ではなく、非公開で報告してください。
- GitHub: Security → Report a vulnerability (非公開で作者にだけ届きます)
- メール: ibutya0319@gmail.com (件名に「Meltype セキュリティ」と入れてください)
次のことを書いてもらえると助かります: 起きること、再現の手順、Meltype の版と OS、考えられる影響。 受け取ったら 1 週間以内に返事をし、直すまでの見通しをお知らせします。直した版を出すまでは、内容を公開しないでください。 直した版の公開後、希望があれば報告してくれた方のお名前をリリースノートに載せます。
直すのは最新の版だけです (テスト版の期間は、最新のテスト版)。古い版を使っている場合は、最新の版で起きるかを確かめてください。
- 配布しているのは GitHub のリリース (公開後) と、作者が直接渡すテスト版だけです。ほかの場所の Meltype は使わないでください。
- 自動更新は、GitHub が公開している SHA-256 と一致するかを確かめてからインストールします。
- 公開版の実行ファイルには、作者のコード署名を付ける予定です。