Salesforce Security Audit

Org: Acme Corp (sample) ID: 00Dxx0000000001AAA Instance: NA1 Type: Enterprise Edition Generated: 2026-10-21T00:00:00.000Z
77/100
F
Why F: 7 CRITICAL (4 findings, 3 attack chains) (D allows none)
Evidence coverage 98% (99 of 101 checks)
Not assessed: api-client-permission, enhanced-domains
Each unassessed check has an inconclusive finding quoting what the org returned. Where the cause is access, `sf audit preflight` lists the permissions the audit user is missing, and PERMISSIONS.md (https://github.com/cclabsnz/sf-audit-plugin/blob/main/PERMISSIONS.md) has the read-only permission set to assign.
CRITICAL 4
HIGH 19
MEDIUM 15
LOW 3
4
CRITICAL
19
HIGH
15
MEDIUM
3
LOW
Users & Access
Active Users
240
Modify All Data
5
View All Data
5
Inactive 90d
0
Profiles
9
Permission Sets
14
Code Quality
Apex Classes
3
Apex Triggers
1
Code Coverage
81%
Integrations
Connected Apps
0
Remote Sites
1
↳ Insecure
1
Named Credentials
0
↳ Unused
0
Governance & Events
Failed Logins (30d)
4
SF Health Check
71%

Attack Paths (8)

Combinations of findings that together enable an exploit more severe than any single finding.

[CRITICAL] Unauthenticated bulk exfiltration

An unauthenticated guest foothold combines with guest-reachable code execution or public external sharing to read business data in bulk without any login. In practice this is reached over the site's Aura endpoint (/s/sfsites/aura) with aura.token=null: RecordUiController/ACTION$executeGraphQL returns record data the guest user can see, and aura.ApexAction.execute invokes @AuraEnabled Apex — which, in a class that runs without sharing, skips record-level access control entirely and will accept arbitrary record ids. No credentials are involved at any point, so login-based controls (MFA, IP ranges, SSO) never engage.

STEP 1 · HIGH 1 object(s) have Public R… grants: low-trust-authenticated STEP 2 · MEDIUM 1 active guest user(s) ha… grants: unauth-foothold ✂ CUT-POINT STEP 3 · CRITICAL 2 externally exposed Apex… grants: code-exec ★ Remediating breaks chain STEP 4 · CRITICAL 2 object(s) fully readabl… grants: unauth-foothold STEP 5 · HIGH 2 guest permission grant(… grants: unauth-foothold STEP 6 · CRITICAL 1 guest-executable Apex c… grants: code-exec
  1. 1 object(s) have Public Read OWD for external/portal users (HIGH): grants low-trust-authenticated
  2. 1 active guest user(s) have live site access (MEDIUM): grants unauth-foothold
  3. 2 externally exposed Apex class(es) (@AuraEnabled/@RemoteAction/@RestResource) lack "with sharing": IDOR risk (CRITICAL): grants code-exec
  4. 2 object(s) fully readable by unauthenticated guests (public external OWD) (CRITICAL): grants unauth-foothold
  5. 2 guest permission grant(s) give Read access to the User object (HIGH): grants unauth-foothold
  6. 1 guest-executable Apex class(es) run without sharing, directly or through a helper (CRITICAL): grants code-exec

Remediation: Remove guest object/sharing access, ensure no guest-invokable Apex runs without sharing, and set external OWD to Private. Grant portal access only via sharing sets. Because the requests never reach a login page, tightening authentication does not mitigate this — the object permissions, sharing model and Apex sharing declarations are the controls that apply.

[CRITICAL] Standard user to org takeover

A low-trust authenticated user combines with a privilege-escalation permission (assign permission sets, manage users, author apex, modify metadata) to reach full org control.

STEP 1 · HIGH 1 object(s) have Public R… grants: low-trust-authenticated STEP 2 · HIGH 1 live Experience Cloud s… grants: low-trust-authenticated ✂ CUT-POINT STEP 3 · CRITICAL 2 object(s) fully readabl… grants: unauth-foothold ★ Remediating breaks chain STEP 4 · HIGH 2 guest permission grant(… grants: unauth-foothold STEP 5 · CRITICAL 1 guest-executable Apex c… grants: code-exec STEP 6 · HIGH 1 escalation-permission g… grants: priv-esc STEP 7 · CRITICAL 1 user(s) hold admin-equi… grants: org-takeover STEP 8 · HIGH 4 user(s) hold the super-… grants: org-takeover STEP 9 · MEDIUM 4 user(s) have Author Ape… grants: code-exec STEP 10 · MEDIUM 1 active guest user(s) ha… grants: unauth-foothold
  1. 1 object(s) have Public Read OWD for external/portal users (HIGH): grants low-trust-authenticated
  2. 1 live Experience Cloud site(s) allow self-registration (HIGH): grants low-trust-authenticated
  3. 2 object(s) fully readable by unauthenticated guests (public external OWD) (CRITICAL): grants unauth-foothold
  4. 2 guest permission grant(s) give Read access to the User object (HIGH): grants unauth-foothold
  5. 1 guest-executable Apex class(es) run without sharing, directly or through a helper (CRITICAL): grants code-exec
  6. 1 escalation-permission grant(s) across active users (HIGH): grants priv-esc
  7. 1 user(s) hold admin-equivalent access without the System Administrator profile (CRITICAL): grants org-takeover
  8. 4 user(s) hold the super-admin permission combination (ViewAllData + ModifyAllData + ManageUsers) (HIGH): grants org-takeover
  9. 4 user(s) have Author Apex permission (MEDIUM): grants code-exec
  10. 1 active guest user(s) have live site access (MEDIUM): grants unauth-foothold

Remediation: Remove escalation permissions from non-admin profiles/permission sets and review who holds them.

[CRITICAL] Credential theft to external pivot

Exposed secrets (hardcoded credentials, credentials in custom labels, debug logs, or broad CORS) combine with an external egress path (named credential or remote site) to exfiltrate data to attacker infrastructure.

STEP 1 · INFO 1 active remote site sett… grants: external-egress ✂ CUT-POINT STEP 2 · HIGH 1 Apex class(es) contain … grants: credential-theft ★ Remediating breaks chain
  1. 1 active remote site setting(s) registered (1 insecure, 0 secure) (INFO): grants external-egress
  2. 1 Apex class(es) contain potential hardcoded credentials (HIGH): grants credential-theft

Remediation: Rotate and remove exposed secrets, tighten CORS origins, and review external callout endpoints.

[HIGH] Self-service registration into an over-shared portal

A live Experience Cloud site accepts self-registration, and the external sharing model or portal-reachable code gives whoever holds an account more than their own records. Every other chain that starts from "an authenticated external user" assumes the attacker already has an account; this is the one that says anyone may have one, for the cost of an email address. The account is legitimate, so it arrives through the front door with a real session: MFA, login IP ranges and SSO all behave exactly as configured and none of them object, because nothing here is a bypass. What the attacker gets is decided entirely by the external OWD, the portal profile and whether the Apex or Flow reachable from the site enforces sharing. Self-registration alone is a supported feature and not a finding; the sharing model alone assumes an account the attacker may never obtain. The pair is the path.

STEP 1 · HIGH 1 live Experience Cloud s… grants: low-trust-authenticated STEP 2 · HIGH 1 object(s) have Public R… grants: low-trust-authenticated ✂ CUT-POINT STEP 3 · CRITICAL 2 externally exposed Apex… grants: code-exec ★ Remediating breaks chain
  1. 1 live Experience Cloud site(s) allow self-registration (HIGH): grants low-trust-authenticated
  2. 1 object(s) have Public Read OWD for external/portal users (HIGH): grants low-trust-authenticated
  3. 2 externally exposed Apex class(es) (@AuraEnabled/@RemoteAction/@RestResource) lack "with sharing": IDOR risk (CRITICAL): grants code-exec

Remediation: Decide which half to close, because either breaks the chain. Turning self-registration off, or putting an approval step in front of it, restores the assumption every other control depends on. Leaving it on means treating the self-registration profile as hostile input: set external OWD to Private and grant through sharing sets rather than org-wide defaults, and make sure Apex and Flows reachable from the site run with sharing. Check what the self-registration handler assigns as the default profile and licence — the exposure is whatever that profile can reach, and it is rarely reviewed after the site goes live.

[HIGH] Org files served to anonymous callers, with no record of what left

Files hosted by the org are fetchable without authentication — public Documents or static resources, content distribution links that never expire or ask for a password, or a site that grants guests file access — and nothing in the org would establish what those files contained or who collected them. Files are the blind spot in a sharing model. Org-wide defaults, sharing rules and field-level security all govern records, and none of them apply to a static resource served from a URL. Static resources in particular tend to accumulate the things front-end code needs and nobody re-reads: configuration, endpoint lists, and occasionally an API key that was only ever meant to reach the browser. This chain deliberately claims less than the guest chains do. It does not assert a pivot into org data, because there is none — anonymous file access returns the file and stops. What it asserts is that content left the org outside every record control, and that the absence of classification or monitoring means the question "what was in it" has no answer available after the fact.

✂ CUT-POINT STEP 1 · HIGH 1 site(s) allow guest use… grants: data-read ★ Remediating breaks chain STEP 2 · HIGH 7 of 7 key object(s) have… grants: data-read STEP 3 · MEDIUM Shield Platform Encryptio… grants: data-read STEP 4 · MEDIUM Threat Detection stores a… grants: data-read STEP 5 · HIGH No Event Monitoring log f… grants: data-read STEP 6 · HIGH No SIEM or external monit… grants: data-read
  1. 1 site(s) allow guest users to access files (HIGH): grants data-read
  2. 7 of 7 key object(s) have no data classification: SBS-DATA-001/002 (HIGH): grants data-read
  3. Shield Platform Encryption not detected: SBS-DATA-003 (MEDIUM): grants data-read
  4. Threat Detection stores are present but contain no events (MEDIUM): grants data-read
  5. No Event Monitoring log files found in the last 35 days: SBS-MON-001 (HIGH): grants data-read
  6. No SIEM or external monitoring integration detected: SBS-MON-003/004 (HIGH): grants data-read

Remediation: Retrieve and read the exposed files before deciding how urgent this is: the exposure is whatever they actually contain, and that is knowable now in a way it will not be later. Then remove external availability from Documents and static resources that do not need it, set expiry and passwords on content distribution links, and turn off guest file access on sites that do not depend on it. Treat any credential found in a static resource as disclosed and rotate it rather than removing the file, since the file has already been served and may be cached anywhere.

[MEDIUM] Exploitable access with no detection coverage

The org already presents a real attacker capability — an unauthenticated foothold, a privilege-escalation path, or org takeover — and simultaneously lacks the controls that would notice it being used. Two or more of threat detection, Event Monitoring, a Transaction Security policy and SIEM forwarding are absent. This chain does not add exposure; it means the exposure already present would go unobserved, and an incident could not be reconstructed.

✂ CUT-POINT STEP 1 · HIGH 4 user(s) hold the super-… grants: org-takeover ★ Remediating breaks chain STEP 2 · MEDIUM 4 user(s) have Author Ape… grants: code-exec STEP 3 · MEDIUM 1 active guest user(s) ha… grants: unauth-foothold STEP 4 · HIGH No Transaction Security P… grants: data-read STEP 5 · MEDIUM Threat Detection stores a… grants: data-read STEP 6 · HIGH No Event Monitoring log f… grants: data-read STEP 7 · HIGH No SIEM or external monit… grants: data-read
  1. 4 user(s) hold the super-admin permission combination (ViewAllData + ModifyAllData + ManageUsers) (HIGH): grants org-takeover
  2. 4 user(s) have Author Apex permission (MEDIUM): grants code-exec
  3. 1 active guest user(s) have live site access (MEDIUM): grants unauth-foothold
  4. No Transaction Security Policies are enabled (HIGH): grants data-read
  5. Threat Detection stores are present but contain no events (MEDIUM): grants data-read
  6. No Event Monitoring log files found in the last 35 days: SBS-MON-001 (HIGH): grants data-read
  7. No SIEM or external monitoring integration detected: SBS-MON-003/004 (HIGH): grants data-read

Remediation: Close the detection gap first: enable Event Monitoring with adequate retention, turn on threat detection event storage, add a Transaction Security policy, and forward events to a SIEM. Then remediate the underlying access findings.

[MEDIUM] Potential attack path: unauth foothold → credential theft (potential)

The org presents a unauth foothold entry point and findings that grant credential theft. Review whether these can be combined into an exploit path.

STEP 1 · MEDIUM 4 user(s) have Author Ape… grants: code-exec STEP 2 · MEDIUM 1 active guest user(s) ha… grants: unauth-foothold STEP 3 · HIGH 1 Apex class(es) contain … grants: credential-theft ✂ CUT-POINT STEP 4 · CRITICAL 2 externally exposed Apex… grants: code-exec ★ Remediating breaks chain
  1. 4 user(s) have Author Apex permission (MEDIUM): grants code-exec
  2. 1 active guest user(s) have live site access (MEDIUM): grants unauth-foothold
  3. 1 Apex class(es) contain potential hardcoded credentials (HIGH): grants credential-theft
  4. 2 externally exposed Apex class(es) (@AuraEnabled/@RemoteAction/@RestResource) lack "with sharing": IDOR risk (CRITICAL): grants code-exec

Remediation: Treat the contributing findings as a single risk: remediating any one of them breaks the path.

[MEDIUM] Potential attack path: low trust authenticated → credential theft (potential)

The org presents a low trust authenticated entry point and findings that grant credential theft. Review whether these can be combined into an exploit path.

STEP 1 · MEDIUM 4 user(s) have Author Ape… grants: code-exec STEP 2 · HIGH 1 object(s) have Public R… grants: low-trust-authenticated STEP 3 · HIGH 1 Apex class(es) contain … grants: credential-theft ✂ CUT-POINT STEP 4 · CRITICAL 2 externally exposed Apex… grants: code-exec ★ Remediating breaks chain
  1. 4 user(s) have Author Apex permission (MEDIUM): grants code-exec
  2. 1 object(s) have Public Read OWD for external/portal users (HIGH): grants low-trust-authenticated
  3. 1 Apex class(es) contain potential hardcoded credentials (HIGH): grants credential-theft
  4. 2 externally exposed Apex class(es) (@AuraEnabled/@RemoteAction/@RestResource) lack "with sharing": IDOR risk (CRITICAL): grants code-exec

Remediation: Treat the contributing findings as a single risk: remediating any one of them breaks the path.

MEDIUM Salesforce Security Health Check Score: 71/100 Health Check ›

The Salesforce Security Health Check scored 71/100. Scores below 85 indicate security configuration gaps that should be addressed.

Remediation

Review the Security Health Check in Setup → Security Center → Health Check.

OWASP-A05SOC2-CC7.1ISO-A.8.8SBS-SECCONF-001SBS-SECCONF-002HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
HIGH Security Health Check: 1 High-Risk Setting(s) Require Attention Health Check ›

One or more settings deviate from Salesforce security recommendations at the high-risk level.

Remediation

Address each highlighted setting in Setup → Security Center → Health Check.

Affected items (1)
ItemSetup LinkNotes
Minimum password lengthOpen ↗Current: 8. Recommended: 12
OWASP-A05SOC2-CC7.1ISO-A.8.8SBS-SECCONF-001SBS-SECCONF-002HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
MEDIUM Security Health Check: 2 Medium-Risk Setting(s) Need Review Health Check ›

One or more settings deviate from Salesforce security recommendations at the medium-risk level.

Remediation

Review and address medium-risk settings in Setup → Security Center → Health Check.

Affected items (2)
ItemSetup LinkNotes
Timeout valueOpen ↗Current: 12 hours. Recommended: 2 hours
Maximum invalid login attemptsOpen ↗Current: 10. Recommended: 5
OWASP-A05SOC2-CC7.1ISO-A.8.8SBS-SECCONF-001SBS-SECCONF-002HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
HIGH 4 user(s) hold the super-admin permission combination (ViewAllData + ModifyAllData + ManageUsers) Users & Admins ›

SBS-ACS-004 requires documented justification for any user holding all three of ViewAllData, ModifyAllData, and ManageUsers simultaneously. This combination is equivalent to unrestricted org control.

Remediation

Reduce to the minimum necessary permissions. Document justification for each user in the system of record. Consider breaking this into role-specific permission sets.

Affected items (4)
ItemSetup LinkNotes
avery@acme.example (System Administrator)Open ↗via: Profile
blake@acme.example (System Administrator)Open ↗via: Profile
casey@acme.example (System Administrator)Open ↗via: Profile
devon@acme.example (System Administrator)Open ↗via: Profile
OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS 5 user(s) have Modify All Data permission Users & Admins ›

Modify All Data grants unrestricted write access across all objects. This is one of the most powerful permissions in Salesforce. 4 of them also hold the super-admin combination and are rated in that finding; this severity reflects the other 1.

Remediation

Limit Modify All Data to essential system administrators only. Review each user and remove the permission from any non-essential accounts.

Affected items (5)
ItemSetup LinkNotes
avery@acme.example (System Administrator)Open ↗via: Profile
blake@acme.example (System Administrator)Open ↗via: Profile
casey@acme.example (System Administrator)Open ↗via: Profile
devon@acme.example (System Administrator)Open ↗via: Profile
gray@acme.example (Custom: Integration)Open ↗via: Integration_Full_Access
OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS 5 user(s) have View All Data permission Users & Admins ›

View All Data grants unrestricted read access across all objects, bypassing sharing rules and record-level security.

Remediation

Limit View All Data to essential users. Consider using permission sets scoped to specific objects instead.

Affected items (5)
ItemSetup LinkNotes
avery@acme.example (System Administrator)Open ↗via: Profile
blake@acme.example (System Administrator)Open ↗via: Profile
casey@acme.example (System Administrator)Open ↗via: Profile
devon@acme.example (System Administrator)Open ↗via: Profile
gray@acme.example (Custom: Integration)Open ↗via: Integration_Full_Access
OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
MEDIUM 4 user(s) have Author Apex permission Users & Admins ›

Author Apex allows users to write and deploy Apex code, which can execute server-side logic with elevated privileges.

Remediation

Author Apex allows code deployment. Limit to developers with a genuine need.

Affected items (4)
ItemSetup LinkNotes
avery@acme.example (System Administrator)Open ↗via: Profile
blake@acme.example (System Administrator)Open ↗via: Profile
casey@acme.example (System Administrator)Open ↗via: Profile
devon@acme.example (System Administrator)Open ↗via: Profile
OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
LOW 14 custom permission sets in use Permissions ›

A large number of permission sets increases administrative complexity and makes it harder to audit access effectively.

Remediation

Review and consolidate permission sets. Excessive numbers increase administrative complexity and expand the attack surface.

OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-ACS-002SBS-ACS-005HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No custom profiles or permission sets broadly grant API Enabled Permissions ›

API Enabled is not granted by any custom profile or permission set. Standard profiles may still grant it.

Remediation

Continue monitoring as new permission sets and profiles are created.

OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-ACS-002SBS-ACS-005HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS 4 failed login attempt(s) in the last 30 days Session Security ›

There were 4 failed login attempts out of 60 total logins in the last 30 days.

Remediation

Investigate accounts with repeated failures. Consider IP restrictions or additional MFA policies for high-failure accounts.

OWASP-A07SOC2-CC6.1ISO-A.8.3HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)HIPAA-164.308(a)(5)(ii)(C)
✓ PASS All connected apps restrict user access appropriately App Security ›

All 0 connected app(s) are configured to require admin pre-authorization.

Remediation

Continue monitoring as new connected apps are added.

OWASP-A05SOC2-CC6.6ISO-A.8.3SBS-OAUTH-001SBS-OAUTH-002SBS-DEP-006HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)
HIGH 1 object(s) have Public Read OWD for external/portal users Data Access Control ›

An external OWD of Public Read exposes all records to any Experience Cloud portal user. Attackers who create or compromise a portal account can enumerate the entire dataset for reconnaissance and data theft. Even without write access, bulk record exposure violates data minimisation principles and enables targeted attacks.

Remediation

Set external OWD to Private and use sharing sets or sharing rules to grant portal users access only to their own records.

Affected items (1)
ItemSetup LinkNotes
CaseOpen ↗External OWD: Read, portal users can read all records
OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
HIGH 3 object(s) have Public Read/Write OWD for internal users Data Access Control ›

An internal OWD of Public Read/Write means every authenticated user can read and modify all records regardless of record ownership. A compromised internal account, malicious insider, or over-permissioned integration user gains full access to the entire dataset. This undermines record-level access controls and violates least-privilege principles.

Remediation

Set OWD to Private or Public Read Only for sensitive objects. Use sharing rules, role hierarchy, or Apex managed sharing to grant specific access where needed.

Affected items (3)
ItemSetup LinkNotes
AccountOpen ↗Internal OWD: ReadWrite, change to Private or Public Read Only
CaseOpen ↗Internal OWD: ReadWrite, change to Private or Public Read Only
LeadOpen ↗Internal OWD: ReadWriteTransfer, change to Private or Public Read Only
OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS All monitored API limits are within acceptable thresholds Resource Management ›

All monitored API and resource limits are below 50% utilization.

Remediation

Continue monitoring limits as org activity grows.

OWASP-A05SOC2-CC9.1ISO-A.8.8SBS-MON-005HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
LOW 1 permission or security configuration change(s) in the last 7 days Security Controls ›

Frequent permission and security changes can indicate privilege escalation activity or risky configuration drift.

Remediation

Review each change in Setup → Audit Trail. Investigate unexpected changes, especially outside change-management windows.

Affected items (1)
ItemSetup LinkNotes
blake@acme.example: Assigned permission set Integration_Full_Access to user gray@acme.exampleOpen ↗2026-10-18
OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-MON-002HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33
? INCONCLUSIVE Who can delete Event Monitoring data could not be read: the permission is not in this org Security Controls ›

This org has no PermissionSet.PermissionsManageEventLogFiles field, which is usual when Event Monitoring is not licensed. Who can delete event monitoring data is therefore unestablished from permissions, and SBS-MON-002 is unevaluated rather than satisfied.

Remediation

If the org licenses Event Monitoring, review who holds "Manage Event Log Files" or "Delete Event Monitoring Data" in Setup → Permission Sets.

OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-MON-002HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33
✓ PASS No active users with 90+ days of inactivity Users & Admins ›

All active standard users have logged in within the past 90 days.

Remediation

Continue to run periodic user access reviews to catch future stale accounts.

OWASP-A01SOC2-CC6.2ISO-A.5.18PRIVACY-IPP9HIPAA-164.308(a)(3)GDPR-Art5(1)(f)
✓ PASS Password and session policies appear compliant with security recommendations Identity & Access ›

No password, session, or MFA-related deviations were detected in the Security Health Check results.

Remediation

Continue monitoring password policies and MFA enforcement as Salesforce releases new security recommendations.

OWASP-A07SOC2-CC6.1ISO-A.8.3HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)HIPAA-164.312(a)(2)(iii)HIPAA-164.308(a)(5)(ii)(D)
HIGH 4 admin user(s) have profiles without login IP restrictions Identity & Access ›

Administrator accounts without IP login restrictions can be accessed from any network, increasing exposure to credential-stuffing attacks.

Remediation

Add IP login ranges to all admin profiles in Setup → Profiles → Login IP Ranges, or enable MFA as a compensating control.

Affected items (4)
ItemSetup LinkNotes
avery@acme.exampleOpen ↗Profile: System Administrator: add IP ranges in Setup → Profiles → Login IP Ranges
blake@acme.exampleOpen ↗Profile: System Administrator: add IP ranges in Setup → Profiles → Login IP Ranges
casey@acme.exampleOpen ↗Profile: System Administrator: add IP ranges in Setup → Profiles → Login IP Ranges
devon@acme.exampleOpen ↗Profile: System Administrator: add IP ranges in Setup → Profiles → Login IP Ranges
OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-AUTH-003HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
MEDIUM 1 active guest user(s) have live site access Access Control ›

Guest users are present in this org. While no write access or overly permissive sharing rules were found, guest access should be periodically reviewed.

Remediation

Regularly review guest user profile permissions and sharing configurations as they represent an unauthenticated attack surface.

Affected items (1)
ItemSetup LinkNotes
portal_site_guest@acme.exampleOpen ↗Periodically review guest permissions and sharing configuration
OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-CPORTAL-002HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
HIGH 1 remote site(s) have protocol security disabled External Connectivity ›

Remote sites with "Disable Protocol Security" enabled allow Apex to make callouts over plain HTTP, exposing data in transit to interception.

Remediation

Enable HTTPS on each endpoint and remove the "Disable Protocol Security" flag. Plaintext HTTP callouts should never be used for any integration.

Affected items (1)
ItemSetup LinkNotes
LegacyBillingOpen ↗http://billing.acme.example: enable HTTPS and re-enable protocol security
OWASP-A05OWASP-A10SOC2-CC6.6ISO-A.8.26SBS-INT-002HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)HIPAA-164.312(e)(2)(ii)
INFO 1 active remote site setting(s) registered (1 insecure, 0 secure) External Connectivity ›

Remote Site Settings control which external URLs Apex code can call. Entries should be reviewed periodically to remove unused entries.

Remediation

Audit each remote site setting to confirm it is still actively used. Remove unused entries to reduce the attack surface.

Affected items (1)
ItemSetup LinkNotes
LegacyBillingOpen ↗http://billing.acme.example ⚠ Protocol security disabled
OWASP-A05OWASP-A10SOC2-CC6.6ISO-A.8.26SBS-INT-002HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)HIPAA-164.312(e)(2)(ii)
✓ PASS No active CSP Trusted Sites configured Network Security ›

No active CSP Trusted Sites are configured. Salesforce applies default Content Security Policy headers. Add trusted sites only when loading external resources in Lightning components.

Remediation

No action required. When adding external resources, use HTTPS endpoints only.

OWASP-A05OWASP-A10SOC2-CC6.6ISO-A.8.26HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)HIPAA-164.312(e)(2)(ii)
INFO No named credentials configured External Connectivity ›

No named credentials are configured. If this org makes external callouts, consider using Named Credentials to avoid hardcoded endpoints.

Remediation

Configure Named Credentials for any external service integrations rather than hardcoding endpoints in Apex.

OWASP-A02OWASP-A10SOC2-CC6.7ISO-A.8.3SBS-INT-003HISO-CRYPTONZISM-CRYPTOPRIVACY-IPP5HIPAA-164.312(a)(2)(iv)GDPR-Art32(1)(a)GDPR-Art5(1)(f)
HIGH 1 Apex class(es) contain potential hardcoded credentials Code Security ›

Hardcoded Bearer tokens, Basic auth, or API keys in Apex source code expose credentials to anyone with metadata read access.

Remediation

Replace hardcoded credentials with Named Credentials. Rotate any exposed credentials immediately.

Affected items (1)
ItemSetup LinkNotes
InvoiceSyncServiceOpen ↗Replace hardcoded credential with a Named Credential and rotate the exposed secret
OWASP-A02SOC2-CC6.7ISO-A.8.3SBS-DEP-005HISO-CRYPTONZISM-CRYPTOPRIVACY-IPP5HIPAA-164.312(a)(2)(iv)GDPR-Art32(1)(a)GDPR-Art5(1)(f)
CRITICAL 2 externally exposed Apex class(es) (@AuraEnabled/@RemoteAction/@RestResource) lack "with sharing": IDOR risk Code Security ›

Classes with @AuraEnabled, @RemoteAction or @RestResource methods that use "without sharing" or have no sharing declaration execute without record-level access control. Attackers can supply arbitrary record IDs to read or manipulate data they should not access (IDOR). SBS-CPORTAL-001 requires server-side authorization for every record accessed via portal Apex.

Remediation

Add "with sharing" to all @AuraEnabled, @RemoteAction and @RestResource classes. Validate user ownership or sharing on every record accessed inside these methods.

Affected items (2)
ItemSetup LinkNotes
PortalCaseControllerOpen ↗Uses explicit "without sharing": replace with "with sharing"
InvoiceSyncServiceOpen ↗No sharing declaration: add "with sharing"
OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-001HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
HIGH 1 Apex class(es) explicitly use "without sharing" Code Security ›

Classes declared "without sharing" ignore the running user's record access and can access all data in the org.

Remediation

Replace "without sharing" with "with sharing" or "inherited sharing" unless there is a documented business requirement.

Affected items (1)
ItemSetup LinkNotes
PortalCaseControllerOpen ↗Change to "with sharing" or "inherited sharing" and test thoroughly
OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-001HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
MEDIUM 1 Apex class(es) have no sharing declaration Code Security ›

Apex classes without a sharing declaration default to "without sharing" behavior when called from a context that doesn't enforce sharing.

Remediation

Add explicit sharing declarations to all Apex classes. Use "with sharing" as the default, or "inherited sharing" for utility classes.

Affected items (1)
ItemSetup LinkNotes
InvoiceSyncServiceOpen ↗Add "with sharing" or "inherited sharing" declaration
OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-001HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
INFO Apex sharing analysis: 1 with sharing, 0 inherited, 1 without sharing, 1 no declaration (3 total) Code Security ›

Summary of sharing declarations across 3 custom Apex classes.

Remediation

Aim for all classes to use "with sharing" or "inherited sharing".

OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-001HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No active flows running without sharing context identified Flow Security ›

All 1 active flows either enforce user sharing context or are not autolaunched/screen flow types.

Remediation

Continue to review flow settings when new flows are activated.

OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No records shared to All Internal Users groups via sharing rules Sharing & Visibility ›

No sharing rules were found targeting the "All Internal Users" group on key objects.

Remediation

Continue to avoid broad sharing rules. Periodically review sharing configuration as the org grows.

OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS Sensitive custom fields appear appropriately restricted Data Access ›

No sensitive custom fields with excessive permission set access were found.

Remediation

Continue to apply restrictive field-level security to any new sensitive fields.

OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
INFO 0 active scheduled/batch Apex job(s) found Code Security ›

This is an inventory of currently active scheduled and batch Apex jobs in the org.

Remediation

Periodically review scheduled jobs to ensure all active automation is expected and authorized.

OWASP-A05SOC2-CC7.2ISO-A.8.32HISO-DEVNZISM-SWHIPAA-164.312(c)(1)GDPR-Art25GDPR-Art32(1)(b)
MEDIUM Apex test coverage: 81% Code Security ›

Org-wide Apex test coverage is 81%. Salesforce requires 75% minimum to deploy but higher coverage indicates better code quality and security.

Remediation

Increase test coverage, particularly for security-sensitive Apex classes handling authentication, data access, and external integrations.

OWASP-A03OWASP-A05SOC2-CC7.2ISO-A.8.25SBS-CODE-002HISO-DEVNZISM-SWHIPAA-164.312(c)(1)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No obviously credential-related custom objects detected Code Security ›

No custom objects with credential-related naming patterns were found.

Remediation

Continue to avoid storing secrets in custom objects or custom settings. Use Named Credentials for external authentication.

OWASP-A02SOC2-CC6.7ISO-A.8.3HISO-CRYPTONZISM-CRYPTOPRIVACY-IPP5HIPAA-164.312(a)(2)(iv)GDPR-Art32(1)(a)GDPR-Art5(1)(f)
✓ PASS No active users are assigned to standard out-of-the-box Salesforce profiles Permissions ›

SBS-ACS-005 requires all active users be on custom profiles. No violations found.

Remediation

Continue monitoring as new users are onboarded.

OWASP-A01SOC2-CC6.3ISO-A.5.18SBS-ACS-005HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No username-password logins detected in the last 30 days Authentication ›

SBS-AUTH-001 requires production orgs to disable Salesforce credential logins. No username-password logins were found in LoginHistory for the past 30 days, which is consistent with SSO being enforced.

Remediation

Verify in Setup → Single Sign-On Settings that "Prevent Login with Salesforce Credentials" is enabled to enforce SBS-AUTH-001 at the org level.

OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-AUTH-001SBS-AUTH-002HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS No active external/portal users found: SBS-AUTH-004 not applicable Authentication ›

SBS-AUTH-004 applies to external users with substantial access to sensitive data. No active portal user types were found in this org.

Remediation

If Experience Cloud sites are added in future, ensure SBS-AUTH-004 MFA requirements are met for external users.

OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-AUTH-004HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
? INCONCLUSIVE "Use Any API Client" holders could not be read: the permission field is not in this org Permissions ›

This org has no PermissionSet.PermissionsUseAnyApiClient field, which is usual when API Access Control is not available. Who can bypass API client restrictions is therefore unestablished, and SBS-ACS-006 is unevaluated rather than satisfied.

Remediation

If API Access Control is enabled, review who holds "Use Any API Client" in Setup → Permission Sets.

OWASP-A01SOC2-CC6.3ISO-A.8.3SBS-ACS-006HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No SOAP API login() authentication in the last 90 days Permissions ›

Winter '27 requires the "Use Any API Auth" permission to authenticate with SOAP API login(). No login in the last 90 days used a SOAP API type, so no account is exposed to that change on the evidence available. LoginHistory retains six months, so an integration that runs less frequently than this window would not appear.

Remediation

No action needed. If you operate an integration that runs less often than quarterly, confirm its authentication method directly rather than relying on this window.

OWASP-A01SOC2-CC6.1ISO-A.5.18HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No candidate non-human identities found: SBS-ACS-007 Permissions ›

SBS-ACS-007 requires all non-human identities to be inventoried and documented. No standard users matching common service account patterns (by username) or never-logged-in users were found. This run could not gather the following signal(s): connected-app-run-as. Accounts identifiable only by connected-app-run-as are not represented here.

Remediation

As integration accounts are created, ensure they are documented with a named owner, stated purpose, and review date.

OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-ACS-007SBS-ACS-008SBS-ACS-009HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)HIPAA-164.312(a)(2)(i)
✓ PASS No integration or service accounts found Permissions ›

No active account matched an integration signal (Salesforce Integration licence, scheduled-job owner, never logged in, API-only logins, or a service-account username pattern), so there is no non-human identity holding surplus permissions. One qualification: the following classification signal could not be gathered on this run — connected-app-run-as — so an account reachable only by it was not examined.

Remediation

As integration accounts are created, grant them a dedicated permission set scoped to the objects and operations they actually use, rather than a broad profile.

OWASP-A01SOC2-CC6.3ISO-A.5.18SBS-ACS-008SBS-ACS-009HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No active public content distribution links found File Security ›

SBS-FILE-001/002/003 govern the lifecycle of public content sharing links. No active public links were found in this org.

Remediation

Continue monitoring as files are shared externally.

OWASP-A01SOC2-CC6.1ISO-A.5.14SBS-FILE-001SBS-FILE-002SBS-FILE-003HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
MEDIUM 8 sensitive object(s) have no field history tracking (investigation gap): SBS-DATA-004 Data Security ›

SBS-DATA-004 requires field history tracking on sensitive objects to capture who changed what data and when, enabling post-incident investigation and audit evidence. The following objects have no tracked fields: Account, Contact, Lead, Opportunity, Case, Contract, Quote, User.

Remediation

Enable field history tracking on each listed object in Setup → Object Manager → [Object] → Fields & Relationships → Set History Tracking. At minimum track key sensitive fields: email addresses, phone numbers, revenue fields, owner changes, and status changes.

Affected items (8)
ItemSetup LinkNotes
AccountOpen ↗No fields have history tracking enabled: configure via Object Manager → Set History Tracking
ContactOpen ↗No fields have history tracking enabled: configure via Object Manager → Set History Tracking
LeadOpen ↗No fields have history tracking enabled: configure via Object Manager → Set History Tracking
OpportunityOpen ↗No fields have history tracking enabled: configure via Object Manager → Set History Tracking
CaseOpen ↗No fields have history tracking enabled: configure via Object Manager → Set History Tracking
ContractOpen ↗No fields have history tracking enabled: configure via Object Manager → Set History Tracking
QuoteOpen ↗No fields have history tracking enabled: configure via Object Manager → Set History Tracking
UserOpen ↗No fields have history tracking enabled: configure via Object Manager → Set History Tracking
OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-DATA-004HISO-DATAPRIVACY-IPP5HIPAA-164.308(a)(1)(ii)(A)HIPAA-164.312(c)(1)GDPR-Art30GDPR-Art5(1)(f)
HIGH 7 of 7 key object(s) have no data classification: SBS-DATA-001/002 Data Security ›

SBS-DATA-001 requires all data to be classified by sensitivity and SBS-DATA-002 requires PII to be identified. 7 key object(s) have no fields with a Compliance Group set: Account, Contact, Lead, Opportunity, Case, Contract, User.

Remediation

Enable and configure the Salesforce Data Classification feature in Setup → Data Management → Data Classification. Assign compliance groups (PII, PCI, HIPAA, GDPR, etc.) to sensitive fields on all objects that store personal or regulated data. Prioritise email, phone, address, financial, and health-related fields.

Affected items (7)
ItemSetup LinkNotes
AccountOpen ↗No fields classified: configure Compliance Group via Data Classification in Setup
ContactOpen ↗No fields classified: configure Compliance Group via Data Classification in Setup
LeadOpen ↗No fields classified: configure Compliance Group via Data Classification in Setup
OpportunityOpen ↗No fields classified: configure Compliance Group via Data Classification in Setup
CaseOpen ↗No fields classified: configure Compliance Group via Data Classification in Setup
ContractOpen ↗No fields classified: configure Compliance Group via Data Classification in Setup
UserOpen ↗No fields classified: configure Compliance Group via Data Classification in Setup
OWASP-A01SOC2-CC6.1ISO-A.5.12SBS-DATA-001SBS-DATA-002HISO-DATAPRIVACY-IPP5HIPAA-164.308(a)(1)(ii)(A)HIPAA-164.312(c)(1)GDPR-Art30GDPR-Art5(1)(f)
MEDIUM Shield Platform Encryption not detected: SBS-DATA-003 Data Security ›

SBS-DATA-003 requires data at rest to be encrypted in line with its assigned classification. No Shield Platform Encryption keys were found, indicating either Shield is not licensed or encryption has not been configured for this org.

Remediation

Evaluate Salesforce Shield Platform Encryption for fields classified as sensitive or PII. If Shield is not available in your edition, document the compensating control (e.g., Classic Encryption for specific fields, or infrastructure-level disk encryption), and assess whether it meets the intent of SBS-DATA-003.

OWASP-A01SOC2-CC6.1ISO-A.5.12SBS-DATA-001SBS-DATA-002HISO-DATAPRIVACY-IPP5HIPAA-164.308(a)(1)(ii)(A)HIPAA-164.312(c)(1)GDPR-Art30GDPR-Art5(1)(f)
HIGH 1 certificate(s) expire within 30 days Authentication ›

Expired certificates break all integrations, SSO logins, and JWT-based authentication that depend on them. Certificates expiring within 30 days require immediate replacement to avoid service disruption.

Remediation

Renew or replace expiring certificates immediately. Update all integrations and connected apps that reference these certificates. Test authentication flows after replacement.

Affected items (1)
ItemSetup LinkNotes
SSO SigningOpen ↗12 day(s) until expiry: expires 2026-11-02
OWASP-A02SOC2-CC6.7ISO-A.8.24HISO-CRYPTONZISM-CRYPTOPRIVACY-IPP5HIPAA-164.312(a)(2)(iv)GDPR-Art32(1)(a)GDPR-Art5(1)(f)
INFO No installed packages found App Security ›

No InstalledSubscriberPackage records were found. This org does not have any AppExchange or custom packages installed.

Remediation

No action required. Monitor for new package installations as part of your change management process.

OWASP-A06OWASP-A08SOC2-CC9.2ISO-A.8.25HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
✓ PASS No trusted IP ranges configured: MFA applies to all login locations Authentication ›

No NetworkAccess (trusted IP range) records are configured. All users are subject to MFA and login challenge enforcement regardless of their network location.

Remediation

Continue to avoid configuring trusted IP ranges unless there is a documented, justified business requirement with compensating controls.

OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-AUTH-003HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS No anonymous Apex execution detected in the last 90 days Code Security ›

No SetupAuditTrail entries matching anonymous Apex execution patterns were found in the last 90 days. This indicates the Developer Console and anonymous Apex execution have not been used recently in production.

Remediation

Continue monitoring. If anonymous Apex execution is ever required, ensure it is pre-approved, logged, and reviewed.

OWASP-A09SOC2-CC7.2ISO-A.8.15HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33
✓ PASS No active debug log traces found Security Controls ›

No active TraceFlag records were found. No users or classes are currently being traced, so no sensitive data is being captured in debug logs.

Remediation

Continue monitoring. Remove debug traces promptly after troubleshooting sessions complete.

OWASP-A09SOC2-CC7.2ISO-A.8.15HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33
INFO My Domain configured: acme Authentication ›

The org has a custom My Domain (acme) configured, which is a prerequisite for SSO enforcement and Enhanced Domains.

Remediation

Verify the login policy in Setup → My Domain prevents login from login.salesforce.com.

OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-AUTH-001HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
HIGH My Domain allows username-password login: SSO not enforced Authentication ›

The AuthConfig for this org allows users to log in with Salesforce username and password, meaning SSO via your identity provider is not the only authentication path. Users can bypass SSO (and its MFA, conditional access, and session controls) by using direct credentials. Affected authentication configuration(s): Acme_Login.

Remediation

In Setup → My Domain → Authentication Configuration, disable "Login Page" (Salesforce credentials) as an authentication option. Ensure SAML/SSO is the only allowed method. Also enable "Prevent Login from login.salesforce.com" in My Domain settings.

Affected items (1)
ItemSetup LinkNotes
Acme_LoginOpen ↗AuthOptionsUsernamePassword = true: disable password login to enforce SSO
OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-AUTH-001HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS No connected apps found: session policy check not applicable Authentication ›

No connected apps are configured in this org.

Remediation

Continue monitoring as connected apps are added.

OWASP-A07SOC2-CC6.1ISO-A.8.3HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
? INCONCLUSIVE Organization settings could not be read Authentication ›

The Organization object query returned no results.

Remediation

Verify the audit user has read access to the Organization object.

OWASP-A05SOC2-CC6.1ISO-A.8.26HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS No active internal standard users found Authentication ›

No active, unfrozen standard users were found in this org. MFA enforcement verification is not applicable.

Remediation

No action required.

OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-AUTH-004HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS All Salesforce release updates are enabled Platform Hygiene ›

No pending release updates were found. The org is current with all platform changes Salesforce has made available.

Remediation

After each Salesforce release (3× per year), review Release Updates in Setup to enable new updates promptly.

OWASP-A06SOC2-CC7.1ISO-A.8.8HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
✓ PASS All custom Apex classes are compiled on API v50+ (Winter '21 or later) Platform Hygiene ›

No custom Apex classes with API versions older than the baseline threshold were found. Modern API versions ensure classes benefit from current platform security behaviors and FLS enforcement.

Remediation

When developing new Apex classes, target the current API version. Periodically update old classes and regression-test to stay current.

OWASP-A06SOC2-CC6.6ISO-A.8.8HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
INFO Inbound SOAP API usage: manual review required via Event Monitoring Platform Hygiene ›

Salesforce does not expose inbound SOAP API call details in SOQL-queryable objects. They are captured only in EventLogFile with EventType = "API". The API_TYPE column in those log files distinguishes SOAP callers: "E" = Enterprise WSDL, "P" = Partner WSDL. LoginHistory cannot make this distinction; SOAP login() calls and UI logins both appear as LoginType = "Application". If external systems are calling this org via the Enterprise or Partner WSDL, those callers should be migrated to REST API or connected-app-governed OAuth flows.

Remediation

In Setup → Event Monitoring, download an API event log and filter on API_TYPE = "E" or "P" to identify active SOAP callers. For each SOAP caller, work with the integration owner to migrate to REST API using a connected app with appropriate OAuth scopes and IP restrictions.

OWASP-A06SOC2-CC6.6ISO-A.8.8HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
✓ PASS No connected apps found App Security ›

No connected apps exist in this org.

Remediation

Continue monitoring as new connected apps are added.

OWASP-A01OWASP-A05SOC2-CC6.6ISO-A.8.3SBS-OAUTH-002HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)
HIGH No Transaction Security Policies are enabled Threat Detection ›

Transaction Security Policies provide automated, real-time threat detection and response within Salesforce. With no policies enabled, the org has no automated defence against: credential stuffing and brute-force attacks, impossible-travel logins (e.g. login from two countries within minutes), bulk data downloads and mass API queries, concurrent session anomalies, and privilege escalation attempts. An attacker who compromises any credential can operate without triggering any automated response.

Remediation

Enable Transaction Security (Setup → Transaction Security Policies) and create policies for at minimum: (1) Login anomalies: impossible travel, concurrent sessions from different IPs; (2) Data export: block or notify on bulk Report/List View exports; (3) API anomalies: high-volume REST/SOAP queries. Recommended actions: Block + Notify for critical events; Notify for informational events.

Affected items (1)
ItemSetup LinkNotes
Transaction Security PoliciesOpen ↗No policies enabled: real-time threat response is completely absent
OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-MON-003HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33HIPAA-164.308(a)(6)
✓ PASS 37 failed login(s) in 7 days: no brute-force patterns detected Threat Detection ›

37 failed login attempts recorded in the last 7 days, but no single account exceeded the brute-force threshold (20 failures). This volume appears consistent with normal user error.

Remediation

Continue monitoring. Configure Transaction Security Policies to alert on anomalous login activity as volumes change.

OWASP-A07SOC2-CC7.2ISO-A.8.15SBS-MON-003HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)HIPAA-164.308(a)(5)(ii)(C)
HIGH 1 live Experience Cloud site(s) allow self-registration Access Control ›

Self-registration allows anyone on the internet to create a portal account. Attackers exploit this to: (1) enumerate valid email addresses already registered; (2) create portal accounts to access any data exposed to authenticated portal users via OWD, sharing rules, or misconfigured permissions; (3) pivot from a portal user account to exploit object-level permission misconfigurations. If OWD for sensitive objects is set to Public Read or wider for external users, self-registration gives attackers direct data access without any approval step.

Remediation

Disable self-registration unless explicitly required (Setup → Digital Experiences → <site> → Administration → Registration). If required, implement email domain allow-listing, CAPTCHA, and manual approval workflows. Immediately audit external OWD settings and guest user permissions for sites with self-registration enabled.

Affected items (1)
ItemSetup LinkNotes
Customer PortalOpen ↗Self-registration enabled, SelfRegProfileId: 00exx0000000000901
OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-003HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
MEDIUM 1 live Experience Cloud site(s) have guest (unauthenticated) access enabled Access Control ›

Sites with an active Guest User allow unauthenticated visitors to access the site without creating an account. Any Salesforce objects or records accessible to the Guest User profile are exposed to the entire internet. Misconfigurations in guest user object permissions or OWD external settings result in public data exposure.

Remediation

Review guest user object permissions for each site (Setup → Profiles → <Guest Profile> → Object Settings). Ensure external OWD is Private for all sensitive objects. Run the Guest User Access check for detailed permission findings.

Affected items (1)
ItemSetup LinkNotes
Customer PortalOpen ↗Guest access enabled: verify Guest Profile permissions
OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-003HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No custom labels found in org namespace Secrets Management ›

No custom labels were found in the org namespace.

Remediation

Continue using Named Credentials and Custom Metadata (protected) for secrets storage.

OWASP-A02SOC2-CC6.7ISO-A.8.3HISO-CRYPTONZISM-CRYPTOPRIVACY-IPP5HIPAA-164.312(a)(2)(iv)GDPR-Art32(1)(a)GDPR-Art5(1)(f)
✓ PASS No Report folders have Public access Data Access Control ›

All Report folders are restricted to specific users, roles, or groups. No folder exposes reports to all authenticated users.

Remediation

Continue reviewing report folder permissions as new reports and folders are created. Ensure sensitive reports are in Private or Shared folders with explicit access grants.

OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
HIGH 1 escalation-permission grant(s) across active users Permissions ›

These permissions let a user create accounts, reset passwords, assign permission sets, modify metadata, or register auth providers: the primitives an attacker uses for lateral movement and persistence after an initial foothold. 4 super-admin(s) also hold them and are rated in the super-admin finding instead.

Remediation

Remove these permissions from non-administrator profiles/permission sets and document who legitimately needs each one.

Affected items (1)
ItemSetup LinkNotes
emery@acme.example: Assign Permission SetsOpen ↗Review and remove if not essential
OWASP-A01SOC2-CC6.3ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No CORS allowlist entries configured External Connectivity ›

No cross-origin allowlist entries exist, so browser-based cross-origin token theft via CORS is not a concern.

Remediation

If CORS entries are added later, allow only exact, fully-qualified HTTPS origins.

OWASP-A05SOC2-CC6.6ISO-A.8.26HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)
✓ PASS No active inbound email services External Connectivity ›

No inbound email service is active, so no Apex runs on receipt of email.

Remediation

If one is added, require authentication and restrict accepted senders.

OWASP-A05SOC2-CC6.6ISO-A.5.14HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)HIPAA-164.312(e)(2)(ii)
✓ PASS No workflow outbound messages configured External Connectivity ›

No outbound messages are defined, so there is no automated POST of org data to external endpoints to review.

Remediation

If outbound messages are added later, use HTTPS endpoints and avoid including the session ID.

OWASP-A05OWASP-A10SOC2-CC6.6ISO-A.8.26HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)HIPAA-164.312(e)(2)(ii)
✓ PASS No externally available Documents found File Security ›

No Document is marked "Externally Available Image", so none are retrievable without authentication.

Remediation

Continue to keep Documents private unless anonymous access is explicitly required.

OWASP-A01SOC2-CC6.1ISO-A.5.14HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No static resources use Public cache control File Security ›

All static resources use Private cache control or none exist.

Remediation

Continue to keep static resources Private unless public delivery is required.

OWASP-A01SOC2-CC6.1ISO-A.5.14HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
CRITICAL 2 object(s) fully readable by unauthenticated guests (public external OWD) Access Control ›

These objects have an external org-wide default of Read or ReadWrite, are readable by the guest profile, and are modelled by the UI API, so every record is reachable by any unauthenticated visitor who can enumerate counts and page through records in bulk. Reachable unauthenticated via the Experience Cloud UI API (GraphQL) through aura://RecordUiController/ACTION$executeGraphQL on /s/sfsites/aura (aura.token=null).

Remediation

Set external OWD to Private for these objects, and remove Read from the guest profile/permission sets unless a specific public dataset is intended. Then verify no guest-accessible Apex returns the data.

Affected items (2)
ItemSetup LinkNotes
Case (external OWD: Read, guest WRITE too)Open ↗UI-API-modelled (GraphQL-reachable); no sample record available to confirm read
Knowledge__kav (external OWD: Read)Open ↗UI-API-modelled (GraphQL-reachable); no sample record available to confirm read
OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-CPORTAL-002HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
HIGH 1 site(s) allow guest users to access files Access Control ›

Guest file access lets unauthenticated visitors read public files (ContentVersion/ContentDocument/Attachment). Combined with the UI API, file IDs can be enumerated and content downloaded via the file servlet (/sfc/servlet.shepherd/version/download).

Remediation

Disable guest file access (Network setting "Let guest users access public files") unless a specific public file library is intended.

Affected items (1)
ItemSetup LinkNotes
Customer PortalOpen ↗Status: Live; guest file access enabled
OWASP-A01SOC2-CC6.1ISO-A.5.14SBS-CPORTAL-003HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
MEDIUM 1 site(s) let guest users see other members Access Control ›

Guest member visibility exposes other site members (User records, names, profile data) to unauthenticated visitors, leaking member identities and enabling enumeration.

Remediation

Disable "Let guest users see other members of this site" unless member directories must be public.

Affected items (1)
ItemSetup LinkNotes
Customer PortalOpen ↗Status: Live; guest member visibility enabled
OWASP-A01SOC2-CC6.1ISO-A.5.14SBS-CPORTAL-003HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
LOW Confirm guest record-access guardrails manually (1 active guest user(s)) Access Control ›

The "Secure guest user record access" Release Update is no longer exposed via the API (usually because it was auto-activated in an earlier Salesforce release). Enforcement is therefore assumed but not API-verifiable. The two settings that jointly close the guest-ownership-defeats-OWD vector cannot be read programmatically.

Remediation

In Setup → Sharing Settings, confirm "Secure guest user record access" is on and "Assign new records created by guest users to the default owner" is enabled. Then confirm no guest user OWNS records (see the guest-object-exposure finding) and that guest access is granted only via minimal guest user sharing rules.

Affected items (1)
ItemSetup LinkNotes
Sharing SettingsOpen ↗Manual verification required
OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-CPORTAL-002HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
MEDIUM Threat Detection stores are present but contain no events Monitoring ›

The Threat Detection anomaly stores are queryable but hold no events in the last 180 days. Storage may have been enabled only recently, or detection is not generating events. Until events accumulate, "no anomalies" is not evidence of safe behaviour, and historical anomalous guest access cannot be reconstructed.

Remediation

Confirm storage is enabled for the anomaly events (Setup > Event Manager) and has been for the full retention window. Verify Transaction Security / Threat Detection policies are active and alerting.

Affected items (1)
ItemSetup Link
Event ManagerOpen ↗
OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-MON-001HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33HIPAA-164.308(a)(6)
✓ PASS No delegated administration groups configured Access Control ›

No DelegateGroup records exist, so there is no delegated-admin escalation surface.

Remediation

If delegated administration is introduced, scope each group minimally and review assignable permission sets.

OWASP-A01SOC2-CC6.3ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
INFO Verify the "Administrators Can Log In as Any User" policy manually Access Control ›

When "Administrators Can Log In as Any User" is enabled (Setup → Login Access Policies), any administrator can impersonate any user and access all of their data with no per-session consent. This run could not read SecuritySettings, so the policy must be confirmed manually.

Remediation

In Setup → Login Access Policies, disable "Administrators Can Log In as Any User" unless there is a documented support need, and require users to grant time-boxed login access instead.

Affected items (1)
ItemSetup Link
Login Access PoliciesOpen ↗
OWASP-A01SOC2-CC6.3ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No broad mass-export capability found Data Access Control ›

No profiles/permission sets grant Weekly Data Export, nor API access combined with View/Modify All Data.

Remediation

Keep Weekly Data Export and View/Modify-All limited to trusted admins, and prefer scoped integration users for extracts.

OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No active classic Force.com sites Access Control ›

No active Visualforce Force.com Sites were found, so there is no classic unauthenticated site surface.

Remediation

If a classic site is activated later, review its guest user profile before it goes live.

OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-003HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No external Auth Providers or SAML SSO configured Authentication ›

No AuthProvider or SamlSsoConfig records exist, so there is no external federation surface to review.

Remediation

If external identity is added later, restrict just-in-time provisioning to least-privilege profiles and validate the IdP certificate.

OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-AUTH-001HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS 1 guest user(s); no API or Bulk API access Access Control ›

No active guest user has "API Enabled" or "Bulk API Hard Delete", so guests cannot drive the raw API.

Remediation

Keep API and Bulk permissions off guest profiles as sites change.

OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-CPORTAL-002HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
HIGH 2 guest permission grant(s) give Read access to the User object Access Control ›

A guest permission set or profile grants Read on the User object. Object-level read is what makes User queryable at all for a guest; combined with any sharing path that exposes records — a public external OWD, a user sharing rule, or guest member visibility on an Experience site — it turns the User table into an enumerable directory reachable over the UI API.

Remediation

Remove Read on the User object from guest profiles and guest permission sets. Where site components must show a name, expose it through Apex that returns only the specific fields required.

Affected items (2)
ItemSetup LinkNotes
0PSxx0000000G01AAAOpen ↗Read on User granted: remove from guest permissions
0PSxx0000000G01AAAOpen ↗Read on User granted: remove from guest permissions
OWASP-A01SOC2-CC6.1ISO-A.5.18SBS-CPORTAL-002HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No External Credentials configured External Connectivity ›

No ExternalCredential records exist, so there is no external-credential authentication surface to grade.

Remediation

When adding External Credentials, prefer OAuth/JWT or AWS SigV4 over custom or no-authentication schemes.

OWASP-A02SOC2-CC6.7ISO-A.8.3SBS-INT-003HISO-CRYPTONZISM-CRYPTOPRIVACY-IPP5HIPAA-164.312(a)(2)(iv)GDPR-Art32(1)(a)GDPR-Art5(1)(f)
✓ PASS No successful logins in the last 7 days Threat Detection ›

LoginHistory returned no successful logins in the window, so no login-distribution anomaly could be computed.

Remediation

Re-run after normal activity; forward LoginHistory to a SIEM for continuous anomaly detection.

OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-MON-003HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33HIPAA-164.308(a)(5)(ii)(C)
MEDIUM 1 session/clickjack/CSRF setting(s) deviate from the security baseline Session Security ›

These browser-session hardening settings differ from Salesforce's recommended values. Weak framing, CSRF, session-lock, or XSS-protection settings enable clickjacking, cross-site request forgery, session hijacking, and reflected-XSS attacks against authenticated users.

Remediation

In Setup → Session Settings (and Session Security Levels), align each flagged setting to the recommended value: highest clickjack protection for all pages, CSRF protection on GET and POST, "Lock sessions to the IP address" and "to the domain", content-sniffing and XSS protection on, and warnings on redirects to external URLs.

Affected items (1)
ItemSetup Link
Timeout value = 12 hours (MEDIUM_RISK)Open ↗
OWASP-A05SOC2-CC6.1ISO-A.8.26HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)HIPAA-164.312(a)(2)(iii)
✓ PASS No fields are classified as sensitive on the key standard objects Data Security ›

No fields on Account, Contact, Lead, Opportunity, Case, Contract, User, Individual carry a ComplianceGroup (data classification), so encryption coverage cannot be assessed against a sensitivity baseline. Custom objects are not scanned. Classification is the prerequisite — see the data-classification check.

Remediation

Classify PII/PHI fields (Setup → Data Classification) first, then encrypt the sensitive ones with Shield Platform Encryption.

OWASP-A02SOC2-CC6.1ISO-A.8.24HISO-CRYPTONZISM-CRYPTOPRIVACY-IPP5HIPAA-164.312(a)(2)(iv)GDPR-Art32(1)(a)GDPR-Art5(1)(f)
INFO Verify Strict CSP + Lightning Web Security on 1 live Experience Cloud site(s) Access Control ›

The per-site Content Security Policy level and Lightning Web Security toggle are not reliably exposed to the API, so they must be confirmed manually. A "Relaxed CSP" level or disabled Lightning Web Security lets inline/third-party scripts run on pages an unauthenticated guest can reach, widening the XSS and script-injection surface.

Remediation

For each site: Setup → Digital Experiences → (site) → Administration → Security & Privacy — set the CSP level to "Strict CSP" and enable Lightning Web Security. Review any Trusted Sites/URLs added to relax CSP.

Affected items (1)
ItemSetup Link
Customer PortalOpen ↗
OWASP-A05SOC2-CC6.6ISO-A.8.26HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)HIPAA-164.312(e)(2)(ii)
✓ PASS Not a sandbox — data masking not applicable Data Security ›

This org is a production org, so sandbox data-masking does not apply here.

Remediation

Apply Data Mask to sandboxes seeded from this production org so PII/PHI is not copied in the clear.

OWASP-A01SOC2-CC6.1ISO-A.5.12HISO-DATAPRIVACY-IPP5HIPAA-164.308(a)(1)(ii)(A)HIPAA-164.312(c)(1)GDPR-Art30GDPR-Art5(1)(f)GDPR-Art32(1)(a)GDPR-Art25
CRITICAL 1 user(s) hold admin-equivalent access without the System Administrator profile Permissions ›

These active users have accumulated effective permissions equivalent to a System Administrator (either "Modify All Data" directly, or "Manage Users" combined with "Assign Permission Sets", which lets them grant themselves anything) but sit on a different profile. Such "shadow admins" are easy to miss in profile-based reviews, yet a takeover of any one grants full org control. The access is reached via the user's profile, assigned permission sets, or permission set groups combined.

Remediation

Review each user's permission sets and profile. Remove "Modify All Data" / the Manage Users + Assign Permission Sets pairing unless the role genuinely requires org administration, and consolidate true admins onto a controlled admin profile.

Affected items (1)
ItemSetup LinkNotes
gray@acme.exampleOpen ↗Profile: Custom: Integration, effective: ModifyAllData, ViewAllData
OWASP-A01SOC2-CC6.3ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
INFO 6 active user(s) hold at least one high-risk permission Permissions ›

Inventory of active users whose effective permissions include one or more catalogued high-risk permissions. Use this as the privileged-access baseline for least-privilege review.

Remediation

Periodically confirm each privileged user still requires their high-risk permissions; remove any that are no longer needed.

Affected items (6)
ItemSetup LinkNotes
avery@acme.exampleOpen ↗Profile: System Administrator, 6 high-risk perm(s): ModifyAllData, ManageUsers, ViewAllData, AuthorApex, CustomizeApplication, ManageInternalUsers
blake@acme.exampleOpen ↗Profile: System Administrator, 6 high-risk perm(s): ModifyAllData, ManageUsers, ViewAllData, AuthorApex, CustomizeApplication, ManageInternalUsers
casey@acme.exampleOpen ↗Profile: System Administrator, 6 high-risk perm(s): ModifyAllData, ManageUsers, ViewAllData, AuthorApex, CustomizeApplication, ManageInternalUsers
devon@acme.exampleOpen ↗Profile: System Administrator, 6 high-risk perm(s): ModifyAllData, ManageUsers, ViewAllData, AuthorApex, CustomizeApplication, ManageInternalUsers
gray@acme.exampleOpen ↗Profile: Custom: Integration, 2 high-risk perm(s): ModifyAllData, ViewAllData
emery@acme.exampleOpen ↗Profile: Custom: Support Lead, 1 high-risk perm(s): AssignPermissionSets
OWASP-A01SOC2-CC6.3ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No active GenAI Prompt Templates found in the org AI & Agents ›

Zero GenAiPromptTemplate records were returned.

Remediation

Review grounding sources whenever new Prompt Templates are created.

OWASP-A01SOC2-CC6.1ISO-A.8.3LLM02LLM06HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art25GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS No Data Cloud Data Spaces found Data Security ›

Zero DataSpace records exist in this org.

Remediation

Define segmented Data Spaces if Data Cloud is activated in the future.

OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No active triggers on custom Platform Events identified Code Security ›

Zero active Apex triggers subscribe to custom Platform Event objects (__e).

Remediation

When subscribing to Platform Events, ensure publish permissions are strictly scoped to internal authorized actors.

OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS Declarative Flow HTTP Callouts use proper Named Credentials without embedded secrets Integration Security ›

External services and declarative flows were inspected; no hardcoded API keys or uncredentialed external service endpoints detected.

Remediation

Continue utilizing Named Credentials and External Credentials for all declarative HTTP integrations.

OWASP-A02OWASP-A10SOC2-CC6.7ISO-A.8.3HISO-DEVNZISM-SWHIPAA-164.312(c)(1)GDPR-Art25GDPR-Art32(1)(b)
INFO Verify the OAuth Device Flow and Username-Password Flow setting manually Identity & Access ›

This run could not read the Device Flow and Username-Password Flow setting from OAuth and OpenID Connect Settings, so whether it is enabled is unknown. Both flows let a token be issued outside the browser sign-in, bypassing MFA and conditional access.

Remediation

In Setup → OAuth and OpenID Connect Settings, confirm "Allow OAuth Device Flow" and "Allow OAuth Username-Password Flows" are off unless a documented integration needs them.

Affected items (1)
ItemSetup Link
OAuth and OpenID Connect SettingsOpen ↗
OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-OAUTH-001HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
INFO Verify Delegated Authentication settings manually Identity & Access ›

This run could not read SecuritySettings, so whether Delegated Authentication is enabled is unknown. 0 administrator profile(s) hold "Is Single Sign-On Enabled", which routes their sign-in through the delegated gateway if it is on.

Remediation

In Setup → Single Sign-On Settings, check whether Delegated Authentication is enabled. If it is, the gateway must be HTTPS with mutual TLS, and administrator profiles should not hold "Is Single Sign-On Enabled".

Affected items (1)
ItemSetup Link
Single Sign-On SettingsOpen ↗
OWASP-A07SOC2-CC6.1ISO-A.8.3SBS-AUTH-001HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS No Delegated Administration Groups found Privileged Access ›

Zero DelegateGroup records are configured in this org.

Remediation

Continue avoiding unmonitored delegated administration groups.

OWASP-A01SOC2-CC6.3ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No Auth Providers configured with Registration Handlers Identity & Access ›

Zero AuthProvider records in this org configure an automated Registration Handler.

Remediation

When configuring Registration Handlers, avoid execution as System Administrator and verify email authenticity.

OWASP-A01OWASP-A07SOC2-CC6.1ISO-A.8.3HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS No active inbound Email-to-Apex services found External Connectivity ›

Zero active EmailServicesFunction records exist in the org.

Remediation

When creating inbound email services, enforce sender restrictions and SPF/DKIM verification.

OWASP-A01OWASP-A05SOC2-CC6.6ISO-A.5.14HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)
MEDIUM Zero active DKIM keys configured for outbound Salesforce email External Connectivity ›

Outbound emails sent from Salesforce without DKIM signatures are vulnerable to domain spoofing, recipient rejection, or landing in junk folders. Active DKIM keys ensure cryptographic origin authentication for all outbound Salesforce messages.

Remediation

Generate and activate DKIM keys in Setup → DKIM Keys for all corporate sending domains used by Salesforce.

Affected items (1)
ItemSetup LinkNotes
DKIM Keys ConfigurationOpen ↗No active DKIM keys found in org
OWASP-A05SOC2-CC6.6ISO-A.5.14HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)
✓ PASS No Partner Super Users or External Account Hierarchies widening portal visibility External-Facing Access ›

External portal users are constrained to their own account boundaries without hierarchical over-sharing.

Remediation

Maintain standard Private external OWD and avoid unreviewed Super User grants.

OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-003HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No Restriction Rules configured Data Security ›

Zero RestrictionRule records configured across standard and custom objects.

Remediation

When deploying Restriction Rules, ensure they remain active and avoid multiple conflicting rules on the same entity.

OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No installed subscriber packages found in org Platform Hygiene ›

Zero InstalledSubscriberPackage records were identified.

Remediation

Continue inventorying new packages when installed.

OWASP-A06OWASP-A08SOC2-CC9.2ISO-A.8.25HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
✓ PASS No active Shield TenantSecret keys generated Data Security ›

Zero TenantSecret records were returned.

Remediation

Generate tenant encryption secrets if Shield Platform Encryption is enabled.

OWASP-A02SOC2-CC6.1ISO-A.8.24HISO-CRYPTONZISM-CRYPTOPRIVACY-IPP5HIPAA-164.312(a)(2)(iv)GDPR-Art32(1)(a)GDPR-Art5(1)(f)
MEDIUM 3 distinct user(s) performed deployment actions in the last 90 days: SBS-DEP-001 Deployments ›

SBS-DEP-001 requires all deployments to be performed by a single designated deployment identity, not individual user accounts. 3 distinct users were found in deployment-related audit trail entries (Change Sets, Developer Tools, Packages, Metadata) over the past 90 days. Multiple deployers make it harder to audit changes and bypass change-management controls.

Remediation

Centralise deployments through a CI/CD pipeline that authenticates as a single named service account. Revoke direct deployment access from individual admin users.

Affected items (3)
ItemSetup LinkNotes
avery@acme.exampleOpen ↗2 deployment action(s) | last: 2026-10-18 | profile: System Administrator
blake@acme.exampleOpen ↗2 deployment action(s) | last: 2026-10-09 | profile: System Administrator
casey@acme.exampleOpen ↗1 deployment action(s) | last: 2026-09-30 | profile: System Administrator
OWASP-A05OWASP-A08SOC2-CC8.1ISO-A.8.32SBS-DEP-001SBS-DEP-003HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
MEDIUM 3 deployer(s) are admin-profile users: SBS-DEP-003 Deployments ›

SBS-DEP-003 requires monitoring for unauthorized deployment modifications. Deployments performed by administrator-profile users are harder to distinguish from emergency break-glass changes and are more likely to occur outside of a change-management window.

Remediation

Replace admin-user deployments with a CI/CD pipeline using a dedicated integration user with only deployment-required permissions. Reserve individual admin accounts for emergency use only, and document any emergency deployments in the system of record.

Affected items (3)
ItemSetup LinkNotes
avery@acme.exampleOpen ↗2 deployment action(s) | profile: System Administrator | replace with dedicated deployment service account
blake@acme.exampleOpen ↗2 deployment action(s) | profile: System Administrator | replace with dedicated deployment service account
casey@acme.exampleOpen ↗1 deployment action(s) | profile: System Administrator | replace with dedicated deployment service account
OWASP-A05OWASP-A08SOC2-CC8.1ISO-A.8.32SBS-DEP-001SBS-DEP-003HISO-GOVNZISM-CONFIGHIPAA-164.308(a)(1)(ii)(B)HIPAA-164.308(a)(8)GDPR-Art32(1)(d)
✓ PASS No System.debug-only logging or sensitive-data logging patterns found: SBS-CODE-003/004 Code Security ›

SBS-CODE-003 requires a persistent logging framework and SBS-CODE-004 prohibits sensitive data in logs. No violations were detected in the scanned Apex classes.

Remediation

Continue monitoring as new Apex classes are added to the org.

OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-CODE-003SBS-CODE-004HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33
✓ PASS No connected apps to check for inactivity App Security ›

No connected apps were found in the org. No inactivity check is needed.

Remediation

Continue monitoring as new connected apps are added.

OWASP-A05SOC2-CC6.6ISO-A.5.18HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)
✓ PASS No standing OAuth tokens found App Security ›

No rows were returned from OauthToken, so no app currently holds a standing OAuth authorisation in this org.

Remediation

Re-check after authorising any new integration.

OWASP-A05SOC2-CC6.6ISO-A.5.18HISO-COMMNZISM-NETPRIVACY-IPP12HIPAA-164.312(e)(1)GDPR-Art44GDPR-Art32(1)(b)
HIGH 1 Apex class(es) run "without sharing" and perform DML/SOQL without CRUD/FLS checks Code Security ›

Apex classes declared "without sharing" bypass record-level visibility AND have no field-level or object-level permission checks, meaning any user who triggers the code can read or write any record and field regardless of their assigned permissions. This is the most exploited Salesforce access control vulnerability. OWASP Salesforce Top 10 ranks CRUD/FLS bypass as the #1 risk.

Remediation

Refactor to use "with sharing" where possible. Add `Security.stripInaccessible()` before DML and `Schema.SObjectType.[Object].fields.[Field].isAccessible()` before displaying fields. Where "without sharing" is required for a technical reason, document the justification and tighten the scope.

Affected items (1)
ItemSetup LinkNotes
PortalCaseControllerOpen ↗"without sharing" + DML/SOQL + no FLS check: highest risk
OWASP-A01SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
CRITICAL 1 guest-executable Apex class(es) run without sharing, directly or through a helper Access Control ›

These Apex classes can be invoked by unauthenticated guest users AND do not enforce record-level sharing, either themselves or in a helper class they call that is declared "without sharing". This is the classic Salesforce guest-user exploit chain: an attacker calls the class and reads or writes business data in bulk with no login. Object-level guest permissions do not mitigate this: the class runs in system context.

Remediation

Add "with sharing" to every guest-reachable Apex class and to every helper it calls, enforce CRUD/FLS, and remove guest execution access from any class that does not strictly need it.

Affected items (1)
ItemSetup LinkNotes
PortalCaseControllerOpen ↗Declared "without sharing": fix immediately
OWASP-A01SOC2-CC6.1ISO-A.8.3SBS-CPORTAL-001SBS-CPORTAL-002HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No custom @RestResource Apex endpoints found Code Security ›

No Apex classes with the @RestResource annotation were found in the org namespace.

Remediation

Continue monitoring as new Apex code is developed.

OWASP-A01OWASP-A07SOC2-CC6.1ISO-A.8.3HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No custom Visualforce pages found Code Security ›

No Visualforce pages in the org namespace were found.

Remediation

Continue monitoring as new pages are added.

OWASP-A03SOC2-CC6.1ISO-A.8.25HISO-DEVNZISM-SWHIPAA-164.312(c)(1)GDPR-Art25GDPR-Art32(1)(b)
✓ PASS No Lightning Message Channels defined Code Security ›

This org defines no Lightning Message Channels, so there is no cross-component message bus to expose.

Remediation

No action required.

OWASP-A01OWASP-A03SOC2-CC6.1ISO-A.8.25HISO-DEVNZISM-SWHIPAA-164.312(c)(1)GDPR-Art25GDPR-Art32(1)(b)
HIGH No Event Monitoring log files found in the last 35 days: SBS-MON-001 Event Monitoring ›

SBS-MON-001 requires Event Monitoring storage to be enabled so that login, API access, and data export events are captured. No EventLogFile records exist for the past 35 days, indicating Event Monitoring is either not licensed or not configured.

Remediation

Enable Event Monitoring in Setup → Event Monitoring Settings. If the feature is not licensed, raise with your Salesforce account team. SBS-MON-001 compliance requires it.

Affected items (1)
ItemSetup LinkNotes
Event Monitoring SetupOpen ↗Enable event log storage
OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-MON-001SBS-INT-004HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33
✓ PASS No guest event logs in the retention window Threat Detection ›

Event Monitoring is enabled but produced no EventLogFile blobs in the retention window. Stream logs to a SIEM for durable coverage.

Remediation

Enable Event Monitoring and forward guest event logs to a SIEM so this analysis has a durable window.

Affected items (1)
ItemSetup Link
Event MonitoringOpen ↗
OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-MON-003HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33HIPAA-164.308(a)(6)
✓ PASS All 0 active standard user(s) have registered at least one MFA method Authentication ›

All 0 active, unfrozen standard users have at least one MFA method registered in TwoFactorInfo. Users who have not registered a method cannot complete MFA challenges and may be locked out of the org if MFA is enforced.

Remediation

Continue monitoring MFA registration as new users are onboarded. Ensure new user onboarding includes an MFA registration step before their first login.

OWASP-A07SOC2-CC6.1ISO-A.8.3HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
HIGH No SIEM or external monitoring integration detected: SBS-MON-003/004 Event Monitoring ›

SBS-MON-003 requires suspicious login activity to be monitored and alerted on. SBS-MON-004 requires API activity anomalies to be detected. No signals of an external monitoring or SIEM integration were found across Named Credentials, Remote Sites, Connected Apps, or Scheduled Apex jobs. Without external log forwarding, Event Monitoring data remains unanalysed and no automated alerts can be generated.

Remediation

Integrate Salesforce Event Monitoring with a SIEM platform (Splunk, Datadog, Sumo Logic, Microsoft Sentinel, etc.) using the EventLogFile API or Salesforce Shield Event Streaming. Configure alerts for: repeated failed logins, off-hours API access, bulk data export events, and unusual login geolocations (SBS-MON-003). Enable API usage anomaly detection (SBS-MON-004).

OWASP-A09SOC2-CC7.2ISO-A.8.15SBS-MON-003SBS-MON-004HISO-LOGNZISM-LOGHIPAA-164.312(b)HIPAA-164.308(a)(1)(ii)(D)GDPR-Art32(1)(b)GDPR-Art33
✓ PASS No registered MFA methods to grade Authentication ›

No active internal user has a registered MFA method, so there is no method strength to assess. Missing registration itself is reported by the MFA registration check.

Remediation

None for method strength. Address MFA registration coverage first.

OWASP-A07SOC2-CC6.1ISO-A.8.3HISO-AUTHNZISM-AUTHPRIVACY-IPP5HIPAA-164.312(d)GDPR-Art5(1)(f)GDPR-Art32(1)(b)
✓ PASS No toxic permission combinations detected Permissions ›

Only super-admins hold flagged combinations; they already have unrestricted control and are rated in the super-admin finding (users-super-admin-combo). No other active user holds a flagged combination.

Remediation

Continue to separate user administration, code authorship, identity, and data-access duties across roles.

OWASP-A01SOC2-CC6.3ISO-A.5.18SBS-ACS-004HISO-ACNZISM-ACPRIVACY-IPP5HIPAA-164.312(a)(1)HIPAA-164.308(a)(4)GDPR-Art5(1)(f)GDPR-Art25GDPR-Art32(1)(b)