创建安全的软件开发环境

信息安全 应用安全 数据泄露 sdl
2021-08-29 21:31:05

[编辑] 我确实完成了一个概念分析和框架,这些概念包含在我的论文中,用于扩展现有框架。此线程中的所有信息都很有用。感兴趣的人可以直接链接到文档的提取和缩短版本。我总是对批判性评论和印象持开放态度,尽管这个网站可能不是持续辩论的地方。

http://www.levii.com/images/documents/secure%20development%20environments.docx

我正在编写一份白皮书 [完整披露:这是我的硕士论文],讨论安全软件开发领域内的安全性,同时安全软件工程的最佳实践和标准已得到很好的发布和记录。不足之处似乎是其中大多数专门处理软件创建本身的领域,要么完全错过,要么掩盖了创建它的环境。

我知道 DISA Enclave STIG、附录 A 和安全区的概念,这些安全区是为了软件开发、测试和生产而分开的,并且有创建此类环境的个人经验……尽管审计框架似乎缺少(类似于 ISO27001 或 NIST800-53)以及在社区中发布的最佳实践指南。

有这个 stackexchange 问题:软件工件中的数据丢失保护,我还遇到了一些 SANS.org 白皮书,它们非常简要地讨论了这个主题。他们似乎确实错过了我关于全行业最佳实践、框架或流程的基本问题。

因此,我对 IT 安全社区的问题是:

1.) 您知道哪些参考文献讨论了这些类型的分离?
2.)当然必须有政策,网络架构中的技术解决方案等,-您基于什么(或者您是否像我所做的那样......基于个人经验和轶事)知识)?
3.) 在“三大”ISMS 标准(ISO27000、NIST800、FIPS140)中,您认为哪一个标准特别适合扩展到这样的环境?如果没有,我应该研究不同的集合吗?

当然,我绝对愿意接受社区可能​​就该主题发表的任何其他意见。我见过一些商业产品……当然,他们不愿意提供有关其工具、技术和流程的大量信息。

2个回答

这是OpenSAMM 开放软件保障成熟度模型中的元素之一,因为从治理的角度来看,必须适当分离开发、测试和生产环境。

如果没有这种分离,就会出现许多关键风险,包括:

  • 未经测试的代码更改很容易在生产环境中删除或损坏数据,甚至严重破坏系统以拒绝服务
  • 有权访问生产或测试环境的开发人员可能会破坏系统控制以进行欺诈、破坏系统或获得未经授权的访问

受监管行业的公司倾向于根据审计规则(例如金融服务)强制执行这种分离,但大多数行业都建议将此作为良好做法。

在美国,本页列出的 CMMI-DEV也是合适的,并且大多数 SDLC 程序确实要求或至少推荐安全的软件开发环境。

ISO27001:2005 中也有适用的元素,但我认为它们还不够正式。

作为免责声明,我也是一名信息安全研究生,并且围绕这个主题进行了相当多的研究。我的大部分研究表明,并不是缺乏适当的框架,而是对安全概念的根本误解。发生的情况是,至少在我参与的每个项目(私营和公共部门)中,非技术人员被指派为技术主管或非安全人员被指派为系统的官方审计员。在这些情况下发生的情况是,由于安全控制的增加,例如 Tripwire、HIPS(Mcafee 的特殊品牌)、防病毒系统以及发生在加密驱动器上的自动备份,开发周期似乎被“延迟”了。

作为一个快速的侧边栏,STIGS 是无用的,因为:
1)你可以写一个 POAM 并完全忽略 STIG
2)一个完全 STIG 的盒子可以像非 STIG 的盒子一样快地被打破

所以基本上在这种情况下发生的事情是开发/测试团队会向领导层抱怨这会影响他们的性能以及应用程序的性能。由于在这些问题上对没有技术背景的人下雪是“容易”的,因此通常会有一个或两个团队成员被分配编写 POAM 以删除安全控制。话虽这么说,如果你想建立一个框架,它必须以牺牲时间和开发团队的“挫败感”为代价。

在保护环境方面,最重要的是要意识到团队中的每个人都可以是一种威胁,无论是有意的还是无意的。因此,我们首先需要将这些类型的人可能造成的损害程度降至最低。这就是工作轮换概念发挥作用的地方,每 60-90 天(例如)。通过强制团队切换位置,您理论上可以提高安全性,因为新的眼睛被带入环境,并且它还强制更新用户名/密码(注意密码不是密码)组合。通过这样做,它还增加了团队的稳健性,因为人们不会那么容易感到无聊,因此可以继续扩大他们的视野。请记住,我并不是说让 DBA 成为核电站的新物理保安,让他们担任技术职位或他们受过专门培训的任何领域。

就保护团队将要处理的系统(单个工作站)而言,它是标准的防病毒+反恶意软件+HIPS/HIDS(如果它真的很关键)。作为一个更加谨慎的步骤,移除所有光驱并焊接所有 USB 端口,如果这不实用,安装从外部系统管理的软件,重新格式化插入 USB 端口的任何内容,仍然禁用光驱。

就团队工作所在的网络而言。建立一个开发人员可以访问的 IP 地址白名单,这可以防止他们通过一个小 jar 设置 FTP 服务器并将文件传输到他们的家庭系统。禁用对代理站点的访问也非常重要,因为它们无论如何都没有业务试图隐藏他们在环境中所做的事情。确保您的配置文件不在公共 Web 服务器上,并确保开发人员无权访问这些系统。

归根结底,让所有系统保持最新状态,并使用不同的供应商来防止一个系统受损影响其他系统。

STIG 是什么
由于 STIG 可能是一部深奥的安全文献,我将解释它们是什么。可以在其中找到这些内容的示例: Windows 7 STIG
这是在特定类型应用程序的默认设置中发现的常见和已知攻击向量和/或弱点的分步清单。遵循此清单可能会提高安全性,对此的对策是编写一个 POAM,它会使您需要进行操作的特定检查无效。它们存在于无数的应用程序类型中,有些是特定的,例如 Oracle,有些是通用的,例如数据库。

回应为何 Enclave STIG 不一定等同于框架
我已经阅读了飞地 STIG,虽然从表面上看它确实是某种指南,但它仍然迫使您遵守一系列无非是清单的 STIG。此外,当审核出现时,您会失败审核框架未考虑的所有内容,例如 BSD。由于没有适用于 BSD 的 GoldDisk(他们的扫描工具),因此您运行它的所有系统都被认为完全易受一切攻击(操作系统可能易受攻击)。现在我同意它确实提供了一些非常具体的架构和一系列您必须禁用的端口,但我不会将其称为框架。这更像是对安全设计模式的一次失败尝试。