(security/core#111) Refine prose/naming
authorTim Otten <totten@civicrm.org>
Wed, 16 Mar 2022 09:27:19 +0000 (02:27 -0700)
committerSeamus Lee <seamuslee001@gmail.com>
Wed, 16 Mar 2022 23:26:19 +0000 (10:26 +1100)
CRM/Utils/Check/Component/Security.php

index 8a35354d4ac4cc34f80e89f1ddcd58ea0a8e13a4..da8735e78ac5bf6cbee1804e116492aac066e931 100644 (file)
@@ -293,25 +293,27 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component {
   }
 
   /**
-   * Check to see if anonymous user has edit contributions permission
+   * Check to see if anonymous user has excessive permissions.
    * @return CRM_Utils_Check_Message[]
    */
-  public function checkAnonEditContribution() {
+  public function checkAnonPermissions() {
     $messages = [];
     $permissions = [];
-    if (CRM_Core_Config::singleton()->userPermissionClass->check('edit contributions', 0)) {
-      $permissions[] = 'edit contributions';
-    }
-    if (CRM_Core_Config::singleton()->userPermissionClass->check('access CiviContribute', 0)) {
-      $permissions[] = 'access CiviContribute';
+    // These specific permissions were referenced in a security submission.
+    // This functionality is generally useful -- may be good to expand to a longer list.
+    $checkPerms = ['access CiviContribute', 'edit contributions'];
+    foreach ($checkPerms as $checkPerm) {
+      if (CRM_Core_Config::singleton()->userPermissionClass->check($checkPerm, 0)) {
+        $permissions[] = $checkPerm;
+      }
     }
     if (!empty($permissions)) {
       $messages[] = new CRM_Utils_Check_Message(
         __FUNCTION__,
-        ts('Anonymous users have permissions (%1). This may cause leakage of information in regards to recurring contributions.', [
-          1 => implode(', ', $permissions),
+        ts('The system configuration grants anonymous users an <em>unusually broad</em> list of permissions. This could compromise security. Please reassess whether these permissions are required: %1', [
+          1 => '<ul><li><tt>' . implode('</tt></li><li><tt>', $permissions) . '</tt></li></ul>',
         ]),
-        ts('Security Warning'),
+        ts('Unusual Permissions for Anonymous Users'),
         \Psr\Log\LogLevel::WARNING,
         'fa-lock'
       );