diff --git a/vendor/magento/module-csp/ViewModel/NonceProvider.php b/vendor/magento/module-csp/ViewModel/NonceProvider.php
new file mode 100644
index 0000000000000..fe1acc9589017
--- /dev/null
+++ b/vendor/magento/module-csp/ViewModel/NonceProvider.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
+ */
+declare(strict_types=1);
+
+namespace Magento\Csp\ViewModel;
+
+use Magento\Csp\Helper\CspNonceProvider;
+use Magento\Framework\Exception\LocalizedException;
+use Magento\Framework\View\Element\Block\ArgumentInterface;
+
+/**
+ * This class provides a nonce for the Content Security Policy (CSP) header.
+ */
+class NonceProvider implements ArgumentInterface
+{
+    /**
+     * @var CspNonceProvider
+     */
+    private $cspNonceProvider;
+
+    /**
+     * @param CspNonceProvider $cspNonceProvider
+     */
+    public function __construct(
+        CspNonceProvider $cspNonceProvider,
+    ) {
+        $this->cspNonceProvider = $cspNonceProvider;
+    }
+
+    /**
+     * Returns a nonce for the Content Security Policy (CSP) header.
+     *
+     * @return string
+     * @throws LocalizedException
+     */
+    public function getNonce(): string
+    {
+        return $this->cspNonceProvider->generateNonce();
+    }
+}
diff --git a/vendor/magento/module-csp/view/base/requirejs-config.js b/vendor/magento/module-csp/view/base/requirejs-config.js
new file mode 100644
index 0000000000000..a9be6bb70ab9a
--- /dev/null
+++ b/vendor/magento/module-csp/view/base/requirejs-config.js
@@ -0,0 +1,12 @@
+/**
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
+ */
+
+var config = {
+    map: {
+        '*': {
+            'nonceInjector': 'Magento_Csp/js/nonce-injector'
+        }
+    }
+};
diff --git a/vendor/magento/module-csp/view/base/templates/nonce/nonce.phtml b/vendor/magento/module-csp/view/base/templates/nonce/nonce.phtml
new file mode 100644
index 0000000000000..49f7344fb36a3
--- /dev/null
+++ b/vendor/magento/module-csp/view/base/templates/nonce/nonce.phtml
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
+ */
+
+/**
+ * @var \Magento\Framework\Escaper $escaper
+ */
+
+$nonceProvider = $block->getNonceProvider();
+
+?>
+<script type="text/x-magento-init">
+    {
+        "*": {
+            "nonceInjector": {
+                "nonce": "<?= $escaper->escapeJs($nonceProvider->getNonce()); ?>"
+        }
+    }
+}
+</script>
diff --git a/vendor/magento/module-csp/view/base/web/js/nonce-injector.js b/vendor/magento/module-csp/view/base/web/js/nonce-injector.js
new file mode 100644
index 0000000000000..3a3ebd7552d6f
--- /dev/null
+++ b/vendor/magento/module-csp/view/base/web/js/nonce-injector.js
@@ -0,0 +1,12 @@
+/**
+ * Copyright 2024 Adobe
+ * All Rights Reserved.
+ */
+
+define('Magento_Csp/js/nonce-injector', [], function () {
+    'use strict';
+
+    return function (config) {
+        window.cspNonce = config.nonce;
+    };
+});
