implementing-browser-isolation-for-zero-trust skill (Anthropic-Cybersecurity-Skills)

From Public Agent Wiki

What it does. 'Deploys remote browser isolation (RBI) as a core component of a Zero Part of mukul975/Anthropic-Cybersecurity-Skills (817 security skills) (mukul975/Anthropic-Cybersecurity-Skills).

Upstream mukul975/Anthropic-Cybersecurity-Skills
Skill file skills/implementing-browser-isolation-for-zero-trust/SKILL.md
License Apache-2.0 (skill folder LICENSE)
Author mukul975
Fetched 2026-09-10

Install

  • npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill implementing-browser-isolation-for-zero-trust, or copy the skill folder into ~/.claude/skills/implementing-browser-isolation-for-zero-trust/.
  • Raw file: curl -sL https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/HEAD/skills/implementing-browser-isolation-for-zero-trust/SKILL.md

SKILL.md (verbatim)

name: implementing-browser-isolation-for-zero-trust
description: 'Deploys remote browser isolation (RBI) as a core component of a Zero
  Trust architecture. Implements isolation policies with URL categorization and risk-based
  routing, content disarming and reconstruction (CDR) for file sanitization, data
  loss prevention controls within isolated sessions, and integration with Secure Web
  Gateway and ZTNA platforms. Based on Cloudflare Browser Isolation, Menlo Security,
  and Zscaler RBI approaches. Use when hardening web access against zero-day exploits,
  phishing, credential theft, and browser-based data exfiltration.

  '
domain: cybersecurity
subdomain: network-security
tags:
- browser-isolation
- zero-trust
- RBI
- CDR
- URL-categorization
- content-disarming
- secure-web-gateway
version: '1.0'
author: mukul975
license: Apache-2.0
nist_csf:
- PR.IR-01
- DE.CM-01
- ID.AM-03
- PR.DS-02
mitre_attack:
- T1046
- T1040
- T1557
- T1071
- T1003
mitre_f3:
  version: '1.1'
  tactics:
  - initial-access
  - positioning
  - execution
  techniques:
  - id: T1660
    name: Phishing
    tactic: initial-access
    source: attack
  - id: T1557
    name: Adversary-in-the-Middle
    tactic: positioning
    source: attack
  - id: T1185
    name: Browser Session Hijacking
    tactic: positioning
    source: attack
  - id: F1007
    name: Adversary-in-the-Browser
    tactic: positioning
    source: f3
  - id: F1007.002
    name: 'Adversary-in-the-Browser: Malicious Browser Extension'
    tactic: positioning
    source: f3
  - id: F1007.003
    name: 'Adversary-in-the-Browser: Malicious JavaScript Injection'
    tactic: execution
    source: f3

Implementing Browser Isolation for Zero Trust

When to Use

  • When deploying remote browser isolation as part of a Zero Trust security architecture
  • When protecting users from zero-day browser exploits and drive-by downloads
  • When implementing content disarming and reconstruction for file downloads
  • When enforcing data loss prevention policies for web browsing sessions
  • When securing access to untrusted or uncategorized websites
  • When integrating browser isolation with existing SWG and ZTNA infrastructure
  • When protecting against phishing and credential theft via isolated rendering

Prerequisites

  • Familiarity with Zero Trust architecture principles and network security
  • Understanding of Secure Web Gateway (SWG) and proxy deployment models
  • Access to a test or lab environment for policy validation
  • Python 3.8+ with required dependencies installed
  • DNS and proxy infrastructure for traffic routing

Instructions

Phase 1: URL Categorization and Risk Classification

Build a URL categorization engine that classifies websites by risk level to determine isolation policy. URLs are scored based on threat intelligence feeds, domain reputation, content category, and historical risk indicators.

from agent import BrowserIsolationPolicyEngine

engine = BrowserIsolationPolicyEngine(
    organization="Acme Corp",
    default_isolation_mode="isolate_risky",
)

# Classify a URL and determine isolation action
result = engine.classify_url("https://docs.google.com/spreadsheets/d/abc123")
print(f"Category: {result['category']}")
print(f"Risk Level: {result['risk_level']}")
print(f"Isolation Action: {result['action']}")
# Output: Category: cloud_productivity
#         Risk Level: low
#         Action: allow_direct

result = engine.classify_url("https://unknown-sketchy-domain.xyz/download.html")
print(f"Category: {result['category']}")
print(f"Risk Level: {result['risk_level']}")
print(f"Isolation Action: {result['action']}")
# Output: Category: uncategorized
#         Risk Level: high
#         Action: full_isolation

Phase 2: Isolation Policy Configuration

Define isolation policies that map URL categories and risk levels to specific isolation modes and DLP restrictions. Policies support granular controls including clipboard, file download, upload, and printing restrictions.

# Configure isolation policies
engine.add_isolation_policy(
    name="Block Uncategorized Sites",
    description="Fully isolate all uncategorized or newly registered domains",
    match_criteria={
        "url_categories": ["uncategorized", "newly_registered"],
        "risk_levels": ["high", "critical"],
    },
    isolation_mode="full_isolation",
    dlp_controls={
        "disable_copy_paste": True,
        "disable_download": True,
        "disable_upload": True,
        "disable_printing": True,
        "disable_keyboard_input": False,
        "watermark_session": True,
    },
)

engine.add_isolation_policy(
    name="Isolate Webmail with DLP",
    description="Isolate personal webmail with download restrictions",
    match_criteria={
        "url_categories": ["webmail"],
        "domains": ["mail.google.com", "outlook.live.com", "mail.yahoo.com"],
    },
    isolation_mode="read_only_isolation",
    dlp_controls={
        "disable_copy_paste": True,
        "disable_download": True,
        "disable_upload": True,
        "disable_printing": True,
        "disable_keyboard_input": False,
        "watermark_session": False,
    },
)

engine.add_isolation_policy(
    name="CDR for File Downloads",
    description="Apply content disarm and reconstruction to all file downloads",
    match_criteria={
        "url_categories": ["*"],
        "file_types": ["pdf", "docx", "xlsx", "pptx", "zip", "exe", "msi"],
    },
    isolation_mode="cdr_passthrough",
    cdr_config={
        "strip_macros": True,
        "strip_embedded_objects": True,
        "strip_javascript": True,
        "strip_active_content": True,
        "flatten_pdf": True,
        "reconstruct_to_safe_format": True,
        "max_file_size_mb": 50,
        "allowed_file_types": ["pdf", "docx", "xlsx", "pptx", "png", "jpg"],
    },
)

engine.add_isolation_policy(
    name="Allow Trusted SaaS Direct",
    description="Allow direct access to sanctioned SaaS applications",
    match_criteria={
        "url_categories": ["cloud_productivity", "business_saas"],
        "domains": [
            "*.office365.com", "*.office.com", "*.microsoft.com",
            "*.salesforce.com", "*.slack.com", "*.github.com",
        ],
        "risk_levels": ["low"],
    },
    isolation_mode="allow_direct",
    dlp_controls={
        "disable_copy_paste": False,
        "disable_download": False,
        "disable_upload": False,
        "log_all_downloads": True,
    },
)

# List all policies
for policy in engine.list_policies():
    print(f"  [{policy['priority']}] {policy['name']} -> {policy['isolation_mode']}")

Phase 3: Content Disarming and Reconstruction (CDR)

Implement CDR processing to sanitize downloaded files by deconstructing them, stripping potentially malicious elements (macros, embedded objects, scripts), and reconstructing clean versions that preserve usability.

# Process a file through CDR
cdr_result = engine.process_file_cdr(
    file_path="/tmp/downloads/quarterly_report.docx",
    source_url="https://partner-portal.example.com/reports/q4.docx",
    cdr_profile="strict",
)

print(f"Original file: {cdr_result['original']['filename']}")
print(f"Original size: {cdr_result['original']['size_bytes']} bytes")
print(f"Threats found: {cdr_result['threats_found']}")
for threat in cdr_result['threats_detail']:
    print(f"  - {threat['type']}: {threat['description']} [{threat['action']}]")
print(f"Clean file: {cdr_result['reconstructed']['filename']}")
print(f"Clean size: {cdr_result['reconstructed']['size_bytes']} bytes")
print(f"File integrity preserved: {cdr_result['reconstructed']['usable']}")

# Example output:
# Original file: quarterly_report.docx
# Original size: 245760 bytes
# Threats found: 3
#   - macro: VBA macro with AutoOpen trigger [STRIPPED]
#   - embedded_ole: Embedded OLE object (executable) [STRIPPED]
#   - external_link: External template reference [STRIPPED]
# Clean file: quarterly_report_clean.docx
# Clean size: 198432 bytes
# File integrity preserved: True

Phase 4: Session Control and Monitoring

Implement real-time session monitoring for isolated browsing sessions with keystroke logging policy, clipboard interception, and download tracking. Integrate with SIEM for security event correlation.

# Create an isolation session
session = engine.create_isolation_session(
    user_id="jsmith@acme.com",
    user_groups=["engineering", "contractors"],
    device_posture={
        "os": "Windows 11",
        "managed": True,
        "edr_running": True,
        "disk_encrypted": True,
        "os_patched": True,
    },
    target_url="https://external-vendor.example.com/portal",
)

print(f"Session ID: {session['session_id']}")
print(f"Isolation Mode: {session['isolation_mode']}")
print(f"Applied Policy: {session['applied_policy']}")
print(f"DLP Controls: {json.dumps(session['dlp_controls'], indent=2)}")

# Monitor session events
events = engine.get_session_events(session_id=session["session_id"])
for event in events:
    print(f"  [{event['timestamp']}] {event['event_type']}: {event['details']}")

# Generate session audit report
audit = engine.generate_session_audit(
    user_id="jsmith@acme.com",
    date_range=("2026-03-01", "2026-03-19"),
)
print(f"Total sessions: {audit['total_sessions']}")
print(f"Isolated sessions: {audit['isolated_sessions']}")
print(f"Files processed via CDR: {audit['cdr_processed_files']}")
print(f"DLP violations: {audit['dlp_violations']}")

Phase 5: Integration with Zero Trust Platform

Integrate browser isolation with the broader Zero Trust architecture including identity provider, device posture checks, and conditional access policies.

# Define Zero Trust conditional access integration
zt_policy = engine.create_zero_trust_integration(
    identity_provider="Azure AD",
    conditional_access_rules=[
        {
            "name": "Unmanaged Device Isolation",
            "condition": {"device_managed": False},
            "action": "full_isolation",
            "dlp_override": {"disable_download": True, "disable_upload": True},
        },
        {
            "name": "High Risk User Isolation",
            "condition": {"user_risk_level": "high"},
            "action": "full_isolation",
            "dlp_override": {"disable_copy_paste": True, "watermark_session": True},
        },
        {
            "name": "Contractor Restricted Access",
            "condition": {"user_group": "contractors"},
            "action": "read_only_isolation",
            "dlp_override": {"disable_download": True, "disable_printing": True},
        },
        {
            "name": "Privileged Admin Isolation",
            "condition": {"user_group": "admins", "target_category": "admin_console"},
            "action": "full_isolation",
            "dlp_override": {"watermark_session": True, "record_session": True},
        },
    ],
    swg_integration={
        "proxy_mode": "explicit",
        "pac_url": "https://pac.acme.com/proxy.pac",
        "ssl_inspection": True,
        "bypass_domains": ["*.acme.internal"],
    },
)

# Evaluate a request against all policies
decision = engine.evaluate_access_request(
    user_id="contractor@vendor.com",
    user_groups=["contractors"],
    device_posture={"managed": False, "edr_running": False},
    target_url="https://sensitive-app.acme.com/dashboard",
    user_risk_level="medium",
)
print(f"Decision: {decision['action']}")
print(f"Matched Rules: {[r['name'] for r in decision['matched_rules']]}")
print(f"DLP Controls: {decision['effective_dlp_controls']}")

Examples

Quick Policy Deployment for Phishing Protection

engine = BrowserIsolationPolicyEngine(default_isolation_mode="isolate_risky")

# Isolate all links from email
engine.add_isolation_policy(
    name="Email Link Isolation",
    description="Isolate all URLs clicked from email clients",
    match_criteria={
        "referrer_categories": ["email_client"],
        "url_categories": ["*"],
    },
    isolation_mode="full_isolation",
    dlp_controls={
        "disable_keyboard_input": True,
        "disable_download": True,
        "watermark_session": True,
    },
)

# Test against a phishing URL
result = engine.evaluate_access_request(
    user_id="user@acme.com",
    target_url="https://micr0soft-login.phishing.com/auth",
    referrer="https://mail.google.com",
    user_risk_level="low",
)
print(f"Action: {result['action']}")  # full_isolation

CDR Pipeline for All Downloads

engine = BrowserIsolationPolicyEngine()

# Scan a batch of downloaded files through CDR
files = [
    "/tmp/downloads/invoice.pdf",
    "/tmp/downloads/contract.docx",
    "/tmp/downloads/data_export.xlsx",
    "/tmp/downloads/presentation.pptx",
]

batch_result = engine.batch_cdr_process(
    files=files,
    cdr_profile="strict",
    quarantine_on_threat=True,
)

print(f"Processed: {batch_result['total_processed']}")
print(f"Clean: {batch_result['clean_count']}")
print(f"Threats neutralized: {batch_result['threats_neutralized']}")
print(f"Quarantined: {batch_result['quarantined_count']}")
for f in batch_result["results"]:
    status = "CLEAN" if f["clean"] else "SANITIZED"
    print(f"  [{status}] {f['filename']}: {f['threats_found']} threats")

Generating Isolation Policy Compliance Report

engine = BrowserIsolationPolicyEngine()

report = engine.generate_compliance_report(
    date_range=("2026-03-01", "2026-03-19"),
    include_metrics=True,
)

print(f"Total web requests: {report['total_requests']}")
print(f"Isolated requests: {report['isolated_requests']} ({report['isolation_rate']}%)")
print(f"CDR processed files: {report['cdr_stats']['total_files']}")
print(f"Threats neutralized: {report['cdr_stats']['threats_neutralized']}")
print(f"DLP violations blocked: {report['dlp_violations_blocked']}")
print(f"Zero-day attacks prevented: {report['zero_day_blocked']}")

Other files in this skill

references/api-reference.md (verbatim)

API Reference: Implementing Browser Isolation for Zero Trust

BrowserIsolationPolicyEngine

Core engine for managing browser isolation policies, CDR processing, and Zero Trust integration.

Initialization

from agent import BrowserIsolationPolicyEngine

engine = BrowserIsolationPolicyEngine(
    organization="Acme Corp",
    default_isolation_mode="isolate_risky",  # isolate_risky | isolate_all | allow_all
)

classify_url()

Classify a URL by category and risk level.

result = engine.classify_url(
    url="https://docs.google.com/spreadsheets/d/abc",
    referrer=None,  # Optional referrer URL
)
# Returns: {url, domain, category, risk_level, risk_weight, action, reason}

URL Categories:

Category Risk Weight Example Domains
cloud_productivity 1 docs.google.com, office365.com, dropbox.com
business_saas 1 salesforce.com, slack.com, github.com
search_engines 1 google.com, bing.com, duckduckgo.com
developer_tools 2 stackoverflow.com, npmjs.com, pypi.org
news_media 2 cnn.com, bbc.com, reuters.com
social_media 3 facebook.com, twitter.com, linkedin.com
webmail 3 mail.google.com, outlook.live.com
ai_tools 3 chat.openai.com, claude.ai
file_sharing 4 wetransfer.com, mega.nz, mediafire.com
admin_console 4 console.aws.amazon.com, portal.azure.com
newly_registered 5 (domains < 30 days old)
uncategorized 5 (unknown domains)
phishing 5 (pattern-matched phishing URLs)
malware_hosting 5 (threat intel flagged domains)

Risk Levels:

Weight Level Default Action
1 low allow_direct
2 low allow_direct
3 medium full_isolation
4 high full_isolation
5 critical block

add_isolation_policy()

Add an isolation policy with match criteria and controls.

policy = engine.add_isolation_policy(
    name="Policy Name",                    # Required
    description="Policy description",
    match_criteria={
        "url_categories": ["webmail"],     # URL categories to match
        "risk_levels": ["medium", "high"], # Risk levels to match
        "domains": ["*.example.com"],      # Specific domains (supports wildcards)
        "referrer_categories": ["email"],  # Referrer URL categories
        "file_types": ["pdf", "docx"],     # File type triggers
        "user_groups": ["contractors"],    # User group membership
    },
    isolation_mode="full_isolation",       # See Isolation Modes below
    dlp_controls={                         # See DLP Controls below
        "disable_copy_paste": True,
        "disable_download": True,
    },
    cdr_config={                           # CDR config (for cdr_passthrough mode)
        "strip_macros": True,
        "strip_embedded_objects": True,
        "strip_javascript": True,
    },
    priority=1,                            # Lower = higher priority
)

Isolation Modes:

Mode Description Code on Endpoint Network Isolated
full_isolation Pixel-streaming RBI No Yes
dom_reconstruction Sanitized DOM mirror No Yes
read_only_isolation Pixel stream, input restricted No Yes
cdr_passthrough Direct browse, CDR for files Yes No
allow_direct No isolation (trusted) Yes No
block Access denied No Yes

DLP Controls:

Control Type Default Description
disable_copy_paste bool false Block clipboard operations
disable_download bool false Block file downloads
disable_upload bool false Block file uploads
disable_printing bool false Block printing
disable_keyboard_input bool false Block all keyboard input
watermark_session bool false Apply visual watermark with user ID
record_session bool false Record full session for audit
log_all_downloads bool true Log download events to SIEM
log_clipboard_events bool true Log clipboard operations
log_file_uploads bool true Log upload events
max_download_size_mb int 100 Maximum download size
blocked_upload_types list [exe,bat,...] File types blocked from upload

process_file_cdr()

Process a file through Content Disarm and Reconstruction.

result = engine.process_file_cdr(
    file_path="/path/to/file.docx",
    source_url="https://example.com/file.docx",  # Optional
    cdr_profile="strict",  # strict | standard | permissive
)

CDR Profiles:

Profile Strips Use Case
strict All threat types (high, medium, low) High-security environments
standard High and critical severity threats General business use
permissive Critical severity only Low-risk trusted sources

CDR Threat Types Detected:

Type Severity File Types
macro high docx, xlsx, pptx, doc, xls
embedded_ole high docx, xlsx, pptx, pdf, rtf
javascript_pdf high pdf
external_link medium docx, xlsx, pptx
embedded_executable critical pdf, docx, zip, rar
dde_exploit high docx, xlsx, csv
hidden_content low docx, xlsx, pptx, pdf
metadata_leak low docx, xlsx, pdf, jpg, png

CDR-Supported File Types:

Supported (reconstructed) Blocked (quarantined)
pdf, docx, xlsx, pptx exe, msi, dll
doc, xls, ppt, rtf, csv bat, ps1, sh
zip, rar, 7z iso
png, jpg, gif, svg, html

batch_cdr_process()

Process multiple files through CDR.

result = engine.batch_cdr_process(
    files=["/path/file1.pdf", "/path/file2.docx"],
    cdr_profile="strict",
    quarantine_on_threat=True,
)
# Returns: {total_processed, clean_count, threats_neutralized, quarantined_count, results}

create_isolation_session()

Create an isolated browsing session with policy evaluation.

session = engine.create_isolation_session(
    user_id="user@acme.com",
    target_url="https://example.com",
    user_groups=["engineering"],
    device_posture={
        "os": "Windows 11",
        "managed": True,
        "edr_running": True,
        "disk_encrypted": True,
    },
    user_risk_level="low",  # low | medium | high
)
# Returns: {session_id, isolation_mode, applied_policy, dlp_controls, ...}

create_zero_trust_integration()

Configure Zero Trust platform integration.

zt = engine.create_zero_trust_integration(
    identity_provider="Azure AD",
    conditional_access_rules=[
        {
            "name": "Rule Name",
            "condition": {
                "device_managed": False,        # Device posture check
                "user_risk_level": "high",      # Identity risk signal
                "user_group": "contractors",    # Group membership
                "target_category": "admin_console",  # URL category
            },
            "action": "full_isolation",         # Isolation mode override
            "dlp_override": {                   # DLP control overrides
                "disable_download": True,
            },
        },
    ],
    swg_integration={
        "proxy_mode": "explicit",               # explicit | transparent | pac
        "pac_url": "https://pac.acme.com/proxy.pac",
        "ssl_inspection": True,
        "bypass_domains": ["*.acme.internal"],
    },
)

evaluate_access_request()

Evaluate a request against all policies and ZT rules.

decision = engine.evaluate_access_request(
    user_id="user@acme.com",
    target_url="https://example.com",
    user_groups=["engineering"],
    device_posture={"managed": True},
    user_risk_level="low",
    referrer=None,
)
# Returns: {session_id, action, url_classification, matched_rules, effective_dlp_controls}

generate_compliance_report()

Generate deployment compliance report.

report = engine.generate_compliance_report(
    date_range=("2026-03-01", "2026-03-31"),
    include_metrics=True,
)

CLI Usage

# Classify a URL
python agent.py --action classify --url "https://example.com"

# Test CDR on a file
python agent.py --action cdr_test --file "/path/to/file.docx"

# Run full demonstration
python agent.py --action demo --org "Acme Corp" --output report.json

References

Back to mukul975/Anthropic-Cybersecurity-Skills (817 security skills) or Agent skills.