安全审查(5)完成审查

学习目标

完成本单元后,您将能够:

  • 描述产品安全团队如何报告漏洞。
  • 解释如何在修复安全问题后重新提交您的应用以供审核。
  • 列出在批准后启动您的应用的步骤。

面对事实

您刚刚收到了Salesforce安全团队的电子邮件。您的产品已经过审核。你已经等了好几个星期了,所以你很兴奋。但是某种程度上,你害怕打开它:如果你没有通过,该怎么办?

如果你的产品没有通过它的第一次安全审查,它是在一个很好的公司。所有提交的产品中有一半未通过首次安全审核。安全并不容易!如果是这样,我们实际上并不需要安全审查过程。

让我们来探讨两种可能的安全审查结果 – 不是传递和传递 – 因为在开发产品时,您可能会遇到这两种情况。

咬牙坚持

内容

因为我们一直在谈论“通过”安全审查,所以您可能会将安全审查视为您通过或未通过的考试。但它并非真的如此黑白。将审查视为安全团队的反馈意见,以帮助您提高产品质量并增加成功发布的机会。

如果您的产品未通过其安全审核,您会将此反馈作为报告列出安全团队发现的漏洞。您收到的电子邮件还包含有关如何修复这些漏洞的详细说明。

Your security report

关于报告的好处是,它会给你找到的问题的具体描述。它在报告顶部提供了超链接的内容表,如下所示:

  1. SOQL注入漏洞

  2. 调试漏洞中的敏感信息

  3. 信息披露漏洞

  4. CRUD / FLS强制执行漏洞

每个条目都是一种安全漏洞。每个条目下面是发现漏洞的组件的名称。在目录下面是每个漏洞的详细描述。点击一个条目即可进入相应的描述。

我们去广泛。你深入

该报告列出了您的产品中发现的各种漏洞,但不是每个实例。如果您在列表中看到SOQL注入漏洞,请查看您的所有代码(而不仅仅是提到的组件),以了解SOQL注入机会。

我们还可以提醒您我们利用哪些漏洞进入您的应用程序,但我们无法做出详尽的列表。无论如何,您的团队在代码库中拥有更多的专业知识。因此,一旦知道这些漏洞存在,您就可以更快地找到这些漏洞。

测试不完美

我们只能花费有限的时间在您的产品中查找漏洞。有时,当重新审核应用时,我们会发现一些新类型的漏洞,这是我们第一次看不到。测试不全面,无论是宽度还是深度。因此,当您查看代码库时,请注意各种漏洞,即使报告中没有这些漏洞。

Keep calm and fix your code

在修复漏洞时,请不要忘记对您的产品重复使用扫描仪和对抗性​​测试,就像您在审查之前一样。它们有助于防止新漏洞潜入您的代码中。

检查您的做法以及您的准则

坐下来和你的团队聊聊,以处理安全审查的结果。以下是您可以用来开始对话的一些问题:

  • 这些漏洞是如何通过您自己的安全审查?
  • 你能做些什么来尽快找到它们吗?
  • 会有更多测试帮助吗?
  • 会有更多的人员或更多的时间帮助?
  • Salesforce的安全培训会有更多帮助吗?
  • 您是否从可应用于您的开发过程的安全审查中学到了什么?

没有完美的战略来实现安全 – 它需要奉献和决心。但是,您总是可以通过整合从每次安全审查中学到的内容来改进整体战略。

当然,你的成功就是我们的成功!如果您在修复漏洞或检查流程方面需要指导,请联系您的合作伙伴客户经理或技术布道者。如果您需要技术安全建议,我们的信任团队需要办公时间。

冲洗,重复

您已经修复了您的应用并改进了您的开发流程。你不能相信一切都更安全,你不能等待安全评论复赛。做最糟糕的Salesforce产品安全团队!

安全团队绝不会因为挑战而退缩。你只需要引起他们的注意。您是如何做的取决于您是否修复了在Salesforce平台上运行的代码。

如果您更改了在Salesforce平台上运行的代码,则必须上传新版本的托管软件包。如果您还对包进行了外部更改,请在完成向导时添加该信息:

  1. 在发布控制台中,单击“Listings”选项卡。
  2. 点击您的列表。
  3. 通过单击“Change Packages”将新的托管包上传到您的列表。
  4. 点击软件包上“Start Review”字段旁边的开始查看。
  5. 通过安全审查向导并按照正常的提交过程。

如果您仅修复了在Salesforce外部运行的代码,请编辑您现有的安全审核提交信息:

  1. 在发布控制台中,单击“Listings”选项卡。
  2. 点击您的列表。
  3. 点击软件包上“Edit Review”字段旁边的编辑评论。
  4. 浏览安全审查向导并更新任何已更改的信息。
  5. 在合作伙伴社区中记录一个案例,让产品安全团队知道您正在重新提交您的产品以供审核。在评论中包含您的包名称,ID和版本。

无论哪种方式,您不必支付另一设置费。只要您的软件包ID和您的名称空间不变,我们认为您的重新提交与以前一样。和第一轮一样,安全审查过程需要6到8周时间。

装运它

当您的产品通过安全审查时,您会收到一封很好的电子邮件,表示已通过审核。你做到了!那并不坏,是吗?祝贺你的团队中的每一个人,享受这一刻。以你最喜欢的方式庆祝。

当那个神奇的时刻过去时,是时候推出你的产品了。安全审查电子邮件让您了解此过程中的下一步操作。在发布控制台中完成您的列表并准备好您的营销团队。

我们可以帮助您启动。您的合作伙伴客户经理可以与您合作,并且合作伙伴社区可以在AppExchange上分发,营销,销售和支持您的产品。

然后坐下来看着你的数字增长。

安全审查(4)提交审查

学习目标

完成本单元后,您将能够:

  • 解释您的产品何时需要安全审查。
  • 列出您需要提交的安全审查材料。
  • 解释如何开始安全审查提交过程。
  • 描述安全审查提交过程。

知道何时需要评论

安全审查过程至关重要,但不一定非常痛苦。我们希望让它变得舒适和熟悉。我们希望它没有什么大不了的。

您知道,在AppExchange上启动产品之前,您的产品需要经过安全审查。但是每天都会出现新的威胁。因此,Salesforce产品安全团队可以随时要求您审核您的产品,即使该产品已获得批准。通常,AppExchange产品每年进行一次安全审核。

这里有个好消息:每次发布新版本的产品时,您都不需要通过安全审查。只需按照本单元中的同一提交流程进行操作即可自动重新批准。

组装你的材料

您提供给产品安全团队的内容取决于您的产品架构。审查你的产品的人们需要新客户使用它的一切。毕竟,他们伪装成有权访问正在运行的实例的攻击者。因此,请提供对您的应用使用的任何环境,软件包和外部组件的访问权限,并包括产品随附的任何文档。

产品安全团队也想知道你已经完成了作业。包括从您在产品上运行的扫描仪中获得的报告,以及任何误报的解释。

以下是安全团队需要的内容:

所需材料 AppCloud 带闪电组件的AppCloud 具有外部网络应用/服务的应用 与原生移动客户端的应用 仅限API
Lightning平台开发版组织 X X X X X
登录,外部组件的URL X X X
托管软件包 X X X X X
Checkmarx 报告 X X X X X
Chimera/ZAP 报告 X X X
误报文件(s) X X X X X
产品文档 X X X X X

在您请求安全审查之前:

  • 为您的产品创建一个列表,并上传您的托管软件包。
  • 与Salesforce创建分销协议。请联系您的合作伙伴客户经理获取帮助。

 

提交给向导

Salesforce产品安全团队知道他们要求你很多。所以他们创建了方便的安全评估向导来帮助您提交一切。

开始评论

Partner Community landing page with Publishing Console

从合作伙伴社区的发布控制台开始安全审查提交流程。

  1. 在发布控制台中,单击“Listings ”选项卡。
  2. 点击您的产品列表。
  3. 点击 App.
    App tab on Listings page
  4. 在软件包的名称和版本号下,单击开始审阅。该向导的第1步显示一个页面,其中显示了安全审查的概述以及要为其准备的项目。当你准备开始输入信息时点击下一步。
    Wizard step 1 screen: preparation

提供公司信息

在安全审查向导的步骤2和3中,告诉安全团队您的公司。

  1. 在步骤2屏幕上,为Salesforce安全团队可以联系问题的人员提供联系信息。
    Wizard step 2 screen: general information
  2. 点击 Save & Next.
  3. 在步骤3屏幕上,如果您的公司有书面安全策略,请选中顶部框。上传该政策的副本,并提供贵公司联系人的信息。
  4. 如果您的公司有任何相关的安全认证,请检查底部框,并包括有关这些认证的详细信息。
  5. 点击 Save & Next.
Wizard step 3 screen: policies and certifications

定义应用程序组件

在向导的第4步中,向我们介绍应用中的所有组件和服务以及它们的位置。

  1. 在步骤4屏幕上,如果您的产品使用任何Lightning Platform组件,请检查第一个框。
  2. 选择Managed Packages因为我们仅允许AppExchange上的托管软件包。
    Wizard step 4 screen: managed packages
  3. 在“使用的技术”部分(1)中,检查Apex和Visualforce是否使用它们。我们不再支持S-Controls,因此请确保您没有使用它们。如果您使用这些技术在Salesforce之外使用了任何API,请在文本框中列出它们。
    Wizard step 4 screen: technologies used
  4. 在下一节(2)中,如果您的产品包含移动或桌面客户端,请选中该框。在文本框中列出这些客户端使用的任何外部API
  5. 在接下来的两节中,如果您的产品实现了Database.com API(3)或Lightning Platform API(4),请选中相应的框。
  6. 在(5)下方,如果您的产品包含一个或多个移动网络应用程序,请选中该框。列出这些应用程序在文本框中使用的任何API。
    • 对于iOS客户端,请提供指向您的AppStore列表的链接。如果您的应用程序未在此处列出,请使用TestFlight for iOS并向srops@salesforce.com发送邀请。
    • 对于Android客户端,请提供指向您Google Play商品详情的链接。如果您还没有在那里列出您的应用程序,请链接到必要的SDK文件。
  7. 在下一节(6)中,如果您的产品包含网络应用程序或服务,请选中该框。选中您使用的任何平台和编程语言旁边的复选框,并列出您的产品存储的任何凭证。指出您的产品是否使用我们的单点登录服务。
    Wizard step 4 screen: frameworks, languages, web apps, services
  8. 在接下来的两个部分(7和8)中,选中表示您的产品是否有任何客户端或移动应用程序的框。
    Wizard step 4 screen: client and mobile apps
  9. 点击 Save.

提供测试环境

在向导的第5步中,为您的Lightning Platform组织和任何外部组件或服务提供凭据。

  1. 为您的Lightning Platform生产组织输入用户名和密码。确保它是一个启用了Locker Service的开发版组织。点击添加。该表格通过登录到组织来验证这些信息。
    Wizard step 5 screen: test environments
  2. 为您的产品使用的每个网络应用或服务输入凭据和URL,点击添加以验证每个应用或服务。对于网络应用程序,请从选取列表中选择适当的身份验证形式。
    Wizard step 5 screen: test environment credentials
  3. 对于您的产品包含的每个桌面客户端,请输入用于安装的链接以及任何凭据,许可证文件和配置数据。完成输入后,点击添加。
  4. 对于您的每个产品的移动应用程序,请提供平台,安装文件或链接以及任何其他有用的信息。点击每个之后的添加。

上传扫描仪报告

你快完成了!在向导的第6步中,向安全团队提供由您在产品上运行的扫描仪生成的报告以及任何相关文档。

Wizard step 6 screen: reports
  1. 在“Lightning Platform Security Code扫描仪报告”中(1)附上您从Checkmarx获得的报告。不要选中说你运行报告的方框 – 我们希望看到你的健康状况良好。它给了我们温暖和模糊的感觉。
  2. 如果Checkmarx报告有误报,请附上一份文件解释每一项。
  3. 如果您正在使用外部服务,那意味着您使用ZAP或奇美拉来扫描它们。在“其他报告或文件”(2)中提供来自这些工具的任何报告。将报告和相关文档捆绑到一个存档中并在此处上传。如果ZAP没有报告问题,我们要求您证明您已经测试了正确的外部端点。通过包含扫描该端点的每个工具的屏幕截图来执行此操作。
  4. 点击 Save & Next.

准备好信用卡

经过第7步的简要回顾后,我们要求您在向导的第8步中支付安全审查费用。对于您在AppExchange上销售的每种产品,我们都会要求2700美元的安装费用。这需要审查本身和您的第一笔150美元的AppExchange费用。如果您的产品是免费的,我们会放弃安全审查费用。

最后,您需要与Salesforce达成分销协议。如果您还没有,请在审核前联系您的合作伙伴客户经理。

你全部设置!

恭喜你,你做到了!深呼吸,做一些延伸。也许走一走。如果您的提交中缺少任何内容,安全审查团队将与您联系。一切就绪后,您会收到一封电子邮件,确认您的产品符合安全审核要求。

产品通常需要6到8周才能完成审核流程。产品安全团队完成后,他们会向您发送一份报告,列出他们发现的任何问题。如果他们发现没有错,他们会批准你的产品。真厉害!

接下来发生什么?继续找出。

安全审查(3)准备

学习目标

完成本单元后,您将能够:

  • 解释安全审查的目的。
  • 概述安全审查过程中发生的情况。
  • 总结安全审查的范围。
  • 列出可帮助您为安全审查做准备的工具。
  • 描述哪些扫描仪可以或不可以为您做什么。

了解未来

现在你已经将OWASP列表书签了。也许您的团队甚至采用了开发安全Web应用程序跟踪。您已经以一种全面保护其数据的方式设计了您的应用程序,并且您正在通过遵循安全编码实践来构建您的应用程序。

您知道安全审查流程正在等待您的产品,并且您知道无法通过AppExchange启动您的产品。但究竟是什么安全审查呢?

在安全的环境中测试你的防御

你不会声称你的应用程序中的某个功能没有经过测试就能正常工作,对吗?当然不是。

您的应用程序最重要的功能之一是保护客户数据。在Salesforce,我们相信这个功能非常重要,我们可以帮助您测试它​​。

在安全审查中,我们的产品安全团队会针对OWASP列表中描述的攻击来测试您的产品的防御措施。我们的测试人员戴上了防盗面具,并试图在持续数小时的密集会议中闯入您的应用。他们的任务是窃取他们无权访问的数据。

如果在首先你不成功…

如果我们的团队成功从您的应用中提取数据,他们会向您发送一份报告,列出他们利用的漏洞。您可以使用这些信息来强化您的应用,然后再次通过安全审查。我们在后面的单元中详细解释这个过程。虽然这不是有史以来最好玩的,但它比盗窃真实客户数据要好得多。

像任何测试方案一样,安全审查并不全面。它并没有涵盖所有可能的漏洞,并且通过审查并不是一个铁定的保证你的应用程序是完全安全的。但正如测试您的产品使您对其质量更加自信一样,安全评估为您提供重要反馈以加强产品的防御能力。没有保证产品安全的事情,但通过我们安全审查的应用程序非常接近。

我们回顾整个事情

也许你的应用程序是本机应用程序,只能在Salesforce平台上运行。或者,也许它是一个复合应用程序,具有位于云中或公司服务器上其他位置的架构组件或服务。外部托管的作品必须与其他作品一样安全。否则,攻击者可以使用它们作为入口点,就像窃贼可以使用通风管一样。无论您身在何处,您的应用程序的所有组件和服务都是安全审查的公平游戏。

以下是一些典型的应用程序体系结构以及各个部分的位置。

App体系结构 什么生活在哪里
AppCloud Off Platform Native Mobile App
100%原生 自定义对象

自定义闪电组件

自定义Apex代码

与外部服务的复合解决方案 自定义对象

Apex 码

在另一个平台(如AWS或Rackspace)上托管的服务(如地图)
使用移动应用程序的复合解 自定义对象

Apex代码

工作流程

适用于iOS和Android的原生应用程序
纯API的解决方案 已连接的应用 读取和写入AppCloud上托管的数据的独立应用程序。例如,与客户和机会交互的会计解决方案
闪电Bolt

闪电组件

Apex 代码

爱因斯坦分析应用程序 应用

仪表板

镜头

数据集

数据流

自定义对象

产品安全团队试图攻击所有这些部分,而不仅仅是Salesforce平台上的那些部分。它深入挖掘并随处处理您的数据。相应地计划!例如,本地移动应用可以提供良好的用户体验,但是需要额外的工作来保护它们,具体取决于您将它们放在一起的方式。

带来一切表

当您提交您的应用程序进行审查时,请确保您提供完整的测试设置和使用它的说明。此设置必须包含启用LockerService的开发版组织。

如果您的解决方案包含原生移动应用,请为其添加安装链接。如果您要集成基于Web的外部客户服务,请设置托管该实例的实例。

使用扫描仪进行您自己的评论

如果这个安全审查过程听起来有点可怕,不要担心。我们希望像AppExchange一样在AppExchange上查看您的产品,并且我们随时为您提供帮助。除了我们提到的资源外,我们还提供您的团队可以在您的产品上使用的扫描仪,为审核做准备。

这些扫描程序会针对特定的漏洞模式扫描您的应用程序扫描仪甚至在开发过程的早期派上用场。我们支持其中三个:

Scanner 描述 使用If
Checkmarx 扫描Salesforce AppCloud上托管的应用程序。 您的解决方案具有Apex代码,Visualforce元素和托管软件包。换句话说,总是使用Checkmarx。
Chimera 将最佳的开源扫描技术集成到一项服务中。以一个由几个动物中最强壮的部分组成的神话野兽命名。由Heroku提供支持。 您的解决方案的某些部分位于您控制的另一个平台上。
ZAP 由OWASP创建的免费在线扫描器。需要在本地系统上安装。 部分解决方案部署在您无法控制的域上。

这些扫描程序会生成包含他们在您的产品中找到的所有漏洞的报告。当然,他们找不到所有的漏洞。

误报

有时候扫描仪会发现一个并非真正问题的问题。例如,扫描程序会找到您已受保护的漏洞模式,并且无法识别您的保护方法。我们称这些错误为误报。

假设您添加了一些代码以防止恶意SQL查询,并且扫描程序无法识别您的代码是否解决了此漏洞。它报告了一个SQL注入漏洞。您可以将该报告解读为误报。

如果您认为错误是误报,请准备一份说明原因的文档,并将其与安全评估材料一起包含在内。具体说明你如何抵御所指出的漏洞。如果我们不必追逐你并让你解释给我们,它可以节省每个人的时间。

如何解读扫描仪报告

由于三台扫描仪具有不同的作者并在不同的平台上运行,因此会生成不同的报告。此表格显示如何响应每个报告的内容。

Scanner 修复 忽略
Checkmarx 任何分类为低,中或高的错误。 信息警告。
Chimera 所有错误,除了误报。 您确定的低严重性警告是误报;解释为什么在您的审查材料的文件。
ZAP 除了下一列中列出的所有错误。一旦错误得到解决,请使用您的评论材料提供扫描截图,以确认正在扫描正确的外部端点。 这些问题,你可以减轻,但你并不需要修复。一定要记录任何其他的误报。

尝试破解你自己的应用程序

扫描仪是伟大的,但没有人类智慧的替代品。在你解决了所有你所知道的安全问题后,试着再找一些!储存在黑色T恤和含糖苏打水上,并将你的测试者转化为黑客。

与团队的安全倡导者一起,制定对抗性测试计划,或攻击自己的产品并试图窃取其数据。 OWASP测试指南是一个很好的资源。

给测试黑客一个运行的应用程序实例,让他们放松一下任务,以获得对客户或系统数据的未经授权的访问。为成功的攻击提供奖品。

敌对测试可以产生一些令人惊讶的结果。你可能会发现自己在思考:“我可以发誓我们修正了这个问题!”或想知道你的队友如何擅长黑客攻击。请记住,被黑客入侵比替代方案要好得多。

在下一个单元中,我们逐步完成提交过程。