1. Home
  2. Web App Vulnerabilities
  3. How to remediate – Insecure Client-Access Policy

How to remediate – Insecure Client-Access Policy

1. Introduction

The “Insecure Client-Access Policy” vulnerability occurs when a Silverlight application’s `ClientAccessPolicy.xml` file is configured too permissively, allowing cross-domain calls from any domain. This can allow malicious websites to access sensitive data from your server via the Silverlight application. The impact could be loss of confidentiality, integrity and availability of data accessed by the Silverlight application.

2. Technical Explanation

The browser security model prevents web content from one domain accessing data from another without permission. URL policy files grant exceptions to this rule. A `ClientAccessPolicy.xml` file deployed on a website allows cross-domain calls if it specifies allowed domains. Allowing all domains (using “*”) opens the server to potential attacks, as any site can request resources.

  • Root cause: The `ClientAccessPolicy.xml` file is configured with a wildcard (“*”) allowing access from any domain.
  • Exploit mechanism: An attacker hosts a malicious Silverlight application on their website and uses it to make requests to your server, potentially accessing sensitive data.
  • Scope: This vulnerability affects servers hosting Silverlight applications using the `ClientAccessPolicy.xml` file for cross-domain communication.

3. Detection and Assessment

You can confirm if a system is vulnerable by checking the contents of the `ClientAccessPolicy.xml` file. A thorough method involves reviewing the policy file’s configuration against security best practices.

  • Quick checks: Use a web browser to view the source code of `www.example.com/ClientAccessPolicy.xml`. Look for the presence of `` or similar wildcard entries.
  • Scanning: Nessus plugin 10387 can identify overly permissive Client Access Policy files. This is an example only, and results should be verified manually.
  • Logs and evidence: Web server logs may show cross-domain requests originating from unexpected domains if the policy is too open.
curl https://www.example.com/ClientAccessPolicy.xml

4. Solution / Remediation Steps

Carefully evaluate which sites need to make cross-domain calls and restrict access accordingly. Only allow trusted domains in the `ClientAccessPolicy.xml` file.

4.1 Preparation

  • The roll back plan is to restore the original backed-up `ClientAccessPolicy.xml` file.
  • Changes should be made during a scheduled maintenance window with appropriate approvals from security and application owners.

4.2 Implementation

  1. Step 1: Open the `ClientAccessPolicy.xml` file in a text editor.
  2. Step 2: Remove or modify any wildcard (“*”) entries allowing access from all domains.
  3. Step 3: Add specific domain URIs that are explicitly allowed to make cross-domain calls, for example ``.
  4. Step 4: Save the modified `ClientAccessPolicy.xml` file.

4.3 Config or Code Example

Before

<access-policy>
  <cross-domain-policy>
    <allow-from uri="*" />
  </cross-domain-policy>
</access-policy>

After

<access-policy>
  <cross-domain-policy>
    <allow-from uri="https://trusteddomain.com" />
  </cross-domain-policy>
</access-policy>

4.4 Security Practices Relevant to This Vulnerability

Several security practices can help prevent this issue. Least privilege is key, limiting access only to trusted domains. Secure configuration management ensures policies are correctly set and maintained. Regular review of configurations helps identify and correct overly permissive settings.

  • Practice 1: Implement the principle of least privilege by granting only necessary permissions.
  • Practice 2: Use secure configuration management practices to ensure consistent policy enforcement.

4.5 Automation (Optional)

Automation is not typically suitable for this specific vulnerability due to the need for careful domain evaluation. However, infrastructure-as-code tools could be used to manage and deploy the `ClientAccessPolicy.xml` file with version control and automated testing of policy changes.

# Example using a configuration management tool (not directly applicable)
# Ensure ClientAccessPolicy.xml is deployed from a controlled source
# Validate policy against a whitelist of allowed domains before deployment

5. Verification / Validation

Confirm the fix by verifying that only authorized domains are listed in the `ClientAccessPolicy.xml` file. Re-test using the earlier detection method to ensure the wildcard entries have been removed. Perform a basic service smoke test to confirm Silverlight applications from allowed domains still function correctly.

  • Post-fix check: Use a web browser to view the source code of `www.example.com/ClientAccessPolicy.xml`. Confirm that no wildcard (“*”) entries are present and only authorized domains are listed.
  • Re-test: Re-run the curl command from step 3 in Detection and Assessment. The output should not contain `` or similar.
  • Smoke test: Verify that Silverlight applications hosted on allowed domains can still access resources from your server without errors.
  • Monitoring: Monitor web server logs for cross-domain requests originating from unexpected domains, which could indicate a misconfiguration or attempted exploitation.
curl https://www.example.com/ClientAccessPolicy.xml

6. Preventive Measures and Monitoring

  • Baselines: Update your organization’s security baseline to require specific domain entries instead of wildcards in `ClientAccessPolicy.xml` files.
  • Pipelines: Add static analysis checks to CI/CD pipelines that scan `ClientAccessPolicy.xml` files for overly permissive configurations.
  • Asset and patch process: Review Silverlight application configurations at least quarterly, or whenever changes are made.

7. Risks, Side Effects, and Roll Back

Incorrectly configuring the `ClientAccessPolicy.xml` file can prevent legitimate Silverlight applications from accessing resources. The roll back steps involve restoring the original backed-up file.

  • Roll back: Restore the original `ClientAccessPolicy.xml` file from backup. Restart any affected services.

8. References and Resources

Related Articles