Review ID: 2217aef36202Generated: 2026-06-24T22:31:38.078Z
CHANGES REQUESTED
22
AI-Confirmed Threats
79
Raw Findings
13
Critical
8
High
50
Low
AI-Confirmed Breakdown
22
Confirmed Threats
10
Critical
6
High
6
Low
0 of 108 Agents Deployed
DiamondPlatinumGoldSilverBronzeHR RoastyFree Baseline
chromium/chromium →
main @ f5a7f69
AIAI Threat Analysis
# SECURITY REVIEW: Chromium Extension APIs
REAL THREATS
CRITICAL: Server-Side Request Forgery (SSRF) Attack Surface
Findings 69-77, 3, 7, 8 - These are legitimate SSRF vectors in the identity and auth flow APIs.
Finding 69-70: Token requests with user-controlled parameters can be redirected to internal services. An attacker could probe internal metadata endpoints (169.254.169.254), internal auth servers, or exfiltrate tokens to attacker-controlled domains.
Finding 71-75: Multiple auth dialog URLs are constructed from user input without sufficient validation. This lets extensions hit arbitrary internal endpoints during OAuth flows.
Finding 3: The downloads API accepts arbitrary URLs. This is a classic SSRF - extensions can probe internal networks, port scan, and access cloud metadata services.
Finding 7-8: Auth flow URLs are user-controlled. Attackers can redirect authentication flows through internal services.
Impact: Full internal network reconnaissance, cloud metadata theft (AWS keys, GCP tokens), bypass of firewall rules, potential RCE via exploiting internal services.
CRITICAL: Open Redirect Vulnerabilities
Findings 75, 76, 77, 6, 9 - Open redirects in authentication flows are especially dangerous.
Finding 75-77: Consent and redirect URLs aren't validated against allowlists. Attackers can redirect users from trusted Google domains to phishing sites.
Finding 6, 9: OnAuthFlowURLChange callbacks don't validate redirect targets.
Impact: Credential phishing (looks like google.com redirecting to evil.com), OAuth token theft, bypass of CSRF protections that trust Google domains.
CRITICAL: Command Injection / Arbitrary Process Execution
Findings 1, 10, 11, 78 - Native messaging hosts are launched with insufficient input validation.
Finding 1: Native host names aren't sanitized before process launch. Could allow path traversal or shell metacharacters.
Finding 10-11: Command line arguments passed unsanitized to spawned processes.
Finding 78: The entire native messaging launch mechanism is flagged as insecure.
Impact: Full system compromise. A malicious extension can execute arbitrary code on the host system with user privileges. This is RCE.
HIGH: Sensitive Information Disclosure
Finding 35 - Account enumeration via identity.getAccounts is a real privacy leak. Attackers can determine which Google accounts are logged in, enabling targeted attacks.
Impact: Privacy violation, targeted phishing, tracking across sites.
MODERATE: Potentially Dangerous API Configurations
Findings 0, 2, 12 - These are powerful APIs that need careful review:
Finding 0: Debugger API gives full tab control - can inject scripts, steal data from any page
Finding 2: Desktop capture allows screen recording - can capture passwords, private messages
Finding 12: Native messaging allows arbitrary process launch (related to command injection above)
Impact: These aren't vulnerabilities per se, but they're extremely high-privilege capabilities. If extension permission models are weak, these become attack vectors.
ATTACK CHAINS
Chain 1: SSRF → Metadata Theft → Privilege Escalation
1. Use Finding 3 (downloads SSRF) or Finding 70 (token request SSRF) to hit cloud metadata endpoint
2. Steal AWS/GCP credentials from 169.254.169.254
3. Use stolen credentials to access cloud resources, potentially escalating to full infrastructure compromise
Chain 2: Open Redirect → OAuth Token Theft
1. Use Finding 75-77 (consent URL redirect) to redirect from legitimate Google auth flow
2. Victim sees google.com in address bar, then gets redirected to attacker site
3. Attacker captures OAuth tokens or credentials in transit
4. Use tokens to access victim's Google account
Chain 3: Native Messaging → RCE
1. Use Finding 1 or 78 (unsanitized native host launch) to inject shell commands
2. Execute arbitrary code on victim's machine
3. Install persistent backdoor, keylogger, or ransomware
Chain 4: Account Enumeration → Targeted Phishing
1. Use Finding 35 to enumerate logged-in accounts
2. Identify high-value targets (corporate emails)
3. Use Finding 75 (open redirect) to phish those specific accounts with convincing Google-originated redirects
VERDICT
THIS IS NOT SAFE TO DEPLOY.
MUST FIX IMMEDIATELY (P0 - Deploy Blockers):
1. SSRF vulnerabilities (69-77, 3, 7, 8): Implement strict URL allowlisting. All token endpoints, auth URLs, and download URLs MUST be validated against a hardcoded allowlist of permitted domains. Reject any URL with private IP ranges (RFC 1918), localhost, link-local addresses, or cloud metadata IPs.
2. Command injection (1, 10, 11, 78): Never pass unsanitized input to process spawn. Use allowlists for native messaging hosts - only permit explicitly registered, cryptographically verified binaries. Escape all command-line arguments or better yet, use parameterized execution APIs.
3. Open redirects in auth flows (75, 76, 77, 6, 9): Implement strict redirect URL validation. Auth flows should ONLY redirect to explicitly allowlisted Google domains. No user-controlled redirect targets in OAuth flows - this is a fundamental security principle.
FIX SOON (P1):
4. Account enumeration (35): Require explicit user consent before exposing account information. Consider rate limiting.
5. High-privilege APIs (0, 2, 12): Audit extension permission models. These APIs should require explicit user consent and be restricted to known, audited extensions only.
Risk Assessment:
Current state: Multiple critical RCE and credential theft vectors
Exploitability: HIGH - SSRF and command injection are well-understood attack patterns
Impact: CRITICAL - Full system compromise, credential theft, internal network access
Recommendation: BLOCK DEPLOYMENT until findings 1, 3, 69-78 are remediated and independently verified
The SSRF and command injection issues are textbook critical vulnerabilities. Any one of these could lead to complete compromise of user systems or cloud infrastructure. This needs immediate remediation by the security team.
79 raw scanner findings — 13 critical · 8 high · 50 low · 8 info
Raw Scanner Output — 79 pre-cleanup findings
⚠ Pre-Cleanup Report
This is the raw, unprocessed output from all scanner agents before AI analysis. Do not use this to fix issues individually. Multiple agents attack from different angles and frequently report the same underlying vulnerability, resulting in significant duplication. Architectural issues also appear as many separate line-level findings when they require a single structural fix.

Use the Copy Fix Workflow button above to get the AI-cleaned workflow — it deduplicates findings, removes false positives, and provides actionable steps. This raw output is provided for transparency and audit purposes only.
HIGHSSRF via user-controlled URL in downloads.download API
[redacted]/downloads_api.h:68
[AGENTS: Specter]ssrf
The `DownloadsDownloadFunction::Run()` method accepts a URL from the extension API call and initiates a download from that URL. If an attacker can control this URL, they could make the browser download files from internal services (e.g., http://localhost:8080/config.json, file:///etc/passwd). The URL is not validated against a whitelist.
Suggested Fix
Validate the download URL: only allow HTTPS URLs, block private IP ranges, and restrict file:// scheme access.
HIGHOpen redirect via OnAuthFlowURLChange callback
[redacted]/identity_launch_web_auth_flow_function.h:67
[AGENTS: Blacklist]open_redirect
The `OnAuthFlowURLChange` method receives a `redirect_url` from the WebAuthFlow. This URL is controlled by the web content being navigated. If the URL is not properly validated against the allowed redirect domains, an attacker could redirect the user to a malicious site.
Suggested Fix
Validate the redirect_url against the `final_url_domains_` list before performing any redirect. Ensure the URL matches one of the allowed patterns exactly.
HIGHSSRF via user-controlled auth_url in identity.launchWebAuthFlow
[redacted]/identity_launch_web_auth_flow_function.h:87
[AGENTS: Specter]ssrf
The `IdentityLaunchWebAuthFlowFunction::StartAuthFlow()` method takes an `auth_url` parameter that is passed directly to `WebAuthFlow`. The URL originates from the extension API call and is not validated against a strict whitelist. An attacker-controlled extension could use this to perform SSRF attacks against internal networks.
Suggested Fix
Implement strict URL validation: only allow HTTPS URLs, validate against a whitelist of allowed redirect domains, and block private IP ranges.
HIGHSSRF via user-controlled provider_url in WebAuthFlow
[redacted]/web_auth_flow.h:82
[AGENTS: Specter]ssrf
The WebAuthFlow constructor accepts a `provider_url` parameter that is used to navigate a WebContents. If an attacker can control this URL (e.g., through extension API parameters), they could make the browser issue requests to internal services (e.g., http://localhost:8080/admin, http://169.254.169.254/). The URL is not validated against a whitelist before navigation.
Suggested Fix
Validate the provider_url against a whitelist of allowed domains/schemes before navigation. Reject URLs pointing to private IP ranges or localhost.
HIGHOpen redirect via OnAuthFlowURLChange callback
[redacted]/web_auth_flow.h:89
[AGENTS: Blacklist]open_redirect
The `OnAuthFlowURLChange` delegate method receives a `redirect_url` from the WebAuthFlow. This URL is provided by the web content being navigated and could be controlled by an attacker. If the delegate uses this URL to redirect the user without proper validation, it could lead to an open redirect vulnerability.
Suggested Fix
Validate the redirect_url against a whitelist of allowed domains before performing any redirect. Ensure the URL scheme is HTTPS and the domain is expected.
HIGHCommand line not sanitized before process launch
[redacted]/launch_context.h:61
[AGENTS: Sanitizer]sanitization
The LaunchNativeProcess function constructs a command line from potentially untrusted input. If the command line is not properly sanitized, it could allow command injection or execution of arbitrary binaries.
Suggested Fix
Use a safe process launcher that validates the command line, and ensure the native host binary path is validated against an allowlist.
HIGHPotential OS command injection via native messaging host launch
[redacted]/launch_context.h:83
[AGENTS: Specter]command_injection
**Perspective 1:** The LaunchContext class launches native messaging host processes. The `native_host_name` parameter is used to find and execute a native binary. If the host name is user-controlled or not properly sanitized, an attacker could inject additional commands or arguments, leading to OS command injection. The code uses FindManifest to locate the host, but the command line construction is not shown in detail. **Perspective 2:** On Windows, if native_hosts_executables_launch_directly is false, the host is launched via cmd.exe. This could allow command injection if the host name or arguments contain shell metacharacters. The code does not show sanitization of the command line before passing to cmd.exe.
Suggested Fix
Validate the native_host_name against a strict allowlist of known hosts. Ensure the command line is constructed using safe APIs (e.g., base::LaunchProcess with a properly separated argument list) and avoid shell invocation. Escape or reject any special characters.
HIGHNative messaging host allows arbitrary process launch
[redacted]/native_message_process_host.h:1
[AGENTS: Lockdown]configuration
**Perspective 1:** The native messaging API launches external processes based on extension requests. If the native host manifest is misconfigured or an extension is compromised, this could allow arbitrary command execution. **Perspective 2:** The native messaging host configuration may allow launching arbitrary executables, leading to remote code execution if an extension is compromised.
Suggested Fix
Ensure native host manifests are validated and only allow trusted binaries. Implement path validation and restrict allowed hosts.
LOWGeneric Api Key
[redacted]/autofill_private_api.h:545
[AGENTS: rules-engine]security
A gitleaks generic-api-key was detected which attempts to identify hard-coded credentials. It is not recommended to store credentials in source-code, as this risks secrets being leaked and used by either an internal or external malicious adversary. It is recommended to use environment variables to securely provide credentials or retrieve credentials from a secure vault or HSM (Hardware Security Module). This rule can introduce a lot of false positives, it is not recommended to be used in...
Suggested Fix
See CWE-798: Use of Hard-coded Credentials
LOWGeneric Api Key
[redacted]/braille_controller_brlapi.h:83
[AGENTS: rules-engine]security
A gitleaks generic-api-key was detected which attempts to identify hard-coded credentials. It is not recommended to store credentials in source-code, as this risks secrets being leaked and used by either an internal or external malicious adversary. It is recommended to use environment variables to securely provide credentials or retrieve credentials from a secure vault or HSM (Hardware Security Module). This rule can introduce a lot of false positives, it is not recommended to be used in...
Suggested Fix
See CWE-798: Use of Hard-coded Credentials
LOWBraille display API exposes accessibility device state
[redacted]/braille_display_private_api.h:1
[AGENTS: Recon]info_disclosure
The brailleDisplayPrivate API exposes display state and key events from braille devices. This could leak information about assistive technology usage.
Suggested Fix
Ensure this API is only accessible to accessibility-related extensions.
LOWMissing Authorization in Braille Display API
[redacted]/braille_display_private_api.h:1
[AGENTS: Phantom]api_security
BrailleDisplayPrivateWriteDotsFunction allows writing to braille displays without verifying the caller has appropriate permissions. This could allow unauthorized braille display manipulation.
Suggested Fix
Add authorization checks to ensure only extensions with accessibility permissions can control braille displays.
LOWChromeOS API factories header reveals internal service structure
[redacted]/chromeos_api_browser_context_keyed_service_factories.h:1
[AGENTS: Recon]info_disclosure
The chromeos_api_browser_context_keyed_service_factories.h file exposes the EnsureBrowserContextKeyedServiceFactoriesBuilt function, which ensures ChromeOS-specific service factories are built. This reveals the existence of ChromeOS-specific extension APIs, which can be used for platform fingerprinting.
Suggested Fix
This is a minor concern. The function is necessary for initialization and does not directly leak sensitive data.
LOWRule parsing errors may leak extension details
[redacted]/chrome_content_rules_registry.h:191
[AGENTS: Fuse]error_security
The CreateRule method returns error strings that may contain details about the extension or rule structure, potentially leaking information about which extensions are installed.
Suggested Fix
Ensure error messages from rule parsing are generic and do not reveal extension IDs or rule specifics.
LOWPotential XSS via error messages containing user-controlled data
[redacted]/developer_private_functions.h:1
[AGENTS: Blacklist]output_encoding
Error messages like 'No such extension found for call to '*'.' and 'Extension with ID '*' doesn't exist.' use placeholder '*' which may be substituted with user-controlled extension IDs or function names. If these error messages are rendered in a web context without proper encoding, it could lead to XSS. However, these are likely passed through Chrome's extension error handling which typically escapes output.
Suggested Fix
Ensure all error messages with placeholders are properly HTML-encoded before rendering in any UI context.
LOWGeneric Api Key
[redacted]/developer_private_functions.h:324
[AGENTS: rules-engine]security
A gitleaks generic-api-key was detected which attempts to identify hard-coded credentials. It is not recommended to store credentials in source-code, as this risks secrets being leaked and used by either an internal or external malicious adversary. It is recommended to use environment variables to securely provide credentials or retrieve credentials from a secure vault or HSM (Hardware Security Module). This rule can introduce a lot of false positives, it is not recommended to be used in...
Suggested Fix
See CWE-798: Use of Hard-coded Credentials
LOWProfile info may contain sensitive data without sanitization
[redacted]/profile_info_generator.h:23
[AGENTS: Sanitizer]sanitization
The CreateProfileInfo function creates profile information from a Profile object. If the profile info contains sensitive data (like paths or identifiers), it should be sanitized before being exposed to extensions.
Suggested Fix
Review the fields included in ProfileInfo and ensure no sensitive data is exposed. Sanitize or filter fields as needed.
LOWDownload extension errors expose internal error messages
[redacted]/download_extension_errors.h:1
[AGENTS: Recon]info_disclosure
The download_extension_errors.h file contains error message strings that could reveal internal state or permission requirements to users.
Suggested Fix
Ensure error messages are user-friendly without revealing internal implementation details.
LOWNetwork details errors may leak network configuration
[redacted]/enterprise_networking_attributes_api.h:32
[AGENTS: Fuse]error_security
The getNetworkDetails function may return error messages that reveal whether certain network attributes are available, potentially leaking network configuration state.
Suggested Fix
Ensure error responses are generic and do not reveal network configuration details.
LOWEnterprise platform keys registry utility exposes pref registration
[redacted]/enterprise_platform_keys_registry_util.h:1
[AGENTS: Recon]info_disclosure
The enterprise_platform_keys_registry_util.h file exposes the EnterprisePlatformKeysRegisterProfilePrefs function, which registers profile preferences for enterprise platform keys. While this is a utility function, it reveals that enterprise platform keys have associated preferences, which can be used for fingerprinting.
Suggested Fix
This is a minor concern. Ensure that the registered preferences do not contain sensitive information.
LOWURL filtering verdicts may leak safe browsing rules
[redacted]/enterprise_reporting_private_event_router.h:61
[AGENTS: Fuse]error_security
The OnUrlFilteringVerdict method receives RTLookupResponse which may contain detailed information about why a URL was blocked, potentially revealing safe browsing rules or classification details.
Suggested Fix
Ensure only necessary verdict information is forwarded to extensions, not full response details.
LOWPotential default Keychain unlock verification bypass
[redacted]/keychain_data_helper_mac.h:30
[AGENTS: Specter]injection
The VerifyDefaultKeychainUnlocked function checks if the default Keychain is unlocked. If an attacker can manipulate the Keychain state, they could bypass this check and access protected data.
Suggested Fix
Ensure the Keychain unlock status is verified in a secure context and cannot be manipulated by an attacker. Consider using additional authentication mechanisms.
LOWToken clearing function does not securely zero memory
[redacted]/identity_clear_all_cached_auth_tokens_function.h:1
[AGENTS: Vault]secrets
The IdentityClearAllCachedAuthTokensFunction clears cached tokens but likely does not securely zero the memory (e.g., using memset_s or SecureZeroMemory). Tokens may remain in memory until the memory is reused.
Suggested Fix
Use secure memory zeroing functions when clearing token caches.
LOWError message strings may leak internal state
[redacted]/identity_constants.h:1
[AGENTS: Vault]secrets
**Perspective 1:** The file defines constant error message strings for the identity API. While not secrets themselves, these messages (e.g., 'kAuthFailure', 'kUserRejected', 'kInteractionRequired') could leak internal authentication state to extensions or users if exposed inappropriately. This is a minor information disclosure risk. **Perspective 2:** The constant 'kInvalidClientId' suggests that the identity API validates client IDs and may return error messages containing the invalid client ID. If the client ID is included in error messages, it could be logged or exposed to the extension, potentially leaking the client ID. **Perspective 3:** The constant 'kInvalidScopes' suggests that the identity API validates scopes and may return error messages containing the invalid scopes. If scopes are included in error messages, they could be logged or exposed, potentially revealing the requested permissions. **Perspective 4:** The constant 'kCachedRemoteConsentTTLSeconds' defines a TTL for cached remote consent. While not a secret, this value controls how long consent tokens are cached, which could have security implications if set too high.
Suggested Fix
Ensure error messages are user-facing and do not reveal internal implementation details. Consider using generic error messages for failures.
LOWIdentity API error constants expose internal error details
[redacted]/identity_constants.h:1
[AGENTS: Recon]info_disclosure
The identity_constants.h file defines error message constants for the identity API. While these are just string constants, they reveal the types of errors that can occur (e.g., kAuthFailure, kUserRejected, kInteractionRequired), which can help attackers understand the authentication flow and potential failure modes.
Suggested Fix
Use generic error messages that do not reveal specific failure reasons. Log detailed errors internally but return opaque error codes to extensions.
LOWPotential account enumeration via identity.getAccounts
[redacted]/identity_get_accounts_function.h:1
[AGENTS: Specter]information_disclosure
The identity.getAccounts API function returns a list of accounts associated with the profile. While this is by design, it could be used by malicious extensions to enumerate accounts for further attacks.
Suggested Fix
Ensure that the extension has appropriate permissions and that the user is informed about which extensions can access account information.
LOWGeneric Api Key
[redacted]/identity_get_auth_token_function.h:280
[AGENTS: rules-engine]security
A gitleaks generic-api-key was detected which attempts to identify hard-coded credentials. It is not recommended to store credentials in source-code, as this risks secrets being leaked and used by either an internal or external malicious adversary. It is recommended to use environment variables to securely provide credentials or retrieve credentials from a secure vault or HSM (Hardware Security Module). This rule can introduce a lot of false positives, it is not recommended to be used in...
Suggested Fix
See CWE-798: Use of Hard-coded Credentials
LOWJSON parsing without structure validation
[redacted]/web_auth_flow.h:50
[AGENTS: Sentinel]input_validation
The response from the API is parsed as JSON without validating the structure. An attacker could inject unexpected fields or values, leading to potential security issues.
Suggested Fix
Validate the JSON response structure against a schema before using the data.
LOWTimeout duration for non-interactive mode is configurable and may be observable
[redacted]/web_auth_flow.h:93
[AGENTS: Fuse]error_security
The timeout_for_non_interactive parameter allows callers to specify a custom timeout duration. If the timeout is observable via error messages or timing, it could be used to infer network conditions or server response times.
Suggested Fix
Use a fixed, non-configurable timeout for non-interactive flows, or ensure timeout values are not exposed through any observable channel.
LOWPotential XSS via DisplayInfoBar
[redacted]/web_auth_flow.h:192
[AGENTS: Blacklist]xss_via_infobar
The `DisplayInfoBar` method displays an infobar with the extension name. If the extension name contains malicious content, it could lead to XSS in the infobar. The extension name is controlled by the extension developer.
Suggested Fix
Ensure the extension name is properly encoded before being displayed in the infobar. Use safe text rendering methods.
LOWPotential XSS via extension name in infobar
[redacted]/web_auth_flow_info_bar_delegate.h:47
[AGENTS: Blacklist]xss_via_infobar
The `GetMessageText` method returns the extension name as the infobar message. If the extension name contains malicious content, it could lead to XSS. The extension name is controlled by the extension developer.
Suggested Fix
Ensure the extension name is properly HTML-encoded before being returned. Use a safe string type that prevents script injection.
LOWPotential XSS via extension_name_ member
[redacted]/web_auth_flow_info_bar_delegate.h:56
[AGENTS: Blacklist]xss_via_infobar
The `extension_name_` member is stored and used in the infobar message. If this name contains malicious content, it could lead to XSS. The name is provided by the extension developer.
Suggested Fix
Sanitize the extension_name_ before storing it. Ensure it doesn't contain any HTML or script content.
LOWGeneric Api Key
[redacted]/instance_id_api.h:50
[AGENTS: rules-engine]security
A gitleaks generic-api-key was detected which attempts to identify hard-coded credentials. It is not recommended to store credentials in source-code, as this risks secrets being leaked and used by either an internal or external malicious adversary. It is recommended to use environment variables to securely provide credentials or retrieve credentials from a secure vault or HSM (Hardware Security Module). This rule can introduce a lot of false positives, it is not recommended to be used in...
Suggested Fix
See CWE-798: Use of Hard-coded Credentials
LOWmDNS API may leak network information
[redacted]/mdns_api.h:1
[AGENTS: Lockdown]configuration
The mDNS API allows extensions to discover services on the local network. This could be used to fingerprint the network or discover devices without user knowledge.
Suggested Fix
Ensure mDNS discovery requires user consent and is restricted to user-initiated actions.
LOWNotification display helper exposes notification IDs
[redacted]/extension_notification_display_helper.h:1
[AGENTS: Recon]info_disclosure
The ExtensionNotificationDisplayHelper stores notifications and provides methods to retrieve them by ID. This could leak notification IDs to other extensions.
Suggested Fix
Ensure notification data is isolated per extension.
LOWNotification handler exposes extension ID from URL
[redacted]/extension_notification_handler.h:1
[AGENTS: Recon]info_disclosure
The GetExtensionId method extracts extension IDs from notification URLs, potentially revealing which extension created a notification.
Suggested Fix
This is by design but ensure it's not exposed to untrusted contexts.
LOWGeneric Api Key
[redacted]/notifications_api.h:73
[AGENTS: rules-engine]security
A gitleaks generic-api-key was detected which attempts to identify hard-coded credentials. It is not recommended to store credentials in source-code, as this risks secrets being leaked and used by either an internal or external malicious adversary. It is recommended to use environment variables to securely provide credentials or retrieve credentials from a secure vault or HSM (Hardware Security Module). This rule can introduce a lot of false positives, it is not recommended to be used in...
Suggested Fix
See CWE-798: Use of Hard-coded Credentials
LOWOmnibox API may leak search queries
[redacted]/omnibox_api.h:1
[AGENTS: Lockdown]configuration
The omnibox API allows extensions to receive user input in the address bar. This could leak search queries or URLs the user types.
Suggested Fix
Ensure omnibox input is only sent to extensions with appropriate permissions and user consent.
LOWTest delegate exposes plaintext password in memory
[redacted]/test_passwords_private_delegate.h:1
[AGENTS: Vault]secrets
**Perspective 1:** The TestPasswordsPrivateDelegate stores a hardcoded plaintext password (u"plaintext") in memory. While this is a test file, it could be accidentally included in production builds or leak via crash dumps. **Perspective 2:** The test delegate has a method CopyPlaintextBackupPassword that copies a plaintext backup password. While this is for testing, it indicates that backup passwords may be handled in plaintext in production code.
Suggested Fix
Ensure that backup passwords are encrypted at rest and in transit. Consider using a secure memory buffer (e.g., base::ScopedClosureRunner with memset) to clear passwords after use.
LOWPlatform keys utility constants expose internal error details
[redacted]/platform_keys_utils.h:1
[AGENTS: Recon]info_disclosure
The platform_keys_utils.h file defines error message constants (e.g., kErrorInvalidToken, kErrorInvalidX509Cert). These reveal specific error conditions that can help attackers understand the certificate and key management system.
Suggested Fix
Use generic error messages that do not reveal specific failure reasons. Log detailed errors internally.
LOWProxy API constants expose internal configuration keys
[redacted]/proxy_api_constants.h:1
[AGENTS: Recon]info_disclosure
The proxy_api_constants.h file defines string constants for proxy configuration keys (e.g., kProxyConfigMode, kProxyConfigPacScriptUrl). While these are just string constants, they reveal the structure of proxy configuration, which can help attackers understand how to manipulate proxy settings.
Suggested Fix
Use opaque identifiers instead of descriptive string keys. This is a minor concern as these are API contract strings.
LOWReading list API constants expose error messages
[redacted]/reading_list_api_constants.h:1
[AGENTS: Recon]info_disclosure
The reading_list_api_constants.h file contains error message strings that could reveal validation logic to users.
Suggested Fix
Ensure error messages don't reveal internal validation details.
LOWError messages may contain unsanitized URLs
[redacted]/reading_list_api_constants.h:25
[AGENTS: Sanitizer]sanitization
Error messages like 'Invalid URL' and 'Duplicate URL' may include the URL in the error string. If the URL contains malicious content, this could lead to XSS if displayed in a web context.
Suggested Fix
Sanitize URLs before including them in error messages, or use generic error messages without user input.
LOWReferrer chain entry may contain unsanitized data
[redacted]/safe_browsing_util.h:24
[AGENTS: Sanitizer]sanitization
The ReferrerToReferrerChainEntry function converts referrer chain entries. If the input contains unsanitized data, it could propagate malicious content to the extension API.
Suggested Fix
Sanitize all string fields in the referrer chain entry before converting to the API format.
LOWGenerated preference may expose geolocation state without validation
[redacted]/chromeos_resolve_time_zone_by_geolocation_on_off.h:28
[AGENTS: Sanitizer]sanitization
The generated preference for timezone resolution by geolocation may expose whether geolocation is enabled. If the calling context is not validated, this could leak privacy-sensitive information.
Suggested Fix
Validate that the caller has appropriate permissions before returning geolocation-related preference state.
LOWTab capture test base exposes extension ID
[redacted]/tab_capture_performance_test_base.h:1
[AGENTS: Recon]info_disclosure
The test base class defines a constant extension ID (kExtensionId) which could be used to identify test extensions in production if test code is accidentally included.
Suggested Fix
Ensure test-only code is excluded from production builds.
LOWMissing security headers in API response handling
[redacted]/tabs_api.h:1
[AGENTS: Lockdown]configuration
The tabs API implementation does not enforce security headers like CSP, X-Frame-Options, or HSTS on responses. While this is an API definition file, the actual implementation should ensure these headers are set when returning tab data to extensions to prevent content injection.
Suggested Fix
Ensure the implementation adds appropriate security headers when serving tab content or responses.
LOWGeneric Api Key
[redacted]/tabs_api.h:490
[AGENTS: rules-engine]security
A gitleaks generic-api-key was detected which attempts to identify hard-coded credentials. It is not recommended to store credentials in source-code, as this risks secrets being leaked and used by either an internal or external malicious adversary. It is recommended to use environment variables to securely provide credentials or retrieve credentials from a secure vault or HSM (Hardware Security Module). This rule can introduce a lot of false positives, it is not recommended to be used in...
Suggested Fix
See CWE-798: Use of Hard-coded Credentials
LOWError messages with placeholders may lead to XSS if not encoded
[redacted]/tabs_constants.h:1
[AGENTS: Blacklist]output_encoding
Error messages like 'Cannot discard tab with id: *.' and 'Cannot duplicate tab with id: *.' contain placeholders that will be substituted with user-controlled tab IDs. If these messages are rendered in HTML without proper encoding, they could be exploited for XSS.
Suggested Fix
Ensure all error messages with dynamic content are properly HTML-encoded before rendering.
LOWTabs constants expose error messages with internal details
[redacted]/tabs_constants.h:1
[AGENTS: Recon]info_disclosure
The tabs_constants.h file contains error messages that may reveal internal state or configuration details when errors occur.
Suggested Fix
Review error messages to ensure they don't leak sensitive internal information.
LOWError message may leak sensitive information
[redacted]/tabs_constants.h:43
[AGENTS: Sanitizer]sanitization
Error messages like 'Cannot discard tab with id: *.' include the tab ID in the error string. If the tab ID is user-controlled or sensitive, this could leak information through error messages.
Suggested Fix
Consider whether error messages need to include specific IDs, or use generic error messages instead.
LOWTop sites data returned without access control validation
[redacted]/top_sites_api.h:35
[AGENTS: Sanitizer]sanitization
The TopSitesGetFunction returns most visited URLs. If the calling extension is not properly validated, this could leak browsing history to unauthorized extensions.
Suggested Fix
Validate that the calling extension has the required permissions before returning top sites data.
LOWMissing HTTPS enforcement for webstore operations
[redacted]/webstore_private_api.h:1
[AGENTS: Lockdown]configuration
**Perspective 1:** The webstore private API does not explicitly enforce HTTPS for all communications. Extensions may initiate install operations that could be intercepted if not using HTTPS. **Perspective 2:** The webstore private API does not enforce HTTPS for all communication, potentially allowing man-in-the-middle attacks on extension installations.
Suggested Fix
Enforce HTTPS for all webstore API calls by validating the request URL scheme.
LOWIcon update callback may receive unsanitized image data
[redacted]/chrome_app_icon_delegate.h:29
[AGENTS: Sanitizer]sanitization
The OnIconUpdated callback receives a ChromeAppIcon with image data. If the image data comes from an untrusted source, it could contain malicious content.
Suggested Fix
Validate image data before passing it to the callback, ensuring it meets expected format and size constraints.
LOWExternal extensions JSON file reveals default extension list
[redacted]/external_extensions.json:1
[AGENTS: Recon]info_disclosure
The external_extensions.json file contains a list of default extensions that will be included in the installer. While currently empty, this file reveals which extensions are considered default, which can be used for fingerprinting the browser installation.
Suggested Fix
Ensure this file does not contain any sensitive information about extension IDs or sources that could be used for fingerprinting.
LOWMissing security headers in API response handling
[redacted]/extension_browsertest.h:1
[AGENTS: Lockdown]configuration
The extension browser test infrastructure does not enforce security headers (HSTS, CSP, X-Frame-Options) on test responses, which could allow clickjacking or other attacks in test environments.
Suggested Fix
Add security headers to test server responses, e.g., X-Frame-Options: DENY, Content-Security-Policy: default-src 'self'.
LOWTest harness may leak internal paths in error messages
[redacted]/extension_browsertest.h:508
[AGENTS: Fuse]error_security
The test harness uses base::FilePath and base::ScopedTempDir which could expose internal file system paths in error messages if tests fail. While this is test code, the paths could reveal build directory structure.
Suggested Fix
Ensure error messages in test assertions sanitize or truncate file paths.
LOWExtension error UI may display unsanitized error messages
[redacted]/extension_error_ui_android.h:31
[AGENTS: Sanitizer]sanitization
The ExtensionErrorUIAndroid class displays error messages to users. If error messages contain unsanitized user input or extension data, this could lead to XSS or information disclosure.
Suggested Fix
Ensure all error messages are properly sanitized before display, escaping any HTML or special characters.
CRITICALDebugger API allows full control over browser tabs
[redacted]/debugger_api.h:1
[AGENTS: Lockdown]configuration
**Perspective 1:** The debugger API allows extensions to attach to any tab and execute arbitrary commands via Chrome DevTools Protocol. This can be used to bypass security restrictions, read sensitive data, or modify page content. **Perspective 2:** The debugger API grants extensions full control over browser tabs, including the ability to execute arbitrary JavaScript and access sensitive data.
Suggested Fix
Ensure debugger API requires explicit user gesture and host permissions. Consider adding additional confirmation dialogs for sensitive operations.
CRITICALNative host name not sanitized before process launch
[redacted]/launch_context.h:54
[AGENTS: Sanitizer]sanitization
The native_host_name parameter is used to find and launch a native messaging host. If the host name is not properly sanitized, it could allow path traversal or command injection when constructing the command line for the native process.
Suggested Fix
Validate the native_host_name against an allowlist of allowed host names, and ensure it does not contain path separators or special characters.
CRITICALDesktop capture API allows screen recording
[redacted]/webrtc_desktop_capture_private_api.h:1
[AGENTS: Lockdown]configuration
**Perspective 1:** The WebRTC desktop capture private API allows extensions to capture the entire desktop or application windows. This poses a significant privacy risk if an extension is compromised. **Perspective 2:** The desktop capture private API allows extensions to record the entire screen without user consent, posing a severe privacy risk.
Suggested Fix
Ensure desktop capture requires explicit user consent with a visible indicator. Restrict to user-initiated actions and consider additional permissions.
INFOEnterprise networking attributes API exposes network configuration details
[redacted]/enterprise_networking_attributes_api.h:1
[AGENTS: Recon]info_disclosure
The enterprise.networkingAttributes.getNetworkDetails API exposes network configuration details such as network names, MAC addresses, and other networking attributes. This information can be used by attackers to fingerprint the network environment and plan further attacks.
Suggested Fix
Ensure this API is restricted to enterprise-managed extensions only and requires user consent. Consider limiting the returned data to only what is absolutely necessary.
INFOIdentity API exposes profile user information
[redacted]/identity_get_profile_user_info_function.h:1
[AGENTS: Recon]info_disclosure
**Perspective 1:** The identity.getProfileUserInfo function returns user profile information including email and ID. This could leak personally identifiable information to extensions. **Perspective 2:** The identity.getProfileUserInfo function exposes the user's email address and Gaia ID to extensions. This leaks personally identifiable information (PII) that can be used for user tracking and fingerprinting.
Suggested Fix
Require explicit user consent before exposing profile information. Consider returning only a unique identifier rather than the actual email address.
INFOSafe Browsing private API exposes referrer chain information
[redacted]/safe_browsing_private_api.h:1
[AGENTS: Recon]info_disclosure
The safeBrowsingPrivate.getReferrerChain API allows extensions to retrieve the referrer chain for a navigation. This leaks browsing history and navigation patterns, enabling attackers to track user activity and understand the sequence of pages visited.
Suggested Fix
Restrict this API to allowlisted extensions only. Remove or anonymize sensitive URL information from the referrer chain before returning it.
INFODeveloper private API exposes extension internals
[redacted]/developer_private_functions.h:1
[AGENTS: Recon]info_disclosure
The developerPrivate API provides detailed information about installed extensions, including paths, permissions, and error details. If accessible to untrusted contexts, this leaks internal extension structure and configuration.
Suggested Fix
Ensure this API is restricted to developer tools UI only and not accessible from web content.
INFOInsecure Native Messaging Host Launch
[redacted]/launch_context.h:1
[AGENTS: Phantom]api_security
LaunchContext allows launching native messaging hosts without verifying the host binary's integrity or signature. An attacker could replace the host binary with a malicious one.
Suggested Fix
Verify the native messaging host binary's signature or hash before launching it.
INFOPage capture API may expose sensitive page content
[redacted]/page_capture_api.h:1
[AGENTS: Lockdown]configuration
The page capture API allows extensions to save complete page content as MHTML files. This could be used to exfiltrate sensitive data from web pages.
Suggested Fix
Ensure page capture requires explicit user consent and host permissions. Consider restricting to user-initiated actions.
INFOReferrer chain may leak browsing history
[redacted]/safe_browsing_private_api.h:34
[AGENTS: Fuse]error_security
The getReferrerChain function returns the referrer chain which could leak detailed browsing history information if error handling exposes partial or full chain data.
Suggested Fix
Ensure error cases do not return partial referrer chain data that could reveal browsing history.
INFOPotential exposure of user profile info via API
[redacted]/identity_get_profile_user_info_function.h:1
[AGENTS: Vault]secrets
The identity.getProfileUserInfo API may expose user profile information (such as email and ID) to extensions. If an extension is compromised or malicious, this could leak PII.
Suggested Fix
Ensure that the API requires user consent and that the returned data is minimal. Consider adding a permission check or a consent dialog before returning profile info.
CRITICAL[OpenClaw] SSRF via token key account access token request
[redacted]/identity_get_auth_token_function.h:173
[AGENTS: openclaw-scanner]openclaw_data_flow
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via data_flow. Interaction chain: SSRF via token key account access token request can be used to exfiltrate data through the native messaging host launched without sanitization Original finding: The `StartTokenKeyAccountAccessTokenRequest()` method initiates an access token request for the account specified by `token_key_.account_id`. If the account_id is user-controlled and not validated, it could be used to make token requests to attacker-controlled identity providers.
Suggested Fix
Validate that the account_id corresponds to a known, valid account before initiating token requests.
CRITICAL[OpenClaw] SSRF via Gaia mint token request with user-controlled parameters
[redacted]/identity_get_auth_token_function.h:198
[AGENTS: openclaw-scanner]openclaw_data_flow
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via data_flow. Interaction chain: SSRF via Gaia mint token request with user-controlled parameters can be used to exfiltrate data through the native messaging host Original finding: The `StartGaiaRequest()` method sends a mint token request to GAIA with parameters derived from the extension's request. If an attacker can control parameters like scopes or client ID, they could manipulate the request to target internal endpoints or include malicious redirect URIs.
Suggested Fix
Validate all parameters sent to GAIA against expected patterns. Ensure client_id is from a whitelist of allowed values.
CRITICAL[OpenClaw] SSRF via Chrome sign-in dialog URL
[redacted]/identity_get_auth_token_function.h:215
[AGENTS: openclaw-scanner]openclaw_data_flow
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via data_flow. Interaction chain: SSRF via Chrome sign-in dialog URL can redirect native messaging host launch to attacker-controlled endpoints Original finding: The `MaybeShowChromeSigninDialog()` method may open a sign-in dialog with a URL that could contain user-controlled parameters. If the URL is not properly validated, an attacker could inject malicious redirects or load internal resources.
Suggested Fix
Validate the sign-in dialog URL against a whitelist of allowed domains.
CRITICAL[OpenClaw] SSRF via remote consent dialog URL
[redacted]/identity_get_auth_token_function.h:236
[AGENTS: openclaw-scanner]openclaw_data_flow
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via data_flow. Interaction chain: SSRF via remote consent dialog URL can redirect native messaging host launch to attacker-controlled endpoints Original finding: The `ShowRemoteConsentDialog()` method displays a remote consent dialog with a URL that may contain user-controlled parameters. If the URL is not properly validated, an attacker could inject malicious parameters that cause the dialog to load content from an attacker-controlled server or internal endpoint.
Suggested Fix
Validate the remote consent URL against a whitelist of allowed domains and ensure all parameters are properly sanitized.
CRITICAL[OpenClaw] SSRF via device access token request in ChromeOS kiosk mode
[redacted]/identity_get_auth_token_function.h:249
[AGENTS: openclaw-scanner]openclaw_data_flow
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via data_flow. Interaction chain: SSRF via device access token request in ChromeOS kiosk mode can be used to exfiltrate data through the native messaging host Original finding: The `StartDeviceAccessTokenRequest()` method in ChromeOS kiosk mode initiates a device access token request. If the device account or scopes are user-controlled, this could be exploited for SSRF against internal OAuth endpoints.
Suggested Fix
Ensure device access token requests use only predefined, validated scopes and accounts.
CRITICAL[OpenClaw] SSRF via extension login prompt URL
[redacted]/identity_get_auth_token_function.h:260
[AGENTS: openclaw-scanner]openclaw_data_flow
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via data_flow. Interaction chain: SSRF via extension login prompt URL can redirect native messaging host launch to attacker-controlled endpoints Original finding: The `ShowExtensionLoginPrompt()` method displays a login prompt that may navigate to a URL containing user-controlled parameters. If the URL is not validated, an attacker could redirect to internal services.
Suggested Fix
Validate the login prompt URL against a whitelist of allowed domains.
CRITICAL[OpenClaw] Potential open redirect via consent_result_ URL
[redacted]/identity_get_auth_token_function.h:289
[AGENTS: openclaw-scanner]openclaw_data_flow
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via data_flow. Interaction chain: Open redirect via consent_result_ URL can redirect native messaging host launch to attacker-controlled binary Original finding: The `consent_result_` string is received from the Gaia remote consent flow and used to complete the auth token request. If this string contains a URL that is not properly validated, it could be used as an open redirect. The `OnGaiaRemoteConsentFlowApproved` method receives `consent_result` and stores it, which is later used in the token flow.
Suggested Fix
Validate the consent_result_ URL against a whitelist of allowed redirect URLs before using it. Ensure it matches the expected format and domain.
CRITICAL[OpenClaw] Final redirect URL domains not validated against allowlist
[redacted]/identity_launch_web_auth_flow_function.h:78
[AGENTS: openclaw-scanner]openclaw_data_flow
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via data_flow. Interaction chain: Final redirect URL domains not validated against allowlist can be used to redirect native messaging host launch to malicious domains Original finding: The `final_url_domains_` list is populated from extension manifest redirect URLs but there is no validation that these URLs are valid, non-malicious domains. An extension could specify arbitrary domains as redirect targets, potentially enabling open redirect vulnerabilities.
Suggested Fix
Validate that redirect URLs in the manifest are HTTPS and belong to expected domains before adding them to the allowlist.
CRITICAL[OpenClaw] Open redirect via InitFinalRedirectURLDomains
[redacted]/identity_launch_web_auth_flow_function.h:82
[AGENTS: openclaw-scanner]openclaw_data_flow
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via data_flow. Interaction chain: Open redirect via InitFinalRedirectURLDomains can redirect native messaging host launch to attacker-controlled binary Original finding: The `InitFinalRedirectURLDomains` method initializes the list of allowed redirect URLs from extension configuration. If this configuration is not properly validated, it could allow redirects to malicious domains. The method takes a `redirect_urls` parameter from the extension's manifest.
Suggested Fix
Validate each URL in the redirect_urls list against a strict pattern. Ensure they use HTTPS and are from trusted domains. Reject any URLs that don't match the expected format.
CRITICAL[OpenClaw] Insecure Native Messaging Host Launch
[redacted]/launch_context.h:1
[AGENTS: openclaw-scanner]openclaw_call
Cross-chunk interaction detected. This finding interacts with confirmed threat [4] via call. Interaction chain: Insecure Native Messaging Host Launch in LaunchContext directly calls the vulnerable native host launch without verifying binary integrity Original finding: LaunchContext allows launching native messaging hosts without verifying the host binary's integrity or signature. An attacker could replace the host binary with a malicious one.
Suggested Fix
Verify the native messaging host binary's signature or hash before launching it.

Summary

Consensus from 61 reviewer(s): Syringe, Blacklist, Vault, Specter, Gatekeeper, Fuse, Recon, Sentinel, Tripwire, Phantom, Razor, Sanitizer, Lockdown, Chaos, Infiltrator, Syringe, Sentinel, Sanitizer, Specter, Fuse, Blacklist, Gatekeeper, Vault, Recon, Tripwire, Lockdown, Chaos, Infiltrator, Razor, Phantom, Syringe, Vault, Recon, Blacklist, Lockdown, Gatekeeper, Tripwire, Sentinel, Razor, Sanitizer, Infiltrator, Fuse, Specter, Phantom, Chaos, Specter, Syringe, Blacklist, Vault, Lockdown, Sanitizer, Recon, Fuse, Tripwire, Sentinel, Chaos, Phantom, Gatekeeper, Razor, Infiltrator, rules-engine Total findings: 890 Severity breakdown: 8 critical, 727 high, 101 medium, 54 low

Note: Fixing issues can create a domino effect — resolving one finding often surfaces new ones that were previously hidden. Multiple scan-and-fix cycles may be needed until you’re satisfied no further issues remain. How deep you go is your call.