wstg-conf-08

Test RIA Cross Domain Policy

SKILL.md

GitHub

wstg-conf-08

Test ID

WSTG-CONF-08

Test Name

Test RIA Cross Domain Policy

Status

Note: This test case has been deprecated by OWASP as Flash and Silverlight technologies are no longer widely used. However, legacy applications may still use these technologies.


High-Level Description

Rich Internet Application (RIA) cross-domain policy files control how Flash and Silverlight applications can access resources across different domains. Misconfigured policy files can allow unauthorized cross-domain access, leading to data theft and other security issues. While these technologies are largely obsolete, legacy applications may still require this testing.


What to Check

Policy Files

  • /crossdomain.xml (Adobe Flash)
  • /clientaccesspolicy.xml (Microsoft Silverlight)
  • Wildcard permissions (*)
  • Overly permissive configurations
  • Unnecessary cross-domain access

How to Test

Step 1: Retrieve Policy Files

# Check for Flash crossdomain.xml
curl -s https://target.com/crossdomain.xml

# Check for Silverlight clientaccesspolicy.xml
curl -s https://target.com/clientaccesspolicy.xml

Step 2: Analyze crossdomain.xml

<!-- VULNERABLE - Allows any domain -->
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <allow-access-from domain="*"/>
</cross-domain-policy>

<!-- SECURE - Specific domains only -->
<?xml version="1.0"?>
<cross-domain-policy>
    <allow-access-from domain="trusted.example.com"/>
    <allow-access-from domain="api.example.com"/>
</cross-domain-policy>

Step 3: Analyze clientaccesspolicy.xml

<!-- VULNERABLE - Allows any domain -->
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
    <cross-domain-access>
        <policy>
            <allow-from http-request-headers="*">
                <domain uri="*"/>
            </allow-from>
            <grant-to>
                <resource path="/" include-subpaths="true"/>
            </grant-to>
        </policy>
    </cross-domain-access>
</access-policy>

<!-- SECURE - Specific domains only -->
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
    <cross-domain-access>
        <policy>
            <allow-from http-request-headers="SOAPAction">
                <domain uri="https://trusted.example.com"/>
            </allow-from>
            <grant-to>
                <resource path="/api/" include-subpaths="true"/>
            </grant-to>
        </policy>
    </cross-domain-access>
</access-policy>

Step 4: Check for Vulnerable Patterns

# Check for wildcard in crossdomain.xml
curl -s https://target.com/crossdomain.xml | grep -E 'domain="\*"|domain="\*\.|secure="false"'

# Check for wildcard in clientaccesspolicy.xml
curl -s https://target.com/clientaccesspolicy.xml | grep -E 'uri="\*"|uri="http://'

Tools

Tool Description Usage
curl Retrieve policy files curl -s url/crossdomain.xml
Nikto Web scanner Includes RIA policy checks
Burp Suite Proxy Analyze policy files

Remediation Guide

1. Remove If Not Needed

If Flash/Silverlight are not used, remove policy files:

rm /var/www/html/crossdomain.xml
rm /var/www/html/clientaccesspolicy.xml

2. Restrict Access (If Needed)

<!-- crossdomain.xml - Specific domains only -->
<?xml version="1.0"?>
<cross-domain-policy>
    <site-control permitted-cross-domain-policies="master-only"/>
    <allow-access-from domain="trusted.example.com" secure="true"/>
</cross-domain-policy>

3. Modern Alternative - Use CORS

Instead of RIA policies, implement proper CORS headers for modern applications:

Access-Control-Allow-Origin: https://trusted.example.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Content-Type

Risk Assessment

CVSS Score

Wildcard Cross-Domain Policy

  • Base Score: 7.5 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

CWE Categories

CWE ID Title
CWE-942 Overly Permissive Cross-domain Whitelist
CWE-346 Origin Validation Error

References

  • OWASP Testing Guide
  • For modern cross-origin testing, see: WSTG-CLNT-07: Test Cross Origin Resource Sharing (CORS)

Checklist

[ ] crossdomain.xml checked
[ ] clientaccesspolicy.xml checked
[ ] Wildcard permissions identified
[ ] Overly permissive configs documented
[ ] If RIA not used, recommend removal
[ ] For modern apps, test CORS instead