草庐IT

改进开源软件供应链安全性和弹性的商业案例

Harris编译 2023-03-28 原文
如今的网络攻击日益猖獗,那么企业如何提高开源供应链的安全性?

开源是一种了不起的资源,它不仅能促进社区发展,还能推动创新,是构建现代应用程序的必要条件。然而,开源软件也有其自身的安全威胁和挑战。Tidelift公司首席执行官Donald Fischer对为什么以及如何加强开源供应链的安全性和弹性进行了阐述和分析。

如今,根据调研机构Forrester公司发布的数据,50%以上的财富500强公司在他们的开发项目中使用开源软件。到目前为止,开源的价值在大多数企业中都得到了很好的理解:它加快了应用程序的开发,允许企业在免费代码的基础上更快地创建和改进应用程序。

然而,开源是免费的,最初的获取成本为零,但随着时间的推移,保持其安全性和良好维护的成本通常是巨大的。更重要的是,不有效管理开源供应链的影响可能是严重的。

例如,美国政府的一个部门机构最近报告说,它投入了33,000小时来修复最近的Log4Shell漏洞,仅该机构的工程时间就至少为400万美元。

在Equifax公司未能更新易受攻击的ApacheStruts软件包版本,导致数百万消费者数据记录暴露后,他们为此赔偿了7亿美元,以解决美国联邦贸易委员会、消费者金融保护局和所有50个州的诉讼。

难怪当今天的商业领袖看到这样的例子时,拥有一个健全的开源供应链管理战略的重要性变得清晰起来。

IDC公司的DevOps和DevSecOps解决方案副总裁JimMercer建议企业积极地建立一个管理开源的计划,这样他们就可以保持安全,同时最大限度地利用开源的好处:

他说,“由于不断变化的威胁环境,企业需要一个计划来管理他们OSS供应链的健康和安全。战略必须在技术和业务利益相关者之间社会化,以获得支持,并且应该包括OSS消费的企业指南,OSS社区的参与,以及安全尽职调查的标准。”

有效的开源供应链管理计划必须解决内部安全和维护挑战以及外部软件供应链弹性挑战。

解决内部开源安全和维护挑战

许多企业已经认识到保持他们使用的开源组件的安全和更新所面临的挑战。为了解决这些问题,企业应该有一个适当的计划来全面回答下面这些问题,然后在整个企业中广泛地社会化答案。其中许多问题对于单个开发人员来说是极其难以自己回答的。

  • 企业如何决定谁负责确保开源组件的安全和最新,谁负责修复?
  • 企业是否有适当的系统来确定哪些组件被批准使用,开发人员如何找到这些答案?
  • 如果开发人员想引入一个尚未批准使用的组件,他们该如何做,谁需要参与?
  • 谁来评估被引入组件的安全和维护实践,以确保它们符合企业自己的标准?企业中谁制定和维护这些标准?
值得庆幸的是,现在已经出现了解决这类问题的行业最佳实践。企业创建一个经过审查和批准的组件目录,供整个企业的开发人员使用并集中管理。随着时间的推移,随着越来越多的组件被批准,这个目录的大小可以继续增加,使开发人员可以访问越来越多的组件,而不必自己去研究。这使得开发人员的工作效率更高,并降低了企业风险。

应对供应链弹性挑战

虽然管理开放源码的内部安全和维护挑战已经有了很好的记录,但开放源码的一个不太引人注意但更有害的问题是对上游开放源码组件本身的健康和安全的威胁越来越大。

Log4Shell就是一个很好的例子,美国政府网络安全审查委员会(CSRB)在一份报告中强调了这一点,该委员会指出,开源社区目前还不够强大,无法确保代码符合企业标准和政府指南。

但实际上,当志愿者维护大多数开源组件时,企业应该问一个关键问题:谁来承担验证开源包是否符合这些标准的工作?

显而易见的答案是,维护者将是做这项工作的人,但是期望他们“出于善意”承担额外的责任,并且没有过程和工具支持,这是不应该被假定的,并且对任何企业都是危险的。

积极应对安全和维护以及供应链弹性挑战

在任何企业的开源管理计划中,积极主动地与他们大规模使用的开源项目的维护者进行接触,并提供直接的财务激励,这应该是一个关键部分。开源维护者拥有保护其项目的知识和权限。确保从其工作中受益的企业得到公平的报酬是最符合其利益的。

与此同时,应用程序开发领导者应该确定能够帮助他们理解开源软件供应链安全的新兴行业标准的工具,并根据这些标准主动评估开源包,同时随着时间的推移构建一个不断增长的预先审查和批准的开源组件目录。

开源在大多数企业中的使用将不可避免地继续增加,像Log4Shell这样的软件供应链攻击将变得更加频繁。在这种背景下,所有使用开源的企业都应该评估他们是否有一个合理的开源软件供应链管理策略,以解决使用开源带来的安全、维护和弹性挑战。

有关改进开源软件供应链安全性和弹性的商业案例的更多相关文章

  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 - 用 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("

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

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

  5. ruby - 使写入文件线程安全 - 2

    我在一个ruby​​文件中有一个函数可以像这样写入一个文件File.open("myfile",'a'){|f|f.puts("#{sometext}")}这个函数在不同的线程中被调用,使得像上面这样的文件写入不是线程安全的。有谁知道如何以最简单的方式使这个文件写入线程安全?更多信息:如果重要的话,我正在使用rspec框架。 最佳答案 您可以通过File#flock给锁File.open("myfile",'a'){|f|f.flock(File::LOCK_EX)f.puts("#{sometext}")}

  6. ruby-on-rails - 我可以用鸭子类型(duck typing)改进这种方法吗? - 2

    希望我没有误解“ducktyping”的含义,但从我读到的内容来看,这意味着我应该根据对象如何响应方法而不是它是什么类型/类来编写代码。代码如下:defconvert_hash(hash)ifhash.keys.all?{|k|k.is_a?(Integer)}returnhashelsifhash.keys.all?{|k|k.is_a?(Property)}new_hash={}hash.each_pair{|k,v|new_hash[k.id]=v}returnnew_hashelseraise"CustomattributekeysshouldbeID'sorPropertyo

  7. ruby-on-rails - 最灵活的 Rails 密码安全实现 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我需要实现具有各种灵活需求的密码安全。这些要求基本上取自Sanspasswordpolicy:Strongpasswordshavethefollowingcharacteristics:Containatleastthreeofthe

  8. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

  9. ruby - 为什么我必须对 Net::HTTP 请求的安全字符进行 URI.encode? - 2

    我尝试使用Net::HTTP向Twitter发送GET请求(出于隐私原因替换了用户ID):url=URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")resp=Net::HTTP.get_response(url)这会在Net::HTTP中引发异常:NoMethodError:undefinedmethodempty?'for#from/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1

  10. 使用时 Rubygems 2.0.14 不是线程安全的 bundle 程序安装消息 - RUBYGEMS VERSION : 2. 4.5.1 - 2

    运行bundle安装时,我收到以下消息:Rubygems2.0.14isnotthreadsafe,soyourgemswillbeinstalledoneatatime.UpgradetoRubygems2.1.0orhighertoenableparallelgeminstallation.这很奇怪,因为在我的RubyGems环境中它说我的RubyGems版本是:2.4.5.1(见下文)~/w/Rafftopia❯❯❯gemenvRubyGemsEnvironment:-RUBYGEMSVERSION:2.4.5.1-RUBYVERSION:2.2.5(2016-04-26patc

随机推荐