admin管理员组

文章数量:1530023

就像近年来的情况一样,安全漏洞已越来越被接受。 仅以最近的Equifax违规为例。 无论我们在哪里看,似乎总是有人在某种形式的恶意攻击中成为受害者。

虽然我们最近想到了最近的漏洞,但我想花一点时间来概述有关软件开发的安全生态系统。 我将从建设性和积极的角度介绍您可以做的一些关键事情,以提高应用程序的安全性以防止安全漏洞。

为此,我将研究四个关键领域。 他们将主要讨论具体的技术步骤。 但是,他们还将讨论员工和用户的心态。 这四个都不是详尽无遗的,因为我要尽一切可能使我们面临的各种可能性大打折扣,但要记住每个人的情况都不一样。 这样,让我们​​开始吧。

了解OWASP前10名

开发越来越安全的软件的基本工具之一是紧跟OWASP Top 10 。

如果您不熟悉它,它将是不断更新的影响软件应用程序的十大最严重漏洞的列表。 该列表是根据对各种软件语言,行业和国家/地区的研究得出的。

当前列表包括您可能期望的攻击媒介,例如注入攻击破坏的身份验证会话管理不当跨站点脚本(XSS)攻击破坏的访问控制 。 但是它还包括一些您可能不会想到的数字,包括安全性配置错误API保护不足 (这是2017年的新增功能)。

每个漏洞都会得到详细记录,以及如何确定遭受威胁的程度以及可以采取哪些措施来防御威胁。 我强烈鼓励所有开发人员,无论他们的技术水平和经验水平如何,都必须了解OWASP Top 10并保持最新状态。

执行安全审核

下一步是考虑将软件安全审核作为持续开发(CD)流程的一部分。

安全审核评估和评估应用程序是否准备好应对安全威胁,例如OWASP Top 10中的威胁。但是,它们还包括与员工交谈,查看访问控制配置以及评估对系统的物理访问。

其中一些步骤可以自动化,例如安全扫描。 但是,其中一些必须手动执行,例如与员工交谈。 无论如何,通过执行全面的安全审核,您将拥有一个基准,可以从该基准中制定一个行动计划,以不断提高应用程序的质量。

在本节中,我将重点介绍安全扫描。 有开放源代码和封闭源代码选项。 我更熟悉的一个很好的例子是RIPS(Re-Inforce PHP Security) 。

RIPS可以自动检测基于PHP的软件中的安全漏洞,并可以基于行业标准列表(包括OWASP Top 10, CWE , SANS 25和PCI-DSS)检测漏洞。

这样的工具可以:

  • 集成到现有软件开发管道中,能够在每次代码更改时运行
  • 帮助优先处理错误
  • 帮助开发人员了解错误的来源
  • 协助改善整体质量标准

您可以在“相关链接”部分中找到一系列安全扫描器。

注册免费的Codeship帐户

限制信息访问

尽管我们可以验证和清理输入,执行安全审核并考虑代码的复杂性,但是确保流程用户程序只能访问其应有的内容也很重要。

接下来,让我们看看控制应用程序中的信息访问或实现最低特权原则 。 应用时,该原则可确保

每个模块(例如进程,用户或程序,取决于主题)都只能访问合法目的所必需的信息和资源。

以患者医疗服务为例。 如果所述服务在给定时间段内准确显示用户的病历,但不检查所请求的记录是否属于当前登录的用户,则任何患者都可以看到任何其他人的记录。 这种情况是一场灾难,正等着发生。

但是,在大多数语言中,实现这种控件并不是那么困难。 大多数语言的软件包都实现了两个领先的信息访问限制标准:访问控制列表(ACL)和基于角色的访问控制(RBAC)机制。

如果您不熟悉其中之一,请快速浏览一下。 ACL

指定授予哪些用户或系统进程访问对象的权限,以及对给定对象允许的操作。

而RBAC :

是一种将系统访问权限限制为授权用户的方法。 它[RBAC]是围绕角色和特权定义的与策略无关的访问控制机制。 RBAC的组件(例如角色权限,用户角色和角色角色关系)使执行用户分配变得很简单。

深入探讨都不是本文的讨论范围。 但是,我提供了有关这两个标准的进一步文档以及它们的语言实现的链接。

了解您的代码的更广泛的生态系统

除了查看代码外,我们还需要考虑代码所在的环境以及与其交互的其他服务。

几年前,作为软件开发人员,当我表示有兴趣获得LPI认证时,我在老板(一位资深UNIX / Linux系统管理员)中的地位得到了很大提高。

如果您不熟悉它,则LPI认证是围绕Linux操作系统的一系列认证。 但是,还有许多其他选择,例如RHCE和Microsoft相关的认证 。

个人认证不是特别重要。 对我的老板而言,重要的是,我渴望了解代码在其中运行的更大的生态系统-当时非常缺乏这种质量。

通过这样做,他建议,我将以一种全新的方式查看我正在编写的代码。 与其孤立地看待它,不认为我的职责范围止于代码的边缘,我会考虑我更全面地写的内容的含义。

他是正确的。 通过这样做,我们在本文开头考虑的OWASP Top 10具有更多的意义。 一个简单的例子是更好地了解SQL注入攻击对您正在使用的数据库的影响,以及可以采取哪些措施来限制其影响。

因此,鼓励您的开发人员了解整个生态系统或工具链。 您使用的是什么版本?使用的每个服务的弱点和已知的安全漏洞是什么? 需要采用什么解决方法? 有没有可以使用的,没有那么严重或没有那么多漏洞的替代选项?

鼓励安全意识

既然我们已经通过一系列技术,定量方法涵盖了安全软件开发生态系统,那么我想以方程式的更人性化为结尾。

特别是,我鼓励您在组织内部以及客户和用户之间建立一种安全的软件开发思想。

这样做的动机是鼓励开发人员将安全意识作为其软件开发技能的基本方面。 这样,他们将在编写软件时不断寻找安全漏洞。 通过在用户中进行培养,可以帮助他们避免遭受攻击。

安全专家布鲁斯·施耐尔(Bruce Schneier) 在有关该主题的帖子中说得最好 :

如果更多的人有安全意识,危害隐私的服务就不会有如此可观的市场份额。 笔记本电脑不会丢失数百万个未加密的社会安全号码,并且我们所有人都会通过辛苦的方式学到更少的安全课程。

但是,虽然很容易谈论,但是却不那么容易教。 但是,有些课程可以教授安全思想。 如果您希望今天开始,这里是布鲁斯的最终建议:

任何人都可以通过尝试从攻击者的角度看世界来行使其安全思想。 如果我想逃避此特定的安全设备,该怎么办? 我能遵循这部法律的文字,但能绕开精神吗? 如果撰写此广告,散文,文章或电视纪录片的人是不道德的,[他们]能做什么? 然后我如何保护自己免受这些攻击?

结论

现在,我们已经考虑了当前安全软件开发生态系统的四个主要方面。 这四个方面涵盖了技术方面以及人的方面。

通过对这四个领域的讨论,我希望您现在处于一个更好的位置,以学习如何准备基于CWE和SANS 25等标准的应用程序,以及从整体角度看待安全性。

这个话题太多了,以至于一篇文章永远都不可能完整地讨论它。 但是,我希望这只是软件安全之旅的开始,这有助于我们双方为应对当前和未来的安全威胁做好更好的准备。

链接

  • Web应用安全
  • 什么是好的安全审核?
  • 刹车安全扫描器(Ruby on Rails)
  • BenchIT安全扫描器(Python)
  • 如何在Go中安全编码
  • 静态分析工具和代码质量检查器的集合
  • GAS – Go AST扫描仪
  • 安全策略
  • 安全心态(安全技术)
  • 在Zend框架中实施RBAC

翻译自: https://www.javacodegeeks/2017/10/overview-security-ecosystem-programming.html

本文标签: 生态系统