桌面应用程序的安全扫描

信息安全 应用安全 视窗 审计 桌面
2021-08-26 00:58:12

我们公司开发 Windows 桌面应用程序。我们提供现成的解决方案——而不是定制开发。一位潜在的新客户想要在我们的标准合同中添加一个部分,要求我们使用“应用程序扫描”工具。他们特别提到了 IBM 的 AppScan。但是,该工具似乎适用于 Web 应用程序,而不是桌面应用程序。

我们的应用程序是使用 Delphi 开发的(很久以前来自 Embarcadero 以前的 Borland)。我们是一个小型的两个开发商商店。虽然我可以理解为什么客户会在合同中想要这样的东西,但我不确定我如何才能真正做到这一点。

他们的合同语言似乎表明还有其他“行业标准工具”吗?

这是否成为 ISV 中的普遍做法?

是否有任何 ISV 遵守此类安全审查要求的指南?我知道有许多安全编码实践的站点(验证用户输入、缓冲区溢出、SQL 注入等),但我从未见过任何讨论组织安全审查以使最终用户相信程序员做了他们的正确工作。

以下是他们想要添加到合同中的内容:

xx 软件安全审查和测试。在提供此类组件的主要版本之前,将对被许可方根据本协议许可的软件的每个生产版本的应用程序组件执行安全扫描过程。许可方将使用 IBM 的 AppScan 应用程序扫描工具或替代的行业标准工具(“应用程序扫描”)执行此类安全扫描。供应商还将对核心产品的每个主要版本执行手动渗透测试(“渗透测试”)。供应商将按照协议下适用的附表中规定的每个应用程序组件每年至少进行一 (1) 次应用程序扫描。

该应用程序本身是一个标准的 Windows 应用程序。它可以连接到 Access 数据库或 SQL Server 数据库以进行数据存储。担心安全性的用户显然会使用 SQL Server。没有中间层——我直接从应用程序连接到 SQL Server。该连接是使用受信任的连接进行的,所有数据访问都是通过存储过程进行的。

我可以理解在 SQL 数据库上运行某种类型的安全扫描程序。即,将验证表没有留下广泛开放访问的东西。有趣的是,合同中没有涉及数据库。

我可能会提出这个问题并说 AppScan 不能在桌面应用程序上运行并让他们从合同中删除该部分。看到它让我想知道是否有任何桌面应用程序开发人员在他们的软件上运行任何类型的扫描仪。

3个回答

Web 应用程序扫描器并不是 Web 应用程序安全的全部,简单地运行现成的工具并不能解决应用程序不安全的问题。话虽如此,桌面应用程序的安全影响很大程度上取决于您的应用程序的功能。是服务器吗?它是否通过网络进行通信?它有数据库吗?

没有现成的应用程序可以解决这个问题。您需要聘请专业的安全分析师来审查此应用程序并(很可能)手动对其进行测试。

这显然是为了促进经过合理测试的应用程序而编写的。对此我有三点意见:

  1. 首先,他们应该有自己的内部扫描程序(漏洞评估),作为验收测试的一部分,他们将提供一个测试平台来运行您的程序。软件供应商可能会选择拥有并开发自己的软件,但永远不能指望根据请求“n”个程序变体的“n”个合同来扩展“现成的解决方案”——即使是国防部也认识到这一点。

  2. 这个开发方面必须在要部署的环境中进行,否则你没有合理的“利用”图片。漏洞利用分析的目的是获取系统的漏洞,并确定漏洞利用后可能带来的痛苦(即,查看实际的真实影响和潜在损害)。当然,只有在要部署的场景中才能真正评估。

  3. 这个客户的想法有点错误,他们认为软件的创建者是软件的测试人员符合他们的最大利益。这种情况在 Q/A 中一直发生,但出于真正审计的目的,绝不应允许在安全性中使用。他们需要有自己的人,或者更好的是一个公正的第三者(让他们联系我:))来执行漏洞和利用分析。

我专注于应用程序安全。首先,应用程序几乎不会在生产环境中进行测试。您通常在开发后部署应用程序的测试环境中验证漏洞。

只要桌面应用程序使用 HTTP 或 HTTPS,IBM AppScan 很可能用于针对桌面应用程序执行测试,就像它用于测试 Web 应用程序一样。为此,您需要配置一个代理以侦听您的 RFC 1918 地址而不是您的环回,并将桌面应用程序部署在专用 VM 中。在 Windows 中配置 Internet 选项以指向您绑定代理的地址和端口。我会建议 Burp Suite 胜过其他任何东西。

想要入门的个人的信息通常可以在 OWASP 网站上找到。一个很好的起点是 OWASP 测试指南 v4,但如果您正在寻找一些东西来证明应用程序通过某种标准是安全的,请使用 ASVS。

理想情况下,您希望将安全实践集成到 SDLC 的所有阶段,并开发一个与实际 SDLC 分开的框架,称为 Secure-SDLC。Secure-SDLC 将概述安全实践,应根据需要将其集成到 SDLC 工作中。

否则,您可以只进行部署前渗透测试,但成本更高,因为您不可避免地会在 SDLC 中被踢回以修复已识别的漏洞。PCI 和 HIPPA 可能会指定与创建安全开发实践以及针对应用程序运行自动化或手动测试以识别漏洞相关的要求。