CVE-2023-28806
Executive Summary
CVE-2023-28806 is a vulnerability in the Zscaler Client Connector for Windows that allows an authenticated user to disable the anti-tampering protection mechanism. The flaw stems from improper validation of digital signatures, enabling a local attacker to bypass integrity checks and modify or disable the client’s security features. This can lead to a denial of service or further compromise of the endpoint’s security posture. The vulnerability has a CVSS score of 5.7 (Medium) and affects versions prior to 4.2.0.190. No public exploit code or proof-of-concept is currently available, and the EPSS score is 0.0%, indicating low exploitation activity in the wild.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
- Base Score: 5.7 (Medium)
- Attack Vector: Local (AV:L) – The attacker must have local access to the system.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: Low (PR:L) – The attacker needs valid credentials but not administrative rights.
- User Interaction: None (UI:N) – No user action is required.
- Scope: Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality Impact: None (C:N) – No data exposure.
- Integrity Impact: High (I:H) – The attacker can disable anti-tampering, compromising the integrity of the security software.
- Availability Impact: None (A:N) – No direct denial of service.
Threat Level: Medium. The vulnerability requires local access and low privileges, but successful exploitation can disable critical security controls, making it a significant risk in multi-user environments or after initial compromise.
Deep Dive & Mechanics
The Zscaler Client Connector is a security agent that enforces policies and provides secure access to corporate resources. It includes an anti-tampering mechanism to prevent unauthorized modifications to its files, processes, or registry keys. This mechanism relies on digital signature validation to ensure that only signed, trusted components can modify the client.
The vulnerability lies in the improper validation of digital signatures. An authenticated user can craft a specially signed binary or script that bypasses the signature check, allowing them to disable the anti-tampering feature. Once anti-tampering is disabled, the attacker can:
- Modify the client’s configuration files.
- Terminate or suspend the client process.
- Disable security policies enforced by the client.
- Potentially install malicious software that evades detection.
The root cause is a failure to properly verify the certificate chain or signature algorithm, allowing a self-signed or otherwise invalid signature to be accepted.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
// Simplified example of vulnerable signature validation
bool ValidateSignature(string filePath) {
X509Certificate2 cert = new X509Certificate2(filePath);
// Improper: Only checks if a signature exists, not its validity
return cert.HasPrivateKey == false; // Weak check
}
Patched Code (Conceptual):
// Patched version with proper validation
bool ValidateSignature(string filePath) {
X509Certificate2 cert = new X509Certificate2(filePath);
// Proper: Verify certificate chain and trust
using (var chain = new X509Chain()) {
chain.Build(cert);
return chain.ChainStatus.Length == 0; // All checks passed
}
}
The patched version ensures that the certificate is trusted by a root authority and that the chain is valid, preventing self-signed or tampered certificates from being accepted.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Local access to a Windows system with Zscaler Client Connector < 4.2.0.190.
- Valid user credentials (non-admin).
Steps:
- Identify the anti-tampering mechanism: Locate the process or service responsible for signature validation (e.g.,
ZscalerClient.exe). - Craft a malicious binary: Create a signed executable using a self-signed certificate or a certificate that does not chain to a trusted root.
- Execute the binary: Run the crafted binary to trigger the improper validation and disable anti-tampering.
- Disable the client: Once anti-tampering is disabled, modify the client’s configuration or terminate its process.
Example Command (Conceptual):
# Generate a self-signed certificate
New-SelfSignedCertificate -DnsName "zscaler.com" -CertStoreLocation "Cert:\CurrentUser\My"
# Sign a malicious script
Set-AuthenticodeSignature -FilePath "disable_antitamper.ps1" -Certificate (Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -eq "CN=zscaler.com"})
# Execute the script
.\disable_antitamper.ps1
Blue Team
Detection:
- Monitor for unusual certificate creation or signing events (Event ID 4886, 4887).
- Alert on processes attempting to modify Zscaler Client Connector files or registry keys.
- Use Sysmon to detect process injection or tampering with security software.
Hunting:
- Search for self-signed certificates in the local machine store that are used to sign executables.
- Look for Event ID 4688 (Process Creation) with command lines referencing
Zscaleranddisableorstop.
Mitigation:
- Apply the patch by upgrading to version 4.2.0.190 or later.
- Restrict local user permissions to prevent execution of unsigned or self-signed binaries.
- Enable Windows Defender Application Control (WDAC) to block untrusted executables.
Indicators of Compromise (IOCs)
- File Hashes: (None publicly known, but monitor for unknown signed binaries)
- Registry Keys:
HKLM\SOFTWARE\Zscaler\Client Connector\AntiTamper(modified or deleted)
- Processes:
ZscalerClient.exe(unexpected termination)disable_antitamper.ps1or similar scripts
- Network: No specific network IOCs, as exploitation is local.
- Event Logs:
- Windows Security Event ID 4688 (Process Creation) with suspicious command lines.
- Windows Security Event ID 4886/4887 (Certificate Services).
Detection Engineering
YARA Rule
rule CVE_2023_28806_Zscaler_AntiTamper_Bypass {
meta:
description = "Detects attempts to disable Zscaler Client Connector anti-tampering via improper signature validation"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2023-28806"
strings:
$s1 = "Zscaler" nocase
$s2 = "AntiTamper" nocase
$s3 = "disable" nocase
$s4 = "signature" nocase
condition:
all of them
}
Sigma Rule
title: CVE-2023-28806 - Zscaler Anti-Tampering Disable Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects attempts to disable Zscaler Client Connector anti-tampering via improper signature validation
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2023-28806
logsource:
product: windows
service: security
detection:
selection:
EventID: 4688
CommandLine|contains|all:
- 'Zscaler'
- 'disable'
- 'AntiTamper'
condition: selection
falsepositives:
- Legitimate administrative actions (rare)
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2023-28806 - Zscaler Anti-Tampering Bypass Attempt"; flow:to_server,established; content:"Zscaler"; nocase; content:"AntiTamper"; nocase; content:"disable"; nocase; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
- Patch: Upgrade Zscaler Client Connector to version 4.2.0.190 or later.
- Workaround: If patching is not immediately possible, restrict local user permissions to prevent execution of unsigned binaries.
- Monitoring: Enable logging for process creation and certificate events. Deploy the provided YARA, Sigma, and Suricata rules.
- Hardening: Use Windows Defender Application Control (WDAC) or AppLocker to block untrusted executables.
- Incident Response: If exploitation is suspected, isolate the affected system, collect forensic evidence (event logs, registry snapshots), and reinstall the Zscaler client.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.