电话

18600577194

当前位置: 首页 > 新闻 > 物联网技术

如何从一开始就在物联网软件开发中构建安全性?

标签: 物联网软件开发公司 2024-08-01 

随着我们持续将网络安全纳入物联网应用部署,我们要考虑的下一个领域是创建自己的软件系统所面临的挑战。让我们考虑一下大多数人在创建软件系统时采用的方法。开发能够解决客户问题的新应用程序的兴奋感在设计过程中非常令人鼓舞。通常,系统开发人员首先关注的是与用户体验相关的项目:

应用程序的目的是什么?我们将允许用户完成什么?该应用程序的主要功能是什么?应用程序将在哪里运行——在 PC 还是移动设备上?这对架构意味着什么?UI 应该如何设计?怎样才能让它更简单、更直观?

这些都很重要,但您发现还缺少什么吗?从开发过程一开始就需要考虑安全问题。将网络安全纳入应用程序开发的设计、开发和测试以及维护阶段将使产品生命周期管理变得更加容易。

如何从一开始就在物联网软件开发中构建安全性

设计

在开始设计应用程序时,请考虑与应用程序相关的潜在威胁。例如:

物联网软件开发内共享的信息有多敏感?   

您可能正在提供一些非常通用的信息和交互——在这种情况下,您可能决定不考虑安全性,并允许匿名访问应用程序和数据。工作完成了,您现在可以继续设计 UI 和行为的精彩部分。但如果它更敏感,那么您需要再考虑一下。

标准身份验证和授权

如果您提供的信息需要某种程度的互动,且该互动应保密,则需要进行一定程度的身份验证。音乐流媒体平台就是一个典型的例子;您可以匿名访问和使用该平台,但如果您想摆脱广告并创建离线播放的内容,则必须登录。您还需要提供付款详细信息,而您绝对不想与公众分享这些信息。   

对于这种方法,您需要使用我们之前关于这些主题的博客中讨论过的标准身份验证和授权技术。需要记住的重要一点是,即使您只需要应用程序的部分内容是安全的,也需要认真对待安全性。此领域的一个典型错误是用户可以错误地从应用程序未经身份验证的区域访问数据 - 这是设计未正确组件化安全区域的地方。

高度监管的行业

当您提供对高度机密信息的访问和交互时,例如移动银行应用程序,您需要提供目前可能使用的最高安全级别。在这种情况下,您的组织可能会有关于您的应用程序需要满足哪些要求的详细指南,一个很好的例子就是《安全技术实施指南》(STIG)。这种指南可能非常长,初读时很难理解。我们的建议是,您在组织中寻找已经使用指南编写过应用程序的人,他们可以为您提供一些关于您需要在应用程序中设计哪些安全控制以满足安全要求的想法。例如,标准银行应用程序使用自适应身份验证来正确识别用户。

开发与测试

让我们从标准指南开始——我听到了你的抱怨,但一旦你使用了几次,其中的大部分就会成为你的第二天性。根据你使用的语言,会有不同的指南。一个很好的初始指南来自 OWASP 基金会安全编码实践指南,链接如下1。它至少会帮助你在编写代码时正确思考你需要注意什么。   

现在您需要决定要将重点放在安全测试上。与所有其他决定一样,这将取决于您对特定应用程序的安全意识。例如,如果您已决定不担心安全性,则可以忽略此部分。但是,您可能希望仔细检查安全性较低的应用程序是否允许用户意外访问应用程序基础架构中更安全的区域。   

编写代码时从一开始就考虑安全性并使用一些准则使其尽可能安全,下一步是进行静态应用程序安全测试,或者对于我们大多数人来说称为源代码扫描。根据应用程序的大小,这可能是一个组件或整个应用程序。扫描应在包含所有库的源代码树上运行,即您的代码以及第三方库。有许多著名的源代码扫描程序,从开源到商业产品。无论您选择哪一个,对于源代码,输出都将是“发现”列表,其中将突出显示安全漏洞的严重性和位置;这些从严重到低评分。对于第三方第三方库,您将获得任何具有漏洞的库的常见漏洞和暴露列表,CVE 列表的数字评分从 1 到 10,10 为严重,这称为 CVSS 系统。  

您可以自行决定缓解这些突出显示的漏洞的数量,但我们建议您至少解决自己源代码中的严重性和高严重性漏洞,并获取 CVSS 为 7 到 10 的任何漏洞的更新库。  

在对源代码进行扫描后,我们现在要进行一些动态应用程序安全测试。这是在编译、构建和部署的应用程序上进行的,并将为您提供另一份可利用的漏洞列表。这与源代码扫描之间的主要区别在于,动态应用程序安全测试将包括运行时环境中的配置和其他组件。无论您对单个应用程序做出的决定如何(如上所述),都应该对所有应用程序进行此操作。  

最后,但并非最不重要的一点是,您需要运行渗透测试,以确保您没有遗漏任何东西。这可以是低调的,例如同事试图突破您的安全防御,或者在主要IoT 物联网软件平台雇用专门从事此类不道德黑客攻击的第三方组织。渗透测试的一个好起点是使用此网站OWASP Top Ten | OWASP Foundation。他们让网站保持最新已知漏洞、攻击模式和其他有用信息。

维护与支持

众所周知,安全措施一直在不断发展,以应对那些无能之辈不断尝试寻找新方法来获取他们不应该拥有的数据。这意味着我们必须始终假设我们的应用程序需要不断得到照顾;您不能部署后就忘记。同样,根据拥有组织的规模(毕竟可能只有一个人),您需要确保定期检查以下内容:

检查您的第三方库并保持其更新运行应用程序的环境会及时更新补丁和最新版本

较大的组织将拥有一个或多个团队来负责此事,并将制定流程作为其符合 ISO 27001 和/或 SOC2 等标准的审计合规性的一部分。