ケイパビリティ

各セッションは自身の分離ブラウジング環境である

各ZeroLeakセッションは保護対象アプリケーションを自身のブラウザコンテキストで開きます — 共有されるCookie、ストレージ、セッション状態のない真新しいプロファイルです。ユーザーは許可されたドメインにのみ移動でき、新規タブやポップアップを開けず、レンダリングされたピクセルそのものがユーザーの画面に届く前に自動化対策防御を帯びます。

2人のユーザーが同じ保護対象アプリケーションにZeroLeak経由でアクセスするとき、互いのセッションデータを見られず、Cookieを共有せず、互いのブラウジング状態にいかなる形でも影響を与えられないようにすべきです。またいかなるユーザーも保護対象アプリケーションのドメインから逃れられないようにすべきです — 悪意あるリンクをクリックして、意図しないポップアップを開いて、あるいはポリシーが許可しない場所へ移動して。ブラウザコンテキスト分離はこれらすべてを強制する層です。各セッションは共有状態のない自身のブラウザコンテキストで実行されます。厳格なドメイン許可リストがナビゲーションの試みを発生前に捉えます。新規タブとポップアップはソースでブロックされます。そしてレンダリングされたピクセルストリームそのものが、外部の自動化ツールがセッションを読んだり操作したりしようとするのを妨げる、継続的な低レベルの変更を帯びます。

セッションごと
分離ブラウザコンテキスト — 自身のCookie、自身のストレージ、自身の状態、共有なし
許可リスト
要求層、リンク層、SPAポーリング層でのドメイン強制
キオスクモード
新規タブなし、ポップアップなし、右クリックメニューなし — 1セッション、1つの許可された表面

共有ブラウザ状態は漏洩であり、制御されないナビゲーションは脱出である

素朴なリモートブラウザは多数のユーザー間で単一のブラウザプロセスを共有します。あるセッションで設定されたCookieが次のセッションで見えます。localStorageのデータがセッション境界を越えます。あるユーザーの認証状態が別の人に引き継がれかねません。保護対象アプリケーション自体が行儀よく振る舞っていても、共有ブラウザはあらゆるアプリケーションレベルのアクセス制御を迂回するサイドチャネルになります。

そしてナビゲーションがあります。単一の内部ダッシュボードに閲覧権限しか持たないユーザーが、そのダッシュボードの中でフィッシングリンクをクリックし、個人アカウント用に新規タブを開き、あるいは意図しない外部リンクをたどります。ブラウザ層での強制がなければ、セッションは保護対象アプリケーションから逃れます — そして今や保護対象アプリケーションのセッションID、ユーザーのID、アクティブなブラウジング状態が、ブラウザが向かった先に見えるようになります。

ブラウザコンテキスト分離は両方を閉じます。各セッションは共有状態のない自身のブラウザコンテキストで実行されます。ブラウザ自体がセッションの到達可能なドメインの許可リストを強制し、ユーザーが他所へ行くために使えるあらゆるチャネルをブロックします — 新規タブ、ポップアップ、許可されていないドメインへのリンククリック、ページ自身によるプログラム的なナビゲーション。

ブラウザで分離、境界で強制

各セッションはレンダリングエンジン内部で自身のブラウザコンテキストを得ます — 他のあらゆるセッションの状態から完全に分離されています。厳格なドメイン許可リストがナビゲーション層で止めます — 要求の傍受、シングルページアプリケーションのナビゲーションポーリング、リンククリックの傍受が併せて、セッションが許可されていないドメインに決して到達しないことを保証します。その下で、レンダリングされたピクセルそのものが、セッションを読んだり操作したりしようとする自動化ツールを撹乱する継続的な低レベルの変更を帯びます。

共有状態のないセッションごとのブラウザコンテキスト

各ユーザーセッションは自身の分離ブラウザコンテキストで開かれます — 自身のCookieジャー、自身のローカルストレージ、自身のセッション状態を持つ真新しいプロファイルです。同じ保護対象アプリケーション上で、2人のユーザーは完全に独立したブラウザを持ち、一方のセッションから何も他方に見えません。セッション終了はコンテキストを完全に破棄し、いかなる状態も生き残りません。

ナビゲーションの瞬間に強制される厳格なドメイン許可リスト

すべてのナビゲーションの試みは実行される前に捉えられます。要求層が許可されていないドメインをネットワークレベルでブロックします。ページ内のリンククリックはレンダリング層で捉えられます。シングルページアプリケーションのナビゲーション(pushState、replaceState)はポーリングで捉えられます。セッションは、ユーザーが意図的に試みてもページが自ら試みても、許可リスト外のドメインに到達できません。

新規タブ、ポップアップ、右クリックメニューのブロック

キオスク型ブラウザはユーザーが新規タブを開いたり、ポップアップを作成したり、右クリックのコンテキストメニューを使ったりすることを許しません。ユーザーが保護対象アプリケーションから逃れるために使えるあらゆるチャネルがブラウザ構成で閉じられます。ユーザーは自分のために開かれたセッションの中で動作します — それ以上ではありません。

レンダリングされたピクセルに適用される自動化対策防御

見えるコンテンツの下で、レンダリングされたピクセルストリームは継続的な低レベルの変更を帯びます — ランダムノイズ、微細な色のシフト、要素のマイクロ変位、サブピクセルの振動。これらはユーザーが見るものに影響しませんが、公式の入力チャネル以外からセッションを読んだり操作したりしようとする自動化ツール(Selenium、Puppeteerスクリプト、スクリーンスクレイパー)を撹乱します。

分離層が強制するもの

以下の各動作は保護対象サービスごとに構成され、保護対象アプリケーションのコードではなくブラウザ層で強制されます。保護対象アプリケーションがこれらの存在を認識する必要はありません — 境界はアプリケーションの実行時から見えません。

セッションごとの完全に分離されたブラウザコンテキスト

各セッションは自身のブラウザコンテキストで実行されます — セッションに自身のCookieジャー、自身のローカルストレージ、自身のService Worker登録、自身の権限、自身のセッション状態を与えるChromiumレベルの構造です。同じ保護対象アプリケーション上の2つのセッションはブラウザレベルで何も共有しません。

ネットワークレベルでの要求傍受

すべてのナビゲーション要求 — メインドキュメント、サブドキュメント、fetch、XHR — は、ターゲットドメインをセッションの許可リストに照らしてチェックする傍受機を通過します。許可されていないドメインは接続が確立される前にブロックされます。ユーザーのクリックとナビゲーションのチェックの間に競合状態はありません。

シングルページアプリケーションのナビゲーションポーリング

最新のシングルページアプリケーションは、ネットワーク要求をせずにpushStateまたはreplaceStateを呼んでナビゲートします。単純な要求傍受機ではこれらを捉えられません。ZeroLeakはさらにページ内で短い間隔で現在のURLをポーリングするため、許可されていないパスへのSPAナビゲーションは数秒以内に捉えられ、取り消されます。

レンダリングされたページ内でのリンククリック傍受

許可されていないターゲットを持つリンク要素、window.open()呼び出し、プログラム的な位置変更 — すべてが実行される前にレンダリングされたページ内で捉えられます。たどれないリンクをクリックするユーザーは、ネットワーク要求がすでに始まった後ではなく、クリックの瞬間にブロックされます。

タブとポップアップのブロック

ブラウザは、新しいブラウジングターゲットを作成する試み — ユーザー、ページ、またはスクリプトによるもの — が即座に捉えられて破棄されるよう構成されています。セッションは常に正確に1つの可視タブを持ち、それは保護対象アプリケーションのタブです。

アイドルタイムアウトと適切なシャットダウン

各セッションはユーザーの操作を監視します。ユーザーが構成されたタイムアウトより長くアイドル状態であれば、セッションは適切に終了され、ブラウザコンテキストが破棄され、(構成されている場合)Webhookがコーディネーターに通知するので、ターゲットポリシーを更新できます。メモリを消費する放置された分離ブラウザはありません。

見えるコンテンツの下のレンダリング層防御

セッションごとの分離とナビゲーション境界を超えて、レンダリングされたピクセルストリームそのものが継続的な低レベルの変更を帯びます。その目的は自動化ツールを撹乱することです — さもなければセッション画面を読み、要素を識別し、非公式なチャネルを通じて操作するスクリプトを — ページが人間のユーザーにどう見え、どう振る舞うかに影響を与えずに。

01

ランダムな低強度ピクセルノイズ

Canvasオーバーレイがレンダリングされたページ全体に継続的に低強度のランダムノイズを描画します。人間の目はせいぜい軽いテクスチャを認識する程度ですが、画面を読もうとするOCRやテンプレートマッチングのスクリプトは、頼りにする一貫したピクセル境界を失います。ノイズの強度とリフレッシュレートは保護対象サービスごとに構成可能です。

02

微細な色合いのシフト

半透明のオーバーレイが、レンダリングされたページ全体にゆっくりと変化するランダムな色合いを適用します。白と黒の領域は目には依然として実質的に白と黒に見えますが、実際のピクセル値はシフトします。色のシグネチャに照らしてマッチングを行うビジョンベースの自動化ツールは参照点を失います。

03

継続的なマイクロブラー

画面フィルタとしてごく軽い継続的なブラーが適用されます。各フレームは高周波の詳細がわずかに異なり、これによりOCRやパターンマッチングが安定した特徴点を見つけにくくなります。ユーザーは通常の読み取り距離でブラーを知覚しません。

04

CDP注入による要素のマイクロシフト

ページ要素が通常の位置から1〜3ピクセル、ランダムに動かされます。シフトは人間の知覚より下ですが、絶対的な画面座標で要素を見つけるスクリプトを撹乱します。自動化ツールはあるフレームから次のフレームへ安定した要素位置を頼れません。

05

サブピクセルの振動(anti-Selenium)

短い間隔で、レンダリングされた表面全体が数ピクセル動かされます — 読み取りを妨げない程度に小さく、入力シミュレーションのために一貫した絶対ピクセル座標に依存する自動化ツールを打ち破る程度に大きく。Selenium型のリプレイ攻撃は固定点を失います。

セッションごとの分離が重要となる場所

運用技術およびSCADAコンソール

セッション間の状態漏洩や意図しないナビゲーションが物理システムに影響しかねない重要インフラのインターフェース。セッションごとの分離は、同じコンソール上の2人のオペレーターが互いのセッションを見られないことを保証します。厳格な許可リストは、いずれも運用コンソールから外部リンクへ移動しないことを保証します。

閲覧専用ロールを持つ社内エンタープライズアプリケーション

多数のユーザーがアクセスする社内ダッシュボード、監査インターフェース、レポートツール — 請負業者や外部監査人を含みます。各セッションは自身のブラウザであり、アクセスポリシーはナビゲーション層で強制され、レンダリング層防御は画面をスクレイピングしようとする誰の自動化にも抵抗します。

文書およびデータルームのアクセス

セッションごとのコンテキストは、あるデータルームを閲覧する請負業者が、別のデータルームの別の請負業者のCookie、検索履歴、セッションIDを見られないことを意味します。許可リストは、データルームセッションが決して広いインターネットに行かないことを保証します。

研究および臨床試験のポータル

複数の研究者が厳格な開示境界の下で患者データにアクセスする試験ポータル。セッションごとの分離が境界をブラウザ層で強制します。許可リストがナビゲーション層で強制します。レンダリング防御がデータ画面チャネルを通じてスクレイピングしようとする誰の自動化にも抵抗します。

よくある質問

これはChromeのシークレットモードと同じものですか?
概念的には似ていますが、異なる層で強制されます。シークレットモードはユーザーが放棄できるプロファイル設定です。ブラウザコンテキスト分離はZeroLeakが管理するセッションごとのコンテナです — セッションの分離について選択の余地はなく、それを無効化するUIコントロールもありません。ユーザーは誤ってでも意図的にでも通常のプロファイルに逃れることはできません。
ユーザーが許可されていないドメインへのリンクをクリックするとどうなりますか?
クリックはナビゲーションが実行される前に捉えられます。セッションは現在のページに留まり、(オプションで)ターゲットが許可されていない旨の通知を表示します。イベントはセッション記録に書き込まれるので、オペレーターは何が試みられたかを見られます。部分的なナビゲーションなし、サードパーティ要求なし、許可されていないターゲットへのセッションID漏洩なし。
シングルページアプリケーションのナビゲーションはどう扱われますか?
最新のSPAはネットワーク要求をせずにpushStateまたはreplaceStateでURLを変更します — 単純な要求傍受機ではこれらを取りこぼします。ZeroLeakはページ内で短い間隔のポーリングチェックを実行します。URLが許可されていないパスに変わると、セッションは即座に安全な状態に戻されます。ポーリング間隔は、許可されていないSPAナビゲーションがせいぜい数秒で済むほど短く保たれています。
レンダリング層防御はページのパフォーマンスを低下させますか?
ピクセルノイズのオーバーレイはCPUとメモリ使用量を低く保つためにサイズを縮小したCanvas(通常は1/4解像度)を使い、妥当なレートでリフレッシュします。色シフトのオーバーレイとマイクロブラーはCSSレベルのフィルタです。累積的な影響は、通常のハードウェアで数百の同時セッションを実行できるほど小さいものです。
保護対象アプリケーションはこの分離の中で動作していることを検出できますか?
その必要はなく、そういう枠組みでは設計されていません。保護対象アプリケーションは標準的なヘッドレスブラウザ環境を見ます。分離、許可リスト、キオスク制限、レンダリング防御はアプリケーションの実行時の外で動作します — アプリケーションにそれらと協力するよう求めることはなく、それらを無効化することもできません。
セッション終了時に何が起きますか?
ブラウザコンテキストは完全に破棄されます。Cookie、ローカルストレージ、Service Worker、キャッシュされたページ、メモリ内状態 — すべてが消えます。同じ保護対象サービス上で開かれる次のセッションが引き継ぐものは何もありません。構成されている場合、セッションIDと終了理由とともにコーディネーターのWebhookがトリガーされるので、ターゲットポリシーや監査システムを更新できます。

セッションごとの分離をライブデモでご覧ください

同じ保護対象アプリケーションで2つのセッションを並べて実行し、両者の間に何も漏れないことをお見せし、許可リスト外への移動を試み、外部の自動化ツールでセッションを操作してみます — 何が起きるかをお見せします。