diff --git a/typo3/sysext/extbase/Classes/Utility/ExtensionUtility.php b/typo3/sysext/extbase/Classes/Utility/ExtensionUtility.php
index 9fc7beabd11b398e46d2da45bcf8eda19af10fd0..aba43e713d57e04c057acf55b975836c25e621c8 100644
--- a/typo3/sysext/extbase/Classes/Utility/ExtensionUtility.php
+++ b/typo3/sysext/extbase/Classes/Utility/ExtensionUtility.php
@@ -52,23 +52,10 @@ class ExtensionUtility
         $extensionName = str_replace(' ', '', ucwords(str_replace('_', ' ', $extensionName)));
 
         $pluginSignature = strtolower($extensionName . '_' . $pluginName);
-        if (!is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName] ?? false)) {
-            $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName] = [];
-        }
-        foreach ($controllerActions as $controllerClassName => $actionsList) {
-            $controllerAlias = self::resolveControllerAliasFromControllerClassName($controllerClassName);
 
-            $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['controllers'][$controllerClassName] = [
-                'className' => $controllerClassName,
-                'alias' => $controllerAlias,
-                'actions' => GeneralUtility::trimExplode(',', (string)$actionsList),
-            ];
-
-            if (!empty($nonCacheableControllerActions[$controllerClassName])) {
-                $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['controllers'][$controllerClassName]['nonCacheableActions']
-                    = GeneralUtility::trimExplode(',', (string)$nonCacheableControllerActions[$controllerClassName]);
-            }
-        }
+        $controllerActions = self::actionCommaListToArray($controllerActions);
+        $nonCacheableControllerActions = self::actionCommaListToArray($nonCacheableControllerActions);
+        self::registerControllerActions($extensionName, $pluginName, $controllerActions, $nonCacheableControllerActions);
 
         switch ($pluginType) {
             case self::PLUGIN_TYPE_PLUGIN:
@@ -100,6 +87,32 @@ tt_content.' . $pluginSignature . ' {
 ' . $pluginContent, 'defaultContentRendering');
     }
 
+    /**
+     * @param array<string, string[]> $controllerActions
+     * @param array<string, string[]> $nonCacheableControllerActions
+     * @internal
+     */
+    public static function registerControllerActions(string $extensionName, string $pluginName, array $controllerActions, array $nonCacheableControllerActions): void
+    {
+        if (!is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName] ?? false)) {
+            $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName] = [];
+        }
+        foreach ($controllerActions as $controllerClassName => $actionsList) {
+            $controllerAlias = self::resolveControllerAliasFromControllerClassName($controllerClassName);
+
+            $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['controllers'][$controllerClassName] = [
+                'className' => $controllerClassName,
+                'alias' => $controllerAlias,
+                'actions' => $actionsList,
+            ];
+
+            if (!empty($nonCacheableControllerActions[$controllerClassName])) {
+                $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['controllers'][$controllerClassName]['nonCacheableActions']
+                    = $nonCacheableControllerActions[$controllerClassName];
+            }
+        }
+    }
+
     /**
      * Register an Extbase PlugIn into backend's list of plugins
      * FOR USE IN Configuration/TCA/Overrides/tt_content.php
@@ -199,6 +212,22 @@ tt_content.' . $pluginSignature . ' {
         );
     }
 
+    /**
+     * @param array<string, string|string[]> $controllerActions
+     * @return array<string, string[]>
+     */
+    protected static function actionCommaListToArray(array $controllerActions): array
+    {
+        foreach ($controllerActions as $controllerClassName => $actionsList) {
+            if (is_array($actionsList)) {
+                continue;
+            }
+            $actionsListArray = GeneralUtility::trimExplode(',', (string)$actionsList);
+            $controllerActions[$controllerClassName] = $actionsListArray;
+        }
+        return $controllerActions;
+    }
+
     /**
      * Register a type converter by class name.
      *
diff --git a/typo3/sysext/extbase/Tests/Unit/Utility/ExtensionUtilityTest.php b/typo3/sysext/extbase/Tests/Unit/Utility/ExtensionUtilityTest.php
index 6115f3d9fb233b4b50502417b918bd7abd281c9b..0eda20b5b74f56aa472002bb813afa548473c57e 100644
--- a/typo3/sysext/extbase/Tests/Unit/Utility/ExtensionUtilityTest.php
+++ b/typo3/sysext/extbase/Tests/Unit/Utility/ExtensionUtilityTest.php
@@ -202,6 +202,45 @@ final class ExtensionUtilityTest extends UnitTestCase
         self::assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
     }
 
+    /**
+     * @test
+     */
+    public function configurePluginWorksForMultipleControllerActionsAsArrayWithCacheableActionAsDefault(): void
+    {
+        $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = [];
+        ExtensionUtility::configurePlugin('MyExtension', 'Pi1', [
+            FirstController::class => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
+            SecondController::class => ['index', 'show', 'delete'],
+            ThirdController::class => ['create'],
+        ], [
+            FirstController::class => ['new', 'create', 'edit', 'update'],
+            ThirdController::class => ['create'],
+        ]);
+        $expectedResult = [
+            'controllers' => [
+                FirstController::class => [
+                    'className' => FirstController::class,
+                    'alias' => 'First',
+                    'actions' => ['index', 'show', 'new', 'create', 'delete', 'edit', 'update'],
+                    'nonCacheableActions' => ['new', 'create', 'edit', 'update'],
+                ],
+                SecondController::class => [
+                    'className' => SecondController::class,
+                    'alias' => 'Second',
+                    'actions' => ['index', 'show', 'delete'],
+                ],
+                ThirdController::class => [
+                    'className' => ThirdController::class,
+                    'alias' => 'Third',
+                    'actions' => ['create'],
+                    'nonCacheableActions' => ['create'],
+                ],
+            ],
+            'pluginType' => 'list_type',
+        ];
+        self::assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
+    }
+
     /**
      * @test
      */