7.3.4 Ensure custom script execution is restricted on site collections

Information

This setting controls custom script execution on a particulate site (previously called 'site collection').

Custom scripts can allow users to change the look, feel and behavior of sites and pages. Every script that runs in a SharePoint page (whether it's an HTML page in a document library or a JavaScript in a Script Editor Web Part) always runs in the context of the user visiting the page and the SharePoint application. This means:

Scripts have access to everything the user has access to.

Scripts can access content across several Microsoft 365 services and even beyond with Microsoft Graph integration.

The recommended state is DenyAddAndCustomizePages set to $true.

Rationale:

Custom scripts could contain malicious instructions unknown to the user or administrator. When users are allowed to run custom script, the organization can no longer enforce governance, scope the capabilities of inserted code, block specific parts of code, or block all custom code that has been deployed. If scripting is allowed the following things can't be audited:

What code has been inserted

Where the code has been inserted

Who inserted the code

Note: Microsoft recommends using the SharePoint Framework instead of custom scripts.

Impact:

None - this is the default behavior.

NOTE: Nessus has not performed this check. Please review the benchmark to ensure target compliance.

Solution

To remediate using PowerShell:

Connect to SharePoint Online using Connect-SPOService.

Edit the below and run for each site as needeed:

Set-SPOSite -Identity <SiteUrl> -DenyAddAndCustomizePages $true

Note: The property DenyAddAndCustomizePages cannot be set on the MySite host, which is displayed with a URL like https://tenant id-my.sharepoint.com/

Default Value:

DenyAddAndCustomizePages $true or Enabled

See Also

https://workbench.cisecurity.org/benchmarks/12934

Item Details

Category: CONFIGURATION MANAGEMENT, SYSTEM AND INFORMATION INTEGRITY

References: 800-53|CM-7, 800-53|CM-7(1), 800-53|SI-7, 800-53|SI-7(1)

Plugin: microsoft_azure

Control ID: fe35e3fc79ca6100d2199a4751ba6dfde0ecc5f99c3e440d4937ff0f7ea84335