在Log4Shell和Spring4Shell网络攻击事件之后,企业必须吸取三个关键教训,以便在使用开源软件时保持安全:
1.发现风险
为了安全地开发、管理和维护软件供应链,企业必须了解所有环节。
为了确保安全,企业需要一个清晰的清单并真正了解所有正在使用的开源组件。不能盲目相信开源软件组件的出处和安全性。如果像Log4Shell、Spring4Shell和SolarWinds这样的事件教会了人们什么的话,那就是需要更多地了解企业内使用的所有不同软件。
这包括它们的开发方式和位置,以及它们在企业中的使用位置,以便在发现漏洞时可以迅速解决问题以限制损害。
2.不要过于复杂
第二个问题是需要企业自己防护。在开发框架或库时,做好这一点很重要。采取更简单的方法也很重要,这样就不会在不知不觉中引入漏洞。
专注于做好几件事比糟糕地引入很多特性要好。功能越多,出现严重漏洞的可能性就越大。因此,在查看想为产品和服务添加哪些新功能时,仔细考虑是否需要它们,并且只使用一些必不可少的功能。
尽管需要快速发展,但企业需要确保他们花费时间真正考虑他们需要哪些功能以及为什么需要,因为任何超出要求的功能都可能为漏洞敞开大门。
3.外部化处理
第三,企业在设计和开发不同的应用程序时需要意识到横切关注点。无论是用于日志记录、指标、加密通信还是缓存,重要的是要考虑这些持续存在的问题是否需要在应用程序中处理,或者是否可以将它们在应用程序之外处理。
例如使用日志记录,许多框架可以将日志发送到各种位置,包括称为标准输出的输出文件和由企业的应用程序负责的警报服务。可以采取更好、更安全的方法。与其相反,需要考虑让其应用程序将日志发送到标准输出,然后利用日志收集器服务将日志发送到所有需要的终端位置。通过将这些问题进行外部化处理,开发人员需要担心的代码和配置就更少了,因此可以减少可能出现的漏洞。
采取积极措施
Log4Shell和Spring4Shell漏洞只是强调了企业需要采取积极措施来保护他们的环境。然而,随着创新的加速,这只会变得更加困难,为企业创造越来越多的机器身份以供关注。
试图监控和管理所有这些机器身份,同时保留所有软件组件的库存并确保开发保持简单并非易事。现在的企业可能缺乏技能和资源。他们应该利用自动化和安全工具来确保减少漏洞数量,这样就不会像遭遇Log4j网络攻击那样受到广泛的影响。