Skip to content

Cross-Domain JavaScript Inclusion via Third-Party CDN/ CWE: 829 – Inclusion of Functionality from Untrusted Control Sphere/ WASC: 15 – Application Misconfiguration #6

@zoro1081

Description

@zoro1081

Cross-Domain JavaScript Inclusion via Third-Party CDN/ CWE: 829 – Inclusion of Functionality from Untrusted Control Sphere/ WASC: 15 – Application Misconfiguration

Summary

The application loads a JavaScript file from a third-party domain (cdn.jsdelivr.net).
If the external source is compromised, altered, or maliciously replaced, it could result in arbitrary JavaScript execution within the context of blog.cerebrum.com. This represents a supply-chain risk and weakens the application’s trust boundary.

The page includes an externally hosted JavaScript resource:

https://cdn.jsdelivr.net/ghost/portal@~2.56/umd/portal.min.js

When a browser loads JavaScript from a third-party domain, that script executes with the same privileges as first-party code. Any compromise of the CDN, package, or dependency chain would directly impact users visiting the site.

This risk is elevated when:

  • Subresource Integrity (SRI) is not enforced
  • CSP script source restrictions are weak or missing
  • Version ranges (e.g. ~2.56) are used instead of pinned hashes

Affected Asset

URL: https://blog.cerebrum.com/

Proof of Concept

HTTP Request

GET / HTTP/1.1
Host: blog.cerebrum.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html
Cache-Control: no-cache
Pragma: no-cache
Referer: https://www.cerebrum.com/

HTTP Response

<script defer src="https://cdn.jsdelivr.net/ghost/portal@~2.56/umd/portal.min.js" data-i18n="true" data-ghost="https://blog.cerebrum.com/" data-key="9695f9c9c4871b0e3495e9464c" data-api="https://blog.cerebrum.com/ghost/api/content/" data-locale="en" crossorigin="anonymous"> </script>

Observe here that JavaScript is loaded from an external domain without integrity verification.

Security Impact

If the third-party script is compromised, an attacker could:

  • Execute arbitrary JavaScript in user browsers
  • Steal session tokens, cookies, or local storage data
  • Inject malicious UI elements or phishing forms
  • Modify page content or behavior
  • Track users or exfiltrate sensitive information

This issue represents a client-side supply-chain attack vector.

Attack Scenario

  • Attacker compromises the third-party CDN or package
  • Malicious JavaScript is served to blog.cerebrum.com
  • Visitors load and execute the modified script automatically
  • Attacker gains execution in the site’s origin context

Root Cause

  • Reliance on third-party JavaScript hosted outside the application’s domain
  • No Subresource Integrity (SRI) hash enforced
  • External script execution trusted implicitly

Recommendation

  • Reduce exposure to third-party JavaScript risks by implementing the following controls:

Use Subresource Integrity (SRI)

<script src="https://cdn.jsdelivr.net/ghost/portal@~2.56/umd/portal.min.js" integrity="sha384-" crossorigin="anonymous"> </script>

Pin Exact Versions Avoid version ranges (~2.56) and use fixed versions to prevent unexpected updates.

Enforce CSP Script Restrictions Content-Security-Policy: script-src 'self' https://cdn.jsdelivr.net;

Self-Host Critical Scripts Host critical JavaScript assets locally when feasible.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions