日本語

開発者ツール · Base64 エンコーダーおよびデコーダー

オンラインでの Base64 トークンのデコード: ツールをブラウザーで実行する理由

· なぜそれが重要なのか

base64 プライバシー

[ネットワーク] パネルにネットワーク リクエストが表示されず、ブラウザ タブでローカルにデコードされたトークン
オリジナル ToolAcre ベクトル イラスト

多くのオンライン デコーダーは入力をサーバーに送信します。つまり、貼り付けたすべてのトークン、資格情報、ペイロードが公開されます。この投稿では、リークの内容、ツールがローカルに留まることを確認する方法、ToolAcre のデコーダーがそのように動作する理由について説明します。

見知らぬ人のサーバーを通過した API キー — トークンをフォーム投稿デコーダーに貼り付けると実際に送信されるもの

エンジニアは、Base64 でエンコードされた JWT または API 応答を検査して、システムをデバッグする必要があります。彼らはお気に入りの検索エンジンを開き、オンライン デコーダ ツールを見つけて、その入力フィールドにトークンを貼り付けます。このツールはデコードされたペイロードを即座に表示し、エンジニアは作業に戻ります。彼らが見ていなかったのは、サーバーに送信されたもの、つまりトークン全体と、それに含まれるすべての資格情報、クレーム、個人情報です。そのリクエストはログに記録され、サーバー アクセス ログに保存され、おそらくプロキシによってキャッシュされ、ネットワーク トラフィックを監視している人には確実に見えるようになっています。

オンライン デコーダーを使用するという何気ない選択により、管理されていないサービスにプロダクション トークンが漏洩してしまいました。この投稿では、リモート デコーダに貼り付けたときに何が漏洩するか、ツールがローカルにあることを確認する方法、ToolAcre デコーダがブラウザ内で動作してシークレットがサーバーに送信されない理由について説明します。 JWT (JSON Web トークン) には、ドットで区切られたエンコードされたクレームが含まれています。中央のセクションをデコードすると、多くの場合、ユーザー ID、電子メール アドレス、ロール、発行時刻、そして場合によっては API キーやセッション ID が明らかになります。

Base64 ペイロードには通常、資格情報、JWT クレーム、セッション データ、個人情報が含まれます。

API 応答の Base64 ペイロードには、ファイルのアップロード、署名、または部分的な暗号化キーが含まれる場合があります。これらはすべて機密データであり、デバイスから流出すべきではありません。しかし、開発者がそのような値を端末または HTTP 応答からコピーし、オンライン デコーダに貼り付けて内容をすばやく読み取ると、その値はリモート サーバーに直接送信されます。デコーダが多数のユーザーを処理する場合、1 つのサーバーに数千のトークンとペイロードのデータベースが蓄積される可能性があります。

サーバーが処理後にそれらを削除したとしても、それらはログに記録され、転送中に表示され、他のサービスによって傍受または保存される可能性があります。サーバーラウンドトリップデコーダーとタブ内デコーダーの違いは絶対的です。入力をデコードするために POST または GET リクエストを必要とする Web ページ上のフォームは、データがリモート サーバーに送信されることを意味します。たとえサーバーが誠実でデータをすぐに削除したとしても、トラフィックは危険にさらされます。プロキシ、ロード バランサー、監視システム、および TLS 終端ポイントはすべてリクエストを認識します。

2 つのアーキテクチャ: サーバーのラウンドトリップとタブ内デコード - それぞれのバイトがどこに入るのか、そして誰がそれらを記録できるのか

サーバーが正直でない場合、またはサーバーが危険にさらされている場合、トークンは他の人のデータベースに保存されます。タブ内デコーダは、リクエストがまったく送信されないことを意味します。入力したテキスト、貼り付けた Base64 文字列、およびデコードされた結果はすべて、デバイスのブラウザーに残ります。サーバーに接続されることはなく、第三者がデータを参照することもなく、ブラウザー独自の JavaScript が変換を行います。自分で確認するには 1 分かかります。ブラウザに組み込まれているネットワーク パネルのみが必要です。

新しいタブで Base64 エンコーダとデコーダを開き、開発者コンソール (ほとんどのブラウザでは F12) を開き、[ネットワーク] タブをクリックします。リストが空であることを確認するか、クリア ボタンをクリックしてください。次に、サンプル トークンまたは Base64 文字列をデコーダに貼り付け、[デコード] をクリックします。 「ネットワーク」パネルを注意深く見てください。完全に空のままで新しいリクエストが表示されない場合は、デコードはブラウザー内でローカルに行われています。サーバーへのリクエストが表示された場合、そのリクエストにはデータが含まれています。

ネットワーク パネルで自分自身を確認する方法 — ペースト中にリクエストを監視すること、および静かなパネルが何を証明するか

または、ページ ソース HTML または JavaScript を開き (右クリック、[ページ ソースを表示])、フォームが投稿または取得される場所を検索します。ページの読み込み元のドメインと異なるリモート エンドポイントに送信する場合、入力はデバイスから送信されます。ネットワークパネルを簡単にチェックすることで、デコーダがローカルかリモートかを証明します。厳密にローカルなツールは、何かをデコードするときにリクエストを行いません。入力をパラメーターとして使用する GET リクエスト、フォーム データを使用する POST、API へのフェッチ呼び出しはありません。

操作中、パネルは完全に空のままです。これを偽造するのは難しくありません。賢いツールを使えばローカルでデコードでき、データを追跡サーバーに送信することもできます。そのため、コンテンツ セキュリティ ポリシーを確認することも重要です。 [ネットワーク] パネルの応答ヘッダー タブに表示される厳格なコンテンツ セキュリティ ポリシーにより、さまざまな種類の外部呼び出しが除外されます。外部スクリプト、フォント、画像を禁止し、任意のエンドポイントへのフォーム投稿を許可しないポリシーにより、悪意のあるページまたは侵害されたページが実行できる操作が制限されます。

分析やサードパーティのスクリプトも重要ではない理由 — 厳格なコンテンツ セキュリティ ポリシーがサイレント データ漏洩をどのように排除するか

CSP は絶対的な保証ではありませんが、ネットワーク チェックと組み合わせることで、ツールが主張どおりの動作を行っているという強力な証拠になります。完全な検証を行うには、ネットワーク パネル、外部リクエストのページ ソース、CSP ヘッダーの 3 つを同時に監視しながら、サンプル トークンをデコードします。

リクエストを行わず、サードパーティの JavaScript も含まず、さらなる読み込みを禁止する厳格な CSP を宣言するページは、すべてを許可するページよりも侵害するのがはるかに困難です。 Base64 エンコーダとデコーダはこのアプローチを使用します。操作はデバイス上の Web ワーカーで実行され、サイトには外部コードを禁止する厳格な CSP があり、デコード時にページはネットワーク リクエストを行いません。

成功した例: ネットワーク パネルを開いた状態でサンプル トークンをデコードします。リクエストもストレージも、後で削除するものはありません。

[ネットワーク] パネル、ブラウザ コンソール、ページ ソースでこれを自分で監査し、ツールのプライバシーに関する約束ではなく、自分自身の観察を信頼することができます。すべてのトークン漏洩が悪意のあるデコーダから発生するわけではないため、より広範なコンテキストが重要です。すべてのトラフィックを監視し、リクエストをログに記録するブラウザ拡張機能は、拡張機能が侵害されているか悪意がある場合に、誠実なローカル ツールに貼り付けた内容を確認できます。便宜上、すべてのコピー アンド ペースト操作を保存するクリップボード マネージャーでトークンを保持できます。

ショルダーサーフィンでは、作業中に誰かがあなたの画面を監視し、デコードされた値を直接キャプチャします。これらは Web ツールの制御の範囲外です。デコーダ自体は、拡張レベルのアクセスや物理的な観察から保護することはできません。しかし、サーバー間の往復の危険を排除することは可能であり、排除しなければなりません。実際の運用トークンを何かに貼り付ける場合は、そのツールをローカルで実行する必要があります。ローカル デコーダとリモート デコーダのどちらを使用するかの決定は、時間の経過とともに複雑になるセキュリティ上の選択です。リモート デコーダを 1 回使用すると、1 つのトークンが公開され、1 つのサーバーがデータを保持することになります。

これでカバーされないもの — ブラウザ拡張機能、クリップボード マネージャー、およびショルダー サーフィンは、Web ツールの制御の範囲外です

リモート デコーダを定期的に使用すると、制御していないサーバーを介して何百ものトークンが流れることになります。機密性の高い値をオンライン ツールに貼り付ける習慣のある開発者は、それが許容されるものであることを徐々に訓練し、暴露を正常化します。ローカル デコーダに切り替えると、ツール レベルで露出が完全に削除されます。ログやチャット履歴にトークンが現れるといった他の問題は解決されませんが、制御可能な漏洩源が 1 つ排除されます。ツールがローカルにあることを確認することは、主張を信頼することではなく、観察可能なものをチェックすることの問題です。

ネットワーク パネルのトラフィック、ページのソース コード、HTTP ヘッダー、およびブラウザーのコンソール エラーはすべて証拠を提供します。ツールがローカルであると主張しているにもかかわらず、それを検証する方法がない場合、懐疑的になるのは当然です。 ToolAcre Base64 エンコーダおよびデコーダは完全にブラウザ内で実行され、デコード時にリクエストは行われません。 [ネットワーク] タブを開き、実際のトークンを貼り付けてデコードすると、送信リクエストがないことがわかります。デコードされた値はブラウザにのみ表示されます。これはどのサーバーにも保存されず、分析に送信されず、どこにも記録されませんが、再度アクセスしてページがキャッシュされた場合はブラウザーのキャッシュに記録されます。

要点: データがすでに存在する場所をデコードする — Base64 エンコーダーとデコーダーがアカウントやアップロードを行わずにブラウザー内で完全に実行される仕組み

ローカルでデコードすると、トークンは自分のもののままになります。実践的なアドバイスは単純明快です。 Base64 トークンまたは JWT をデコードする必要がある場合は、ブラウザーでローカルに実行されるツールを使用します。 [ネットワーク] パネルを開いてデコード中にチェックすることで、リクエストが行われていないことを確認します。サーバーに投稿するオンライン ツールを見つけた場合は、その使用を中止してください。データがリモート サーバーに送信されるツールには、本番トークン、API キー、または機密データを決して貼り付けないでください。有効期間の短いトークンを保存し、有効期間の長いトークンを定期的にローテーションして、危険にさらされる機会を最小限に抑えます。

ToolAcre Base64 エンコーダーおよびデコーダーの場合、貼り付けたトークンと資格情報はタブに残り、[ネットワーク] パネルを一目見るだけで自分で確認できます。