これからの取り組み
このセクションでは、Tauri アプリをさらに安全にするために開始した案件や、今後取り組みたい内容について説明します。 このような案件に興味がある、あるいは何らかの知識をお持ちの場合は、GitHub や Discord などの他のコミュニティ・プラットフォームを通じてご連絡ください。新しい貢献者の方もあたらしいアドバイスもいつでも歓迎致します。
侵入テスト担当者、監査担当者、自動セキュリティ・チェックが適切にその役割を果たすようにするには、コンパイルされたバイナリからでも知見を得ることが非常に重要です。すべての企業がオープン・ソースであるわけではなく、監査、レッド・チーム、その他のセキュリティ・テスト用にソース・コードを提供しているわけでもありません。
《訳注》 ・侵入テスト担当者: pentester = penetration tester ・レッド・チーム: red team(セキュリティの脆弱性を検証する社内専任チーム)
見落とされがちなもう一つの点は、Tauri 固有ののメタデータを提供することで、そのアプリケーションのユーザーの人々が、その生涯と努力を既知の脆弱性解決に捧げることなく、自らのシステムを既知の脆弱性に対してより大きな規模で監査できるようになることです。
《訳注》 Tauri 固有のメタデータ 原文は「inbuilt metadata」。inbuilt は「本来備わった」「固有の」「本質的な」の意味のようですが、「組み込み」「内蔵の」(= built-in)の意味も含意しているかもしれません。本稿では「Tauri 固有/特有の」と解釈しています。
あなたの用いている「脅威モデル」が「隠蔽によるセキュリティ」に頼っているのであれば、以下にツールやポイントをいくつか提案しますので、脅威モデルを再検討していただければ幸いです。
《訳注》 隠蔽によるセキュリティ 設計や実装を非公開にする(隠蔽)ことによってセキュリティを確保する方法。この方法は非公開情報が漏洩した場合の防衛手段が存在しないため、非推奨です。Security Through Obscurity (STO) とも表記。
Rust には SBOM/ソフトウェア部品表 を作成するための cargo-auditable
があり、再現可能なビルドを壊すことなく、バイナリの正確なクレート・バージョンと依存関係の情報を提供します。
フロントエンド・スタックについては、同じ様な方法を知らないので、バイナリからフロントエンド・アセットを抽出するのは単純明快なプロセスであるべきです。
その後、npm Audit
などのツールを使用できるようになるはずです。
この抽出プロセスに関する ブログ投稿 はすでにありますが、簡便なツールはありません。
Tauri では、特定の機能を備えた Tauri アプリをコンパイルするときに、そのようなツールを提供したり、アセットの抽出を容易にしたりすることを計画しています。
Burpsuite、Zap あるいは Caido といった「侵入テスト pentesting」ツールを利用するには、Webview からのトラフィックを傍受し、テスト・プロキシを通過させる必要があります。 現時点で、Tauri にはこれを実行するための Tauri 固有のメソッドはありませんが、このプロセスを容易に行なうための作業が進行中です。
このようなツールはどれも、ソース・コードにアクセスすることなく Tauri アプリケーションを適切にテストおよび検査できるため、Tauri アプリケーションをビルドするときに考慮すべきものです。
Tauri は、今後も関連機能の更なるサポートと実装を計画しています。
Tauri の現在の「脅威モデル」や Tauri が参照する「領域境界」内では、WebView 自体に更なるセキュリティ制約を追加することはできません。また、WebView はメモリ安全性のない言語で記述されたスタック(一時記憶領域)の最大の部分であるため、WebView プロセスをさらにサンドボックス化して隔離化する方法を調査・検討する予定です。
《訳注》 領域境界 原文「boundaries」 具体的に「何の」境界は不分明であるが、ここでは Tauri が取り扱える範囲の境界と解釈してあります。 メモリ・アンセーフ言語 原文「an memory unsafe language」 メモリ・アクセス時のプログラミングエラー防止機能や制約が欠如しているプログラミング言語。 《参考》 上記に関する基本情報は、Wikioedia の「メモリ安全性 の項をご覧ください。
セキュリティ攻撃の影響を軽減し、システム・アクセス用の IPC ブリッジ(プロセス間接続)を強化するために、Tauri 固有および外部のサンドボックス方式を評価する予定です。 スタックのこの部分がリンクの弱点であると考えていますが、現行世代の WebView ではセキュリティの強化とエクスプロイト耐性(セキュリティ脆弱性攻撃への耐性)が向上しています。
《訳注》 ファジング ファズ・テスト。コンピュータプログラム検証プロセスのひとつ。無効な、予期しない、ランダムなデータ(fuzz と呼ばれます)を入力し、意図的に例外状態を発生させてシステムの検証を行なう方法。詳しくは Wikipedia の「[ファジング](https://ja.wikipedia.org/wiki/ファジング)などを参照してください。
Tauri アプリケーションのファジング・プロセスをより効率的かつ簡素化するために、「モック・ランタイム」やその他のツールをさらに実装して、個々の Tauri アプリケーションの設定やビルドを容易にすることを目指しています。
Tauri は多数のオペレーティング・システムと CPU アーキテクチャをサポートしており、通常、アプリにはメモリ安全性のないコードが含まれる可能性はほとんど、あるいはまったく、ありません。 既存のファジング・ツールやライブラリでは、こうした滅多に見られないファジングの「ユース・ケース」に対応していないため、Tauri ファジング・フレームワークを構築するには、これを実装し、libAFL などの既存のライブラリをサポートする必要があります。
《訳注》 ユース・ケース(use case) ユーザーがシステムを利用して達成する際の具体的な目標や一連の操作を記述し、システムに必要な機能要件を明確化したもの。詳しくは Wikipedia の「ユースケース」(https://ja.wikipedia.org/wiki/ユースケース) などを参照してください。
目標は、ファジングを Tauri アプリケーション開発者のためにアクセスしやすく、効率的にすることです。
【※ この日本語版は、「Feb 22, 2025 英語版」に基づいています】
© 2025 Tauri Contributors. CC-BY / MIT