配布と更新の方針
TTP はコード署名をしていません。個人開発で証明書の費用と更新の手間が見合わないため、現時点では見送っています。 その代わり、依存の更新と脆弱性チェックを毎月自動で回し、検査を通ったものだけをリリースする仕組みを GitHub Actions で運用しています。 このページは、その中身を隠さずに書いたものです。
初回起動時に警告が出ます
コード署名がないため、初回起動時に Microsoft Defender SmartScreen が「Windows によって PC が保護されました」と表示することがあります。
-
「詳細情報」をクリック
警告画面の中に、小さく「詳細情報」というリンクがあります。ここを押すと、実行ボタンが現れます。
-
「実行」をクリック
これで起動します。2回目以降は表示されません。
なぜ出るのか。 SmartScreen は「配布元が既知か」「署名があるか」で判断します。TTP はどちらの条件も満たさないため、初回は必ず止められます。動作に問題があるという意味ではありませんが、「警告が出る=安全」でもありません。判断材料はこのページの残りと、公開しているソースです。
なぜコード署名をしていないのか
- コード署名証明書は継続的な費用がかかり、個人が趣味で配布するツールの規模に対して見合わない
- 証明書を失効・更新できなくなると、それ以降の更新がすべて警告付きになる
- 「署名がないこと」を隠すのではなく、別の方法で検証できる状態にするほうが誠実だと考えている
将来的に配布規模が変わった場合は、コード署名の導入を検討します。
代わりに、毎月自動で更新しています
毎月1日 03:00(日本時間)に GitHub Actions のワークフロー Monthly dependency update が自動実行されます。内容は次のとおりです。
| 手順 | 内容 |
|---|---|
| 1. 依存の最新化 | uv lock --upgrade で依存パッケージを最新版に更新 |
| 2. 変更の判定 | パッケージの名前・バージョンが変わったときだけ先へ進む。変更が無ければ何もせず終了 |
| 3. 動作確認 | スモークチェック(起動と主要モジュールの読み込み) |
| 4. 脆弱性検査 | pip-audit で依存の既知脆弱性を検査。1件でも見つかればそこで失敗し、リリースしない |
| 5. バージョン更新 | パッチ番号を上げる(例: 1.2.3 → 1.2.4) |
| 6. タグとコミット | 変更内容とバージョンをコミットし、タグを push |
| 7. ビルド | Windows 上で exe と zip を生成 |
| 8. リリース | GitHub Releases に zip を添付して公開。リリースノートは自動生成 |
ポイントは、手順4で落ちたら手順5以降が実行されないことです。脆弱性が検出された状態のビルドが、そのまま配布されることはありません。また、この一連のログは GitHub Actions 上にすべて残るため、第三者が確認できます。
緊急で更新したい場合は、手動でワークフローを実行できます(Run workflow)。
毎回の push でも同じ検査をしています
月次の自動更新とは別に、main への push と Pull Request のたびに、スモークチェックと pip-audit を実行しています。手元で書いた変更が、そのまま検査を通らずにリリースされることはありません。
同梱しているランタイム
- Python 3.14 系を同梱しています(バグ修正は 2027年10月まで、セキュリティサポートは 2030年10月まで)
- 同梱するランタイムは、ビルド時点の最新パッチです。古いパッチ版に固定されません
- TLS の CA は
certifiではなく、botocore同梱の CA バンドルで検証しています - 同梱する CA バンドルに問題のある認証局が含まれていないことを、リリース時に確認しています(例: 2026年10月に報告された eMudhra / emSign の中間 CA 問題 CVE-2026-115557 について、該当エントリが無いことを確認済み)
自分で確かめる方法
署名の代わりに、次の3つで確認できます。
-
リリースの履歴を見る
毎月の更新が、そのままリリースとして残っています。いつ何が変わったかは GitHub Releases で追えます。
-
ソースから自分でビルドする
配布している exe は、公開しているソースからビルドしたものです。手元で同じものを作れます。
git clone https://github.com/okamoto53515606/ttp.git cd ttp uv sync uv run python build.pydist/ttp/にttp.exeが生成されます。 -
ソースを読む
Python で書かれています。暗号化の実装は
src/ttp/crypto.py、保存処理はsrc/ttp/storage.py、マクロの起動はsrc/ttp/teraterm.pyにあります。外部への送信処理は、AWS 接続機能で boto3 を使う箇所だけです。
この仕組みで守れないこと
できることだけを書くと不誠実なので、限界も書きます。
- ビルド環境そのものの侵害 — GitHub Actions 上でビルドしているため、そこが侵害されれば配布物も影響を受けます
- 配布後の改ざんの検知 — 署名がないため、入手したファイルが正規のものかを機械的に検証できません
- 端末側の侵害 — マルウェアやキーロガーに対する防御は、TTP の範囲外です
そのため、配布物は GitHub Releases からのみ提供しています。まとめサイトや転載先から入手したファイルについては、こちらで関与できません。
脆弱性が見つかったときの流れ
- 依存に既知の脆弱性があれば、毎月の
pip-auditで検出され、その月のリリースは作られません - 修正版が公開されれば、翌月の自動更新で取り込まれます
- 急ぎの場合は、ワークフローを手動実行して即時に反映できます
TTP 本体に問題を見つけた場合は、GitHub の Issue で知らせてください。
最終更新: 2026年11月14日