Skip to main content

SecuritySettings and sharing

These checks cover org-level posture: Security.settings-meta.xml, org-wide defaults in *.object-meta.xml, *.sharingRules-meta.xml and <loginIpRanges> on profiles.

vulkro-sf scan ./force-app
vulkro-sf org report -o <alias> -O posture.html # live org values

Checks​

Rule IDWhat it finds
long-session-timeout<sessionTimeout> of TwelveHours or TwentyFourHours. The recommended ceiling is TwoHours.
session-not-locked-to-ip<lockSessionsToIp>false</lockSessionsToIp>: a stolen session works from any IP.
https-not-required<requireHttps>false</requireHttps>.
No forced logout on timeout<forceLogoutOnSessionTimeout>false</forceLogoutOnSessionTimeout>.
clickjack-nonsetup-user-off<enableClickjackNonsetupUser>false</enableClickjackNonsetupUser>: user pages can be framed.
csrf-on-post-off<enableCSRFOnPost>false</enableCSRFOnPost>.
no-login-attempt-limit<maxLoginAttempts>NoLimit</maxLoginAttempts>.
passwords-never-expire<expiration>Never</expiration> in password policies.
Permissive org-wide defaultAn object with <externalSharingModel>ReadWrite</externalSharingModel>. Flagged for review.
Broad sharing on sensitive objectsA criteria-based sharing rule on Account, Contact, Lead, Opportunity, Case or User with Edit or All access shared to Role, RoleAndSubordinates or Group.
loginiprange-missing-on-adminA profile with ModifyAllData or ManageUsers and no <loginIpRanges>.

These read metadata only. With a live org, vulkro-sf also retrieves the running org's SecuritySettings through your sf login, so the file does not need to be in source. A value it cannot read produces no finding.

Example​

Non-compliant (eight findings):

<SecuritySettings xmlns="http://soap.sforce.com/2006/04/metadata">
<sessionSettings>
<sessionTimeout>TwelveHours</sessionTimeout>
<lockSessionsToIp>false</lockSessionsToIp>
<requireHttps>false</requireHttps>
<forceLogoutOnSessionTimeout>false</forceLogoutOnSessionTimeout>
<enableClickjackNonsetupUser>false</enableClickjackNonsetupUser>
<enableCSRFOnPost>false</enableCSRFOnPost>
</sessionSettings>
<passwordPolicies>
<maxLoginAttempts>NoLimit</maxLoginAttempts>
<expiration>Never</expiration>
</passwordPolicies>
</SecuritySettings>

Compliant:

<SecuritySettings xmlns="http://soap.sforce.com/2006/04/metadata">
<sessionSettings>
<sessionTimeout>TwoHours</sessionTimeout>
<lockSessionsToIp>true</lockSessionsToIp>
<requireHttps>true</requireHttps>
<forceLogoutOnSessionTimeout>true</forceLogoutOnSessionTimeout>
<enableClickjackNonsetupUser>true</enableClickjackNonsetupUser>
<enableCSRFOnPost>true</enableCSRFOnPost>
</sessionSettings>
<passwordPolicies>
<minimumPasswordLength>12</minimumPasswordLength>
<maxLoginAttempts>FiveAttempts</maxLoginAttempts>
<expiration>NinetyDays</expiration>
<complexity>SpecialCharacters</complexity>
<historyRestriction>10</historyRestriction>
</passwordPolicies>
</SecuritySettings>

Metadata findings are suppressed with a fingerprint in .vulkroignore.

See also: Profiles and permission sets, Connected Apps