草庐IT

构建安全软件供应链的12条建议

安全牛 2023-03-28 原文
软件供应链攻击正成为一种常见的非法获取商业信息的犯罪形式。有研究数据显示,现代软件系统的底层代码中超过90%都是开源的,这意味着几乎所有软件的研发与应用都存在着一条供应链,包括各种组件的引用,以及在软件设计、开发、测试、部署和维护期间所涉及的各种环节,安全漏洞随时可能出现。

由于在企业软件供应链中可能导致安全风险的因素非常复杂,因此保障软件供应链安全并非纯粹的技术性问题,而是要综合考虑人、流程和知识的问题。企业组织在解决软件供应链安全问题时,需要基于软件应用的全生命周期来考虑,监控和保护其中的每个环节。

近日,《福布斯》杂志技术委员会的多位安全专家就现代企业组织如何构建安全软件供应链进行了研讨,并给出了12条加强软件应用安全的实用建议。

建议1制定供应链安全计划,由CISO负责

保障软件供应链安全不只是某个部门的事,而是需要成为企业整体发展战略计划的一部分,并让左右人都能理解这样做的原因。为了确保软件供应链顺畅平稳运行,组织首先要做的一件事就是制定一项严密的安全防护计划,并聘请专职的首席安全官(CISO)来制定和落地这项计划,而不是只是将计划发布出来而已。

建议2确保供应链的可观察性

很多企业长期以来只关注自身网络安全的防护,而忽略了供应商产品的安全状况,导致未经过严格安全认证与审核的访问进入企业,带来巨大风险。确保供应链的可观察性必不可少,软件供应链天然具有复杂性,只有通过持续的监控分析,企业才能保证它们的安全进化和发展,并确保长期可用性和安全性。

建议3部署软件供应链管理系统

大多数企业对开发人员在研发时的开源代码引用和软件依赖关系缺乏足够了解。如果不能有效清点软件中的所有第三方组件,当严重的零日漏洞突然发生时,组织将无法了解自己是否会受到影响,哪些应用会受到影响,以及影响的严重性如何。如果组织部署了软件供应链管理系统,就能够准确判断威胁态势,并立即开始补救,避免安全事件发生。

建议4基于SBOM制定分类计划

软件材料清单(SBOM)最近备受行业关注,但应用SBOM只是基础,目的是可以了解软件产品的各个组成部分。更关键的是,企业应该基于已发现漏洞情报信息进行威胁分析,对识别出的各种威胁进行分类,并以此创建威胁处置流程。通过不断重复上述工作,企业还可以不断完善威胁处置流程。

建议5运用零信任策略

企业组织在构建安全软件供应链时,积极运用零信任策略是一项非常实用的保障措施。在供应链合作中,通过遵循零信任原则,企业可以更好审核供应链服务的安全性,所有对于系统的访问都会建立在身份、端点、服务等一系列角色基础上,必须得到安全策略一致的验证和授权之后才能进行。

建议6将安全检查融入开发流程

企业应重视开发安全运营(DevSecOps)。一种方法是将安全检查工作列为开发人员必须完成的任务之一。无论是软件设计过程中的威胁建模、错误修复,还是封堵代码中的安全漏洞,应用安全问题都需要被开发人员优先考虑,并成为其日常开发工作的一部分。如果这部分工作要求没有完成,就意味着其整个开发工作不能结项。

建议7及时进行补丁更新

及时进行安全补丁和软件版本更新是构建安全软件供应链的重要步骤。为了保证第三方软件及开发者值得信赖,在部署安全补丁和版本升级之前,还需要有适当的措施来对其进行安全审查和监控。

建议8贯彻安全编程和测试实践

企业在构建安全软件供应链时应该贯彻安全编程和测试实践,因为它有助于在开发过程的早期阶段识别和缓解安全漏洞,保护整个软件系统免受攻击。这一点很重要,因为软件供应链往往涉及多个第三方合作伙伴,所有开发团队及人员均应该保持一直的安全编程要求。

建议9定期进行离线代码备份

科学的备份机制是防止数据窃取和勒索攻击的最后一条防线。如果企业大量应用了云计算技术,定期进行离线代码备份工作将非常重要。企业应该定期审查软件服务提供商,尤其是提供关键应用组件、销售系统、财务系统的提供商。一旦发现存在风险,就应该及时手动执行离线的数据备份或数据恢复。

建议10制作一份检查清单

企业了解软件供应链是否安全的最好方法就是制作一份检查清单,并以此进行安全状态检查。检查清单可以让每个人都成为安全把关员,从而打造一条安全的软件供应链。不同类型企业对供应链安全检查的要求会有差异,但清单通常应包括以下8个检查点:访问控制、安全存储、加密、安全传输、漏洞管理、定期更新、跟踪系统和纠正措施。

建议11应用安全协作平台

软件系统的安全性取决于其生命周期中的最薄弱环节。随着现代软件供应链的全球化趋势发展,跨不同平台和多个数据集进行协作开发的需求急剧加大。虽然许多企业组织已采用了基于云的协作开发平台,但目前软件供应链上协同沟通的最常见方式还通过邮件、电子表格和社交工具。企业应该购置统一的安全开发协作平台来降低隐患。

建议12加强工程师的安全教育

保障数字化业务的安全开展已经得到业界普遍认同,企业组织也正在投入很多资源打造安全的软件供应链,并取得了一定的进展,但人依然是整个软件供应链中最薄弱的因素。因此,企业需要加强内、外部软件工程师的安全意识教育,帮助他们提高对新工具、新技术和新威胁的认识。

有关构建安全软件供应链的12条建议的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. ruby - 如何安全地删除文件? - 2

    在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?

  3. ruby - 在 Ruby 中构建长字符串的简洁方法 - 2

    在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo

  4. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  5. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  6. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  7. ruby - 使用 rbenv 和 ruby​​-build 构建 ruby​​ 失败,出现 undefined symbol : SSLv2_method - 2

    我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby​​2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby​​-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm

  8. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  9. ruby-on-rails - 我需要从 HTML 转到 markdown,有什么建议吗? - 2

    我正在使用Maruku,将Markdown(超集)转换为HTML,你知道我该怎么做才能从HTML转换为Markdown吗? 最佳答案 Google发现了一个名为reverse_markdown的ruby​​脚本.它似乎可以满足您的需求。 关于ruby-on-rails-我需要从HTML转到markdown,有什么建议吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/175162

  10. ruby-on-rails - 如何构建复杂的 Rails 系统 - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我们有以下(以及更多)系统,我们将数据从一个应用推送/拉取到另一个:托管CRM(InsideSales.com)Asterisk电话系统(内部)横幅广告系统(openx,我们托管)潜在客户生成系统(自行开发)电子商务商店(spree,我们托管)工作板(本土)一些工作网站抓取+入站工作提要电子邮件传送系统(如Mailchimp,自主开发)事件管理系统(如eventbrite,自主开发)仪表板系统(大量图表和

随机推荐