SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
PUBLISH YOUR PACKAGE
TO APPEXCHANGE
IN 2023
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Introduction
What is AppExchange?
New changes applicable since March 2023?
Why should I publish on AppExchange?
How do I publish package to AppExchange?
How do I prepare for Security Review?
Questions
Agenda
Speaker intro
Bohdan Dovhań
Associate Salesforce Architect at SoftServe Inc
3 Listings Published on AppExchange
#50th on Salesforce Stack Exchange
17x Salesforce Certified Specialist
12 years of Development experience
10 years of Salesforce Development experience
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Salesforce Marketplace where packages can be found
for installation or published by ISV (Independent
Software Vendors)
Package is bundled container of code and metadata
which can be published on AppExchange or shared
directly to subscribers
AppExchange
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Since March 16, 2023:
1. The $2,550 initial review fee was eliminated.
2. The $150 annual fee was eliminated.
3. The security review fee is $999 per attempt for paid apps.
4. They claim there will be no fees for Security Reviews for
free solutions while they work to redefine the policy.
March 2023 Change
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
1. Salesforce didn’t accept any new submissions between
March 1 and March 15, 2023 to ensure a smooth transition to
the new fee structure.
2. Technically now all apps (both Free and Paid) require
Security Review fee payment. To reduce it for a free app from
999$ to 1$ open a case to receive a waiver voucher
March 2023 Change
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
UI Change
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Why should you publish your package on AppExchange?
- Extended visibility of the product to potential customers
- Increased trust for the label “Security Review Passed”
- Option to create patch versions
- Option to push upgrades to customers
- Option to use LMA, FMA, Support Console
Why?
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
How?
1. Sign partnership agreement with Salesforce
2. Create a listing on Partner Community
3. Create and develop a package
4. Connect your Packaging Org or Dev Hub to Partner Community
5. Submit for Security Review and pass it
6. Update the listing and publish it
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Select Listing Type
Choose one from three options:
- Packaged Solution
- API
- Consultant
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Select Package Solution Type
Choose one from two
options:
- SF Platform Package
- B2C Commerce
Cartridge
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Select a Salesforce Platform Package Type
Choose one from four options:
- App
- Bolt Solution
- Flow Solution
- Lightning
Component
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Choose one from two languages:
- English
- Japanese
Choose Japanese?
Give it a title
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Fill in other details
Provide Brief Description
Select Required Salesforce Products (e.g. Sales Cloud)
Select Compatible Salesforce Products (can be blank)
Select Supported Salesforce Editions
Select Supported Features (LEX, SF Mobile, Person Accounts,
Multiple Currencies, SF Shield, Lightning App Builder)
Select Supported Industries
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Select Target User Persona
Select Supported Languages
Select Business Needs
Select Equality, Philantrophy badges
Fill in additional requirements
Fill in a business contact information
Continue
no Ukrainian in the list but
there is enemy’s language
My Packages are mostly
Admin&Dev Tools
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Select one of four pricing options
1. Free
2. Paid
3. Paid Add-On Required
4. Freemium
Select Pricing
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Before publishing listing, Salesforce must check that it complies
with partner brand guidelines and partner program policies by:
1. Checking information in the Basics and Price Your Solution
steps.
2. Approval process takes about 30 days.
3. It is possible to continue updating listing while it is not
approved yet
Submit for Approval
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Add SEO Title
Add Tagline
Add Full Description
Add Details
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Add Highlights
Add Terms and Conditions
Add Details
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Upload Small Logo
Upload Large Logo
Include Visuals
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Upload Large Logo
Decide if you allow marketing use
Include Visuals
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Add Screenshots
Add Videos
Include Visuals
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Add Demo Video
Add up to 15 Customer Resources
Include Visuals
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Link Solution
Select developed package – the solution
If it is not present, go to Technologies tab, open Org subtab to
connect either DevHub or Packaging Org for the package
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Connect Org
To select a package for review, connect an org first
To connect 1GMP, you need to connect Packaging Org
To connect 2GMP, you need to connect Dev Hub
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
`
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Choose Installation Method
By default, use AppExchange
Link Solution
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Trials & Marketing
Setup Trial Template to offer free trials for paid app
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Setup Lead Capturing for the following events:
1. Lead watches a demo video
2. Lead takes a test drive
3. Lead signs up for a free trial
4. Lead installs the package solution
Setup Lead Capture
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
When you click Done, you can see overall listing status
Check Listing Status
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Formal Steps
- Fill In Contact Information
- Fill In Technical Details
- Upload Documents (most important)
- Provide information for Test Environments
- Review the Summary
- Pay for Security Review
Security Review
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Use Environment Hub to create a Test/Demo org for Security Review using Trial
Template 0TT3t000004cHv2
Install released package version into created org same as submitted for review.
Create Guest Admin user with appropriate Profile which has Skip Validation in
the name
If needed, configure it for use, for example, assign correct permission set to the
Guest Admin user.
Log in as Guest Admin user and confirm that this user has correct access to the
packaged application
Security Review Test Org
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Technical Steps
- Run CheckMarx Scanner for Salesforce Package
- On Partner Portal
- On Customer Portal
- Run PMD or any other Static Analyzer Tool
- Address every findings from Checkmarx and PMD
- Prepare Solution Architecture And Usage document
- Prepare False Positives document
- if you can’t workaround some findings from Checkmarx
- if you failed Security Review
Security Review
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Common Findings
- Sharing Violation – use WITH SHARING
- Enforce CRUD/FLS: Security.stripInaccessible, WITH USER_MODE
- CSRF – do not perform DML during page load
- SOQL Injection – use escapeSingleQuotes in dynamic queries
- Sensitive Information in Debug – remove all debug logs
- Check external JS library vulnerabilities
- Remove inline CSS and fixed, absolute, or float in CSS or add them as
exceptions to False Positives document
Security Review
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Sharing Violation
Use “with sharing”, “inherited sharing” class declarations
Avoid empty sharing class declarations
Document and justify “without sharing” class declarations.
Verify CRUD and FLS on SOQL and DML
Consider using “WITH USER_MODE” and Security.stripInaccessible
methods
Consider using Custom Permissions for enabling functionality
Consider using Permission Set to combine necessary permissions
together
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
CSRF
Do not perform DML operations on page load
CSRF is an attack which forces an end user to execute unwanted
actions on a web application in which he/she is currently
authenticated. With a little help of social engineering (like sending a
link via email/chat), an attacker may force the users of a web
application to execute actions of the attacker's choosing. A
successful CSRF exploit can compromise end user data and
perform state changing actions on this data without the user’s
knowledge.
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SQL injection is a common application security flaw that results
from insecure construction of database queries with user-
supplied data. When queries are built directly with user data
inlined or concatenated directly with the query text, instead of
using type-safe bind parameters, malicious input may be able
to change the structure of the query to bypass or change
application logic. SQL injection flaws are extremely serious. A
single flaw anywhere in your application may allow an attacker
to read, modify or delete your entire database.
What is SQL Injection?
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Apex does not use SQL, but its own database query language,
SOQL. SOQL is much simpler and more limited in functionality
than SQL. With SOQL injection, you can add additional conditions
to the already existing query but cannot build a new query
altogether. Therefore, the risks are much lower for SOQL
injection than for SQL injection, but the attacks are nearly
identical to traditional SQL injection.
Use binding ”:” or escapeSingleQuotes to fix.
SOQL Injection
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Sensitive Information
Sensitive Information in Debug
Issue Description
Revealing information in debug statements can help reveal potential
attack vectors to an attacker. Debug statements can be invaluable
for diagnosing issues in the functionality of an application, but they
should not publicly disclose sensitive or overly detailed information
(this includes PII, passwords, keys, and stack traces as error
messages, among other things).
Remove all debug logs
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
CSRF
Do not perform DML operations on page load
CSRF is an attack which forces an end user to execute unwanted
actions on a web application in which he/she is currently
authenticated. With a little help of social engineering (like sending a
link via email/chat), an attacker may force the users of a web
application to execute actions of the attacker's choosing. A
successful CSRF exploit can compromise end user data and
perform state changing actions on this data without the user’s
knowledge.
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
Review Time
6 - 9 weeks
First review took 8 weeks for me.
Submission for additional packages took 1-3 weeks.
In exceptional circumstances, priority can be given to a particular
review, but please remember that this really means exceptional
and still requires a security reviewer to become available, which
could be multiple days (our reviews are thorough!). Reach out to
your Partner Account Manager if you need assistance.
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
1. Successful Checkmarx scan does not guarantee Successful pass of Security
Review submission
2. It doesn't report all possible security vulnerabilities that might be found by
manual review of Salesforce Security Review team.
3. Security Review Team will reject the security review if any security vulnerabilities
were found by Checkmarx which are not fixed or mentioned as false positives
4. It is required for Security Review submission, as well as Chimera or Burp or ZAP
for external endpoints if such are used.
Checkmarx scanner
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SF Code Analyzer is very promoted by Salesforce,
however:
SF Code Analyzer scanner just runs PMD.
SF Code Analyzer results are NOT Accepted with
Submission for Security Review
SF Code Analyzer
Questions?
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
References
 https://partners.salesforce.com/pdx/s/pcnews/appexchange-security-review-fee-updates-MC4W7STFOTRNCO5C52G27DQK5J7Y
 https://developer.salesforce.com/blogs/2023/04/prepare-your-app-to-pass-the-appexchange-security-review
 https://developer.salesforce.com/docs/atlas.en-us.packagingGuide.meta/packagingGuide/appexchange_publish.htm
 https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_dev2gp_publish_appexchange.htm
 https://developer.salesforce.com/docs/atlas.en-us.securityImplGuide.meta/securityImplGuide/review_and_certification.htm
 https://trailhead.salesforce.com/en/content/learn/v/modules/secure-serverside-development/mitigate-crosssite-request-forgery
 https://trailhead.salesforce.com/en/content/learn/v/modules/secure-serverside-development/mitigate-soql-injection
 https://quip.com/pfqeA8kRTraY

PUBLISHING YOUR PACKAGE TO APPEXCHANGE IN 2023

  • 1.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE PUBLISH YOUR PACKAGE TO APPEXCHANGE IN 2023
  • 2.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Introduction What is AppExchange? New changes applicable since March 2023? Why should I publish on AppExchange? How do I publish package to AppExchange? How do I prepare for Security Review? Questions Agenda
  • 3.
    Speaker intro Bohdan Dovhań AssociateSalesforce Architect at SoftServe Inc 3 Listings Published on AppExchange #50th on Salesforce Stack Exchange 17x Salesforce Certified Specialist 12 years of Development experience 10 years of Salesforce Development experience
  • 4.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Salesforce Marketplace where packages can be found for installation or published by ISV (Independent Software Vendors) Package is bundled container of code and metadata which can be published on AppExchange or shared directly to subscribers AppExchange
  • 5.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Since March 16, 2023: 1. The $2,550 initial review fee was eliminated. 2. The $150 annual fee was eliminated. 3. The security review fee is $999 per attempt for paid apps. 4. They claim there will be no fees for Security Reviews for free solutions while they work to redefine the policy. March 2023 Change
  • 6.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE 1. Salesforce didn’t accept any new submissions between March 1 and March 15, 2023 to ensure a smooth transition to the new fee structure. 2. Technically now all apps (both Free and Paid) require Security Review fee payment. To reduce it for a free app from 999$ to 1$ open a case to receive a waiver voucher March 2023 Change
  • 7.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE UI Change
  • 8.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Why should you publish your package on AppExchange? - Extended visibility of the product to potential customers - Increased trust for the label “Security Review Passed” - Option to create patch versions - Option to push upgrades to customers - Option to use LMA, FMA, Support Console Why?
  • 9.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE How? 1. Sign partnership agreement with Salesforce 2. Create a listing on Partner Community 3. Create and develop a package 4. Connect your Packaging Org or Dev Hub to Partner Community 5. Submit for Security Review and pass it 6. Update the listing and publish it
  • 10.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Select Listing Type Choose one from three options: - Packaged Solution - API - Consultant
  • 11.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Select Package Solution Type Choose one from two options: - SF Platform Package - B2C Commerce Cartridge
  • 12.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Select a Salesforce Platform Package Type Choose one from four options: - App - Bolt Solution - Flow Solution - Lightning Component
  • 13.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Choose one from two languages: - English - Japanese Choose Japanese?
  • 14.
    Give it atitle SALESFORCE ARCHITECT GROUP, L'VIV, UKRAINE
  • 15.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Fill in other details Provide Brief Description Select Required Salesforce Products (e.g. Sales Cloud) Select Compatible Salesforce Products (can be blank) Select Supported Salesforce Editions Select Supported Features (LEX, SF Mobile, Person Accounts, Multiple Currencies, SF Shield, Lightning App Builder) Select Supported Industries
  • 16.
  • 17.
  • 18.
  • 19.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Select Target User Persona Select Supported Languages Select Business Needs Select Equality, Philantrophy badges Fill in additional requirements Fill in a business contact information Continue no Ukrainian in the list but there is enemy’s language My Packages are mostly Admin&Dev Tools
  • 20.
  • 21.
  • 22.
  • 23.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Select one of four pricing options 1. Free 2. Paid 3. Paid Add-On Required 4. Freemium Select Pricing
  • 24.
  • 25.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Before publishing listing, Salesforce must check that it complies with partner brand guidelines and partner program policies by: 1. Checking information in the Basics and Price Your Solution steps. 2. Approval process takes about 30 days. 3. It is possible to continue updating listing while it is not approved yet Submit for Approval
  • 26.
  • 27.
  • 28.
  • 29.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Add SEO Title Add Tagline Add Full Description Add Details
  • 30.
  • 31.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Add Highlights Add Terms and Conditions Add Details
  • 32.
  • 33.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Upload Small Logo Upload Large Logo Include Visuals
  • 34.
  • 35.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Upload Large Logo Decide if you allow marketing use Include Visuals
  • 36.
  • 37.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Add Screenshots Add Videos Include Visuals
  • 38.
  • 39.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Add Demo Video Add up to 15 Customer Resources Include Visuals
  • 40.
  • 41.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Link Solution Select developed package – the solution If it is not present, go to Technologies tab, open Org subtab to connect either DevHub or Packaging Org for the package
  • 42.
  • 43.
  • 44.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Connect Org To select a package for review, connect an org first To connect 1GMP, you need to connect Packaging Org To connect 2GMP, you need to connect Dev Hub
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Choose Installation Method By default, use AppExchange Link Solution
  • 51.
  • 52.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Trials & Marketing Setup Trial Template to offer free trials for paid app
  • 53.
  • 54.
  • 55.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Setup Lead Capturing for the following events: 1. Lead watches a demo video 2. Lead takes a test drive 3. Lead signs up for a free trial 4. Lead installs the package solution Setup Lead Capture
  • 56.
  • 57.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE When you click Done, you can see overall listing status Check Listing Status
  • 58.
  • 59.
  • 60.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Formal Steps - Fill In Contact Information - Fill In Technical Details - Upload Documents (most important) - Provide information for Test Environments - Review the Summary - Pay for Security Review Security Review
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Use Environment Hub to create a Test/Demo org for Security Review using Trial Template 0TT3t000004cHv2 Install released package version into created org same as submitted for review. Create Guest Admin user with appropriate Profile which has Skip Validation in the name If needed, configure it for use, for example, assign correct permission set to the Guest Admin user. Log in as Guest Admin user and confirm that this user has correct access to the packaged application Security Review Test Org
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Technical Steps - Run CheckMarx Scanner for Salesforce Package - On Partner Portal - On Customer Portal - Run PMD or any other Static Analyzer Tool - Address every findings from Checkmarx and PMD - Prepare Solution Architecture And Usage document - Prepare False Positives document - if you can’t workaround some findings from Checkmarx - if you failed Security Review Security Review
  • 76.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Common Findings - Sharing Violation – use WITH SHARING - Enforce CRUD/FLS: Security.stripInaccessible, WITH USER_MODE - CSRF – do not perform DML during page load - SOQL Injection – use escapeSingleQuotes in dynamic queries - Sensitive Information in Debug – remove all debug logs - Check external JS library vulnerabilities - Remove inline CSS and fixed, absolute, or float in CSS or add them as exceptions to False Positives document Security Review
  • 77.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Sharing Violation Use “with sharing”, “inherited sharing” class declarations Avoid empty sharing class declarations Document and justify “without sharing” class declarations. Verify CRUD and FLS on SOQL and DML Consider using “WITH USER_MODE” and Security.stripInaccessible methods Consider using Custom Permissions for enabling functionality Consider using Permission Set to combine necessary permissions together
  • 78.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE CSRF Do not perform DML operations on page load CSRF is an attack which forces an end user to execute unwanted actions on a web application in which he/she is currently authenticated. With a little help of social engineering (like sending a link via email/chat), an attacker may force the users of a web application to execute actions of the attacker's choosing. A successful CSRF exploit can compromise end user data and perform state changing actions on this data without the user’s knowledge.
  • 79.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE SQL injection is a common application security flaw that results from insecure construction of database queries with user- supplied data. When queries are built directly with user data inlined or concatenated directly with the query text, instead of using type-safe bind parameters, malicious input may be able to change the structure of the query to bypass or change application logic. SQL injection flaws are extremely serious. A single flaw anywhere in your application may allow an attacker to read, modify or delete your entire database. What is SQL Injection?
  • 80.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Apex does not use SQL, but its own database query language, SOQL. SOQL is much simpler and more limited in functionality than SQL. With SOQL injection, you can add additional conditions to the already existing query but cannot build a new query altogether. Therefore, the risks are much lower for SOQL injection than for SQL injection, but the attacks are nearly identical to traditional SQL injection. Use binding ”:” or escapeSingleQuotes to fix. SOQL Injection
  • 81.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Sensitive Information Sensitive Information in Debug Issue Description Revealing information in debug statements can help reveal potential attack vectors to an attacker. Debug statements can be invaluable for diagnosing issues in the functionality of an application, but they should not publicly disclose sensitive or overly detailed information (this includes PII, passwords, keys, and stack traces as error messages, among other things). Remove all debug logs
  • 82.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE CSRF Do not perform DML operations on page load CSRF is an attack which forces an end user to execute unwanted actions on a web application in which he/she is currently authenticated. With a little help of social engineering (like sending a link via email/chat), an attacker may force the users of a web application to execute actions of the attacker's choosing. A successful CSRF exploit can compromise end user data and perform state changing actions on this data without the user’s knowledge.
  • 83.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE Review Time 6 - 9 weeks First review took 8 weeks for me. Submission for additional packages took 1-3 weeks. In exceptional circumstances, priority can be given to a particular review, but please remember that this really means exceptional and still requires a security reviewer to become available, which could be multiple days (our reviews are thorough!). Reach out to your Partner Account Manager if you need assistance.
  • 84.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE 1. Successful Checkmarx scan does not guarantee Successful pass of Security Review submission 2. It doesn't report all possible security vulnerabilities that might be found by manual review of Salesforce Security Review team. 3. Security Review Team will reject the security review if any security vulnerabilities were found by Checkmarx which are not fixed or mentioned as false positives 4. It is required for Security Review submission, as well as Chimera or Burp or ZAP for external endpoints if such are used. Checkmarx scanner
  • 85.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE SF Code Analyzer is very promoted by Salesforce, however: SF Code Analyzer scanner just runs PMD. SF Code Analyzer results are NOT Accepted with Submission for Security Review SF Code Analyzer
  • 86.
  • 87.
  • 88.
    SALESFORCE ARCHITECT GROUP,L'VIV, UKRAINE References  https://partners.salesforce.com/pdx/s/pcnews/appexchange-security-review-fee-updates-MC4W7STFOTRNCO5C52G27DQK5J7Y  https://developer.salesforce.com/blogs/2023/04/prepare-your-app-to-pass-the-appexchange-security-review  https://developer.salesforce.com/docs/atlas.en-us.packagingGuide.meta/packagingGuide/appexchange_publish.htm  https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_dev2gp_publish_appexchange.htm  https://developer.salesforce.com/docs/atlas.en-us.securityImplGuide.meta/securityImplGuide/review_and_certification.htm  https://trailhead.salesforce.com/en/content/learn/v/modules/secure-serverside-development/mitigate-crosssite-request-forgery  https://trailhead.salesforce.com/en/content/learn/v/modules/secure-serverside-development/mitigate-soql-injection  https://quip.com/pfqeA8kRTraY