コンテンツにスキップ

安全性の要約

安全性の説明は、本ツールの導入を審査する担当者(情報システム部門・セキュリティ部門など)と、OSS としての安全性を評価する人に向けて、本ツールが何をするか・何をしないかと、その根拠をどう自分の手で確かめられるかを示す。

ここでの主張はすべて、このリポジトリのコード・設定に基づく。各主張には、それを機械的に守らせている仕組み(テスト・CI)と、審査する側が自分で再現するコマンドを併記する。この説明を信用しなくても、同じ結果を自分で確かめられる。

脆弱性・不審な挙動の連絡先は SECURITY.md(GitHub の非公開の報告窓口)。

観点 本ツールの挙動 守らせている仕組み 詳細
構成物 zip 版: Windows PowerShell スクリプト(scripts/**/*.ps1)、画面定義(*.xaml)、起動用 tebunko.bat、アイコン tebunko.ico、版とコミットの記録 VERSION.txt のみ。実行可能バイナリ(.exe / .dll)を同梱しない。インストーラー版: 同じスクリプトに、起動用の tebunko.exe(本リポジトリのソースからビルド)と、Inno Setup のインストーラー・アンインストーラーが加わる zip の中身は tools/new_release_package.ps1、インストーラーの中身は installer/tebunko.iss が決める(installer.Tests.ps1) 配布物の完全性(カタログ・ハッシュ一覧・来歴の署名)・インストーラー版
第三者ライブラリ 使用しない。実行時の依存は Windows 標準の .NET アセンブリと Microsoft Office のみ。同梱する第三者の部品は、アイコンの形 Lucide(ISC ライセンス。Feather 由来の一部は MIT)の 1 つだけで、実行されるコードではない new_sbom.Tests.ps1(SBOM の第三者の部品がこの 1 件だけで、purl を持つものが無いこと) 供給網(サプライチェーン)とライセンス
ネットワーク通信 行わない。通信用の API を使っていない safety.Tests.ps1「ネットワーク通信を行わない」 検査項目と結果
動的コード実行・難読化 行わない。Invoke-Expression、文字列からのスクリプト生成、Base64 のコマンドを使っていない safety.Tests.ps1・PSScriptAnalyzer 検査項目と結果
実行時コンパイル・P/Invoke 行わない。C# の Add-Type コンパイル(csc.exe の起動)と Windows API の直接呼び出しを使っていない safety.Tests.ps1・structure.Tests.ps1 検査項目と結果
管理者権限・常駐 不要・しない。昇格要求・サービス登録・タスクスケジューラ登録・自動起動の登録を行わない。画面を閉じれば終了する。インストーラー版も既定は管理者権限なしで入れる safety.Tests.ps1・installer.Tests.ps1 検査項目と結果
レジストリ 読み書きしない。インストーラー版では、インストーラーがアンインストールの情報(HKCU または HKLM の ...NINSTALL)だけを書き、アンインストールで消す SAFETY.TESTS.PS1・INSTALLER.TESTS.PS1 検査項目と結果・インストーラー版
Windows Search 使わない。問い合わせも、索引の対象から外す属性の書き込みもしない。検索は自前の索引(store\gram\。gram 索引)で候補を絞る。索引を作るスレッドの優先度を下げる(BelowNormal。プロセス全体の優先度は変えない) safety.Tests.ps1「Windows Search を使わない(OleDb・CommandText・NotContentIndexed がどこにも無い)」 検査項目と結果
実行ポリシー Bypass を使わず RemoteSigned で起動する。恒久的な変更(Set-ExecutionPolicy)をしない safety.Tests.ps1 Mark-of-the-Web の解除
取り込み対象のファイル 読み取りのみ。原本を開かず、作業フォルダへコピーしたものを読む safety.Tests.ps1 取り込み対象のファイルは書き換えない
マクロ 実行させない。Office のマクロを強制無効にしてから開く。検索結果から開くときは、もらったインデックスのマクロを持てる形式を読み取り専用で開き、Excel の AutomationSecurity は 2(Excel の設定に従う)にする safety.Tests.ps1 Office ファイルを開くときの設定
細工した Office ファイル ZIP(.xlsx / .docx / .pptx)を直接読む処理は、部品 1 つ 100MB・1 ファイル合計 300MB のサイズの上限(ヘッダーを偽ったものも検知。Word・PowerPoint に埋め込んだ Office のファイルを読むときも同じ上限の中で読み、入れ子は読まない)と、DTD(<!DOCTYPE>)の処理の禁止で、時間・メモリを使い切らせる細工から身を守る safety.Tests.ps1 細工した Office ファイルから身を守ること
資格情報 保存・送信・入力要求のいずれも行わない。パスワード付きファイルは解除を試みず、失敗として記録する。IRM・秘密度ラベルで暗号化されたファイルは、ライセンス取得・サインイン画面が出る前に、開かずに失敗として記録する(ファイルを開く前に暗号化の種類を判定する)。もらったインデックスの元のフォルダが共有フォルダのとき、開く操作で Windows がサインイン情報を送ることがあるため、開く前に確認する(もらったインデックスの元のフォルダ) safety.Tests.ps1・PSScriptAnalyzer Office ファイルを開くときの設定
外部プロセスの起動 スクリプトが起動するのは explorer.exe(一覧・検索結果から元のファイルの場所を開く。「バージョン情報」から、決まった 2 つの GitHub のアドレスを既定のブラウザで開く)と、固定のパスの notepad.exe(検索結果から、実行・登録になる拡張子のテキストファイルを開く)のみ。起動そのものに失敗したときだけ、tebunko.bat が理由を示す notepad.exe を開く safety.Tests.ps1 外部プロセスの起動
書き込み先 work/ 配下(既定は %USERPROFILE%\Documents\tebunko_ws。利用者が画面で選んだフォルダ(ワークスペース)にも置ける。取り込みの作業領域 work/tmp/<PC の鍵>/<PID> を含む。ワークスペースのパスに [ ] があるか長すぎるときは作らず、取り込みをすべてスキップする(どのファイルも中間 TSV などをこの作業領域に作るため、テキストファイルを含めすべて対象になる)。%TEMP% には逃がさない)、setting.config(ツールのフォルダに書き込めなければ既定のワークスペースの直下)、利用者が指定した検索結果の出力先、起動に失敗したときの記録(ツールのフォルダの startup_error.txt)のみ safety.Tests.ps1 書き込み・削除する場所
配布物の完全性 配布 zip と並べて、カタログ(tebunko.cat)とハッシュ一覧(SHA256SUMS.txt)をリリースに載せ、zip とインストーラーにはビルドの来歴の署名を付ける release.yml 配布物の完全性(カタログ・ハッシュ一覧・来歴の署名)
開発の過程 main へは PR からだけ入れ、テスト・CodeQL などの必須チェックを通す。コミットには Signed-off-by(DCO)を付ける。GitHub Actions は版を固定し、Dependabot が更新する ブランチ保護・CI 供給網(サプライチェーン)とライセンス
規模(監査の目安) scripts/ 配下 57 ファイル・12,326 行(空行を除く)・419 関数(2026-09-26 時点)。第三者のコードの依存が無いため、監査対象はこの範囲で閉じる – 同梱の機械検査と品質の指標

第三者が作ったツールでの検査結果は 第三者のツールによる検査結果のとおり。PSScriptAnalyzer(Microsoft)の安全性にかかわるルールは指摘 0 件、Microsoft Defender のスキャンは検出 0 件である。

利用者の明示操作により影響が出る機能と、ツールの性質上避けられない情報リスクは 開示事項で開示している(前回残った Office の終了、Mark-of-the-Web の解除、インデックスが元文書の本文を保持すること、一時コピー、Excel が前面に出ること、透過暗号化の製品が平文で見せたファイルの本文が平文でインデックスに入ること、もらったインデックスの元のフォルダ)。

安全性のページ