尽管我的大部分时间都在研究用户空间和内核空间目标的内存损坏,无论是在防御方面,还是在漏洞研究方面。我还花了一些时间在安全架构和系统设计方面,包括审查方面和提出安全设计方面。
今天和我一起演讲的是Danish Nagarajan,他是IBM安全服务的合伙人,他在网络安全领域有20多年的经验,领导着IBM安全服务的一大块业务。他的研究领域包括应用程序安全、DevSecOps转换和网络安全服务。这也很酷,他不在英国,在伦敦,所以我们可以一起工作,在大洋彼岸。
交给你们丹麦人。哦,对不起,我们要先做议程,然后转到丹麦。首先我们要讲的是开源和应用安全的行业现状。因此,作为行业领导者之一,Danish将从DevSecOps领域、应用程序安全领域提供他的见解,讨论围绕开源和应用程序安全的一系列不同统计数据,以及它们对企业的影响。然后,我们将讨论我们作为RunSafe如何交付强化的开放源码软件,以帮助减轻一些开放源码安全问题。大部分的对话实际上都将讨论加强开源交付的挑战和解决方案,这就是artifactory的切入点,至于我们如何使用artifactory SAS产品来解决这些问题。下面有请Danish来谈谈开源和应用程序安全。
谢谢,谢恩。谢谢你的介绍。我们看下一张幻灯片。因此,我将花几分钟谈谈开源软件,以及开源软件的影响,以及应用程序安全的总体影响。
许多人没有意识到的一件事是当今企业中开源软件的普遍性。这张幻灯片上的一些数据在这个背景下让人大开眼界。超过44%的组织计划在未来几年内大幅增加开源软件的使用。当他们开始使用开源时,我们已经看到这种趋势不仅在中小型公司中增长。我们还看到大型企业和全球组织为消费开源服务,甚至受监管的行业也开始为其企业应用程序和业务应用程序平台使用开源软件。
其中一个有趣的事情是,作为开源的一部分,超过60%的组织认为开源软件实际上是构建关键平台和应用程序的关键。因此,今天大多数这些组织使用的开源软件程序对于支持他们的关键生产力和关键应用程序是重要和关键的。所以这反映了开源的重要性,今天在大多数这些组织中使用。
虽然开源的增长显著增加,但我们也看到超过49%的组织难以识别开源组件中的漏洞。开源具有某些独特的特征,这使得它在安全元素和识别漏洞方面更具挑战性。然而,这种情况正在显著增加,目前大量客户难以识别漏洞,实际上也难以补救其漏洞。因此,尽管开源的使用越来越多,但应用程序安全的一般状态也是我们需要关注的一个问题。
应用程序安全已经成为当今网络安全威胁最流行的载体,我们所看到的许多原因漏洞基本上都是利用应用程序安全漏洞。应用程序,你知道,层和向量为攻击者提供了更丰富的环境,也为他们提供了更丰富和吸引的因素,你知道,破坏和攻击,实际上窃取数据,或破坏或闯入网络。
你知道,进入企业周边网络不再具有挑战性应用层呈现出更加丰富,也更加脆弱和诱人的威胁向量空间。除了攻击者增加了应用程序的安全性,还有超过63000份安全事件报告和企业应用程序的利用。这是典型组织中应用程序环境的当前状态。更重要的是,除了新的边界之外,其中一个关键数据是,超过四分之一的漏洞在上线之前没有得到修复。因此,这些应用程序是在生产环境中运行的,其漏洞并非在生产环境中被打补丁或未被补救,有效地容易受到攻击和应用软件的破坏。
随着应用程序漏洞的增加,我们看到对开源软件的关注将逐年大幅增加。就像很多企业已经开始使用开源软件一样,你知道,对于威胁行为者来说,这是一个非常众所周知的信息,这是一个他们可以关注的空间领域,并使用它,你知道,一个平台来闯入应用程序,你知道,创建一个安全桥梁。其中一个非常著名的影响企业的开源漏洞是“心脏出血”,它影响了超过50万个网站。那么解决方案是什么呢?我们已经看到了应用程序安全领域的挑战,我们也注意到了一些普遍存在的开源名称的问题。
从IBM安全的角度来看,DevSecOps是一个可以改变这个等式的机会。有了DevSecOps,你知道,安全性被集成到DevOps中,组织可以在开发生命周期的早期强制执行安全性。安全需求,可以在软件发布到生产环境之前识别和修复已知的安全漏洞,也可以在此过程中进行测试。
虽然存在已识别的已知漏洞,但补救安全性的方法之一是为运行时应用程序组件提供足够的安全功能,以确保应用程序在运行时受到保护,免受已知威胁和漏洞的侵害,并减轻安全威胁,减轻风险,并且应用程序的部分不发生变化。
一旦应用程序使用您的开发sec Ops进行部署,您还可以监视已部署的软件,以确保应用程序在运行时能够识别并持续减轻安全威胁。使用DevSecOps的一个关键因素,使用DevSecOps的一个关键优势是我们我们已经看到超过50%的应用程序安全性可以通过在DevSecOps机制中执行安全设计原则来解决。
太好了。IBM安全。请下一张幻灯片。IBM安全性对于如何从持续安全的角度对DevSecOps进行集成和自动化有自己的观点,为了成功地将安全性和DevOps实践集成,需要考虑一些关键组件,但从根本上讲,它构成了两个关键领域。
两个关键领域的安全。一个是在DevOps生命周期内安全开发所必需的关键元素,但也需要监控和实际学习,并在出现问题时有一个学习周期应用程序正在生产环境中运行。这里有一个很重要的因素,这是一个连续的过程。这不是一次性的。我们认为,使用DevSecOps能力,您可以解决我们今天讨论的一些挑战。这是,你知道,对我自己的一个快速介绍,你知道,介绍应用程序安全的状态,以及开源软件的挑战。
谢谢,丹麦。现在,在我们讨论我们为什么要加强开源解决方案以及我们如何加强开源解决方案之前,我们将在这里做一个快速演示,我们将通过丹麦人刚刚谈到的这些漏洞之一,看看它们如何影响您今天正在运行的现有开源解决方案,以及您环境中的专有解决方案。我们这里有一个浏览器中的演示环境,它在catacota上运行。因此,我们将逐步构建一个易受攻击的应用程序,利用它,然后我们将讨论RunSafe为开源解决方案提供的保护,向您展示利用不起作用,然后我们将讨论如何使用Artifactory交付加固的开源解决方案。我们在这里有三个小窗口,左边是循序渐进的文本,我们不需要担心这个,我不打算读给你们听。然后在顶部,我们有一个编辑器,现在我们有一个Docker文件,它将构建我们的应用程序,我们将安装,为我们的编译器构建基本元素,我们将安装Python来进行实际利用,然后我们有一些易受攻击的应用程序的源代码。
我们将建造它,然后我们将能够运行它。这里我们要运行这个易受攻击的应用程序,叫verify password,它输入一个密码,在这种情况下,这个密码是超级安全的,它会为你打印一条秘密消息,是0天或数字。现在我们已经了解了这些,我们将快速浏览一下利用脚本。
这是在Python中,它使用了一些本地的东西来进行非常可靠和健壮的利用。现在我们要运行同样的程序。因此,我们可以看到,我们没有打印零天或数字,而是打印了一条错误消息,说,嘿,这个密码不正确,但我们最终在shell环境中结束。显然,在我们的shell环境中,不管程序在哪个级别运行我们都可以做操作系统,修改文件,从系统中取出文件,等等。我们现在要退出这个。我们将快速修改这里的安装我们将做一些改变,我们将添加一个新阶段来复制一些文件,我们将复制这些文件然后我们将添加一个脚本来安全地构建这个。现在我们要重建它,就像我们之前做的那样。我们会看到,当我们正常运行程序时,一切都是一样的。当我们在利用环境中这样做时,我们会看到利用失败。所以很快,我们可以看到未受保护的版本仍然有效,我们可以看到利用仍然有效。现在,当我们运行受保护的那个,我们会看到。由于某种原因,它没有变成大尺寸,好了。所以当我们正常运行时,它是可以工作的。这是这里的关键,当我们谈论强化开源时,我们不想做的是让客户用户在使用开源时,在他们的应用程序运行时,它的功能非常不同,或者完全不同。
但是现在我们利用了,我们看到了同样的无效密码消息,但是我们看到了段错误,程序崩溃,所以不是利用成功,攻击者获得了系统的控制权,他们实际上没有得到控制权。
那么我们的产品适合哪里呢?hth华体会最新官方网站你知道,当我们谈论保护开源解决方案时,你知道,我们有很多地方获得开源,我们在某些情况下获得开源软件作为源代码,人们在构建过程中使用它作为软件依赖项。
有一些非常有趣的供应链安全问题,你可以看看,深入研究,并真正解决。这就是为什么,你知道,像JFrog x射线产品这样的东西可以帮助你找到现有开源软件中的漏洞。然后我们还设置了构建时间我们可以提供这些保护。
今天我们将更多地讨论回购方面的内容,这是我们托管已经加固的开源解决方案存储库的地方。然后,我们稍后将讨论一种新的功能,我们称之为Alkemists square,它更多地是在监控方面,但Flare真正酷的地方在于它将能够与您的测试环境和Artifactory集成,为您提供一些您以前可能从未有过的新见解。因此,让我们来看看向Artifactory或通过Artifactory提供开源解决方案时遇到的一些挑战。所以第一个挑战就是保持软件的更新。
真的,你知道,这是有问题的,因为微软有补丁星期二,你知道,每个人都知道在星期二,每月的第一个星期二,我认为是,会有补丁出来,我必须去更新我的系统。但对于开源解决方案或软件来说,并没有一个标准的补丁日,也就是发布新版本的标准日。所以这些时间表是零星的。
没有真正的网络钩子。你知道,对于那些网络开发人员来说,他们使用网络钩子告诉你所有正在发生变化的事情,在开源空间里是没有这些东西的。因此,当我们提供开源解决方案时,我们需要能够确保软件总是更新的,我们的客户得到的是最新的和最好的,所以他们有最新的功能以及最新的安全补丁。因此,我们每天都有一个git实验室CI管道,我们运行它来重建我们产品中的所有软件,无论是Docker、Deb还是rpm,我们可能很快就会有一些apk。所以我们每天都在构建软件,但是我们如何确保我们得到了最新的版本呢?我们做了几件不同的事。
对于Docker镜像,我们实际上从Docker Hub中提取最新的版本和所有最新的标签,然后使用GitHub存储库来提取最新的Docker文件,将所有这些放在一起,然后构建最新的Docker镜像并将其推送到Artifactory,从那里发货。
对于我们的开发人员和rpm产品,我们构建了最新和最好的源代码rpm和源代码选项卡,并将它们推送到Artifactory。
下一个巨大的挑战是分销。因此,通过Alkemist,我们提供了我们的强化开源以及我们的主要产品,我们为Alpine提供apk,为CentOS、Fedora、Red Hat提供rpm,为Debian和Ubuntu映像提供开发程序,以及Docker。因此,维护所有这些基础设施,能够不断确保基础设施提供最新和最好的版本是非常具有挑战性的。所以Artifactory很自然地就适合这种情况,然后Artifactory软件即服务也非常适合我们,因为我们想确保我们总是拥有Artifactory的最新和最好的版本,而我们不想不得不担心你知道,cdn,担心我们如何确保我们的软件…我们的交付仓库是安全的。
我们可以利用Artifactory和SAS的产品。然后另一件事是,当我们发布我们的强化开源时,我们依赖于一些主要的软件包。所以即使我们要运行我们自己的存储库,我们也必须经常担心这样的问题,我需要这个包在15个或20个不同的存储库中,所以我们要做很多工作,在每个地方都保留这些文件的副本,我们会有巨大的,你知道,磁盘存储使用量的膨胀。所以我们混合了虚拟和本地存储库,我们总共有34个存储库。
当我们添加更多的软件包和产品时,这个数字会有所变化和增长。所以我们混合使用本地和虚拟存储库让我们能够具体地说,嘿,这是所有的Apache包,这是所有的节点包,这是所有的Redis包。但是当我们想把它公开给客户时,我们只需要给他们虚拟存储库。所以他们总是有最新最好的版本。但是我们可以更容易地管理本地存储库中可用的版本。然后我们还利用这些本地存储库进行开发和测试。所以我们不需要为我们提供的所有软件列表,我们可以只关注我们想要关注的开发或测试工作。
我们面临的下一个挑战是曝光度。所以如果你去看看Dabian, RPM包库,甚至Docker本身,都有一个可发现性问题,对吧?Docker Hub有一个很棒的搜索功能。但是,你知道,这是有局限性的,当我们考虑如何为人们提供一堆不同的软件包时。然后,你知道,开发人员和rpm,你最终会得到一个HTTP列表,对吧?它只是一个文件结构,你要一直点击,确保你在正确的目录。
我们不希望人们那样做,我们希望能够用我们拥有的所有标签显示最新最好的版本。现在通过我们当前的回购,我们有8个不同的开源包,以及大约1098个Docker映像,这些包中有我们支持的所有不同的标签和不同的版本。所以我们需要一种方法让所有这些都可以被发现,这样人们就可以很快地看到我们是否支持那个标签。右边这个是我们回购网站的测试版这显示了所有不同的标签。
你可以看到,我们有所有不同的版本图像哈希,以及所有匹配哈希的标签。因此,我们利用Artifactory REST API来在用户浏览网站时动态生成这个。
显然,如果你用App或Yum来安装你的包,这对你来说是不可见的你只需要安装一个包,然后就结束了但对于Docker,我们想让它真正可见。因此,其余用于列出所有标签的api,以及给定存储库中的所有版本,对于我们来说非常容易利用到动态更新并且始终是最新的前端。我之前提到过,我们有一些即将推出的新功能。我们来研究一下。
我们有Alkemist: Flare作为一个产品模块,它允许您在软件进程崩溃发生时进行监控。那么它是如何融入Artifactory的呢?
你知道,这和今天的演讲有什么关系吗?我们发现,在开源解决方案中,没有一个很好的方法来监控这些解决方案什么时候崩溃,对于那些做开发的人来说,他们正在构建软件,部署它,不断地测试它,当测试失败时会发生什么是一个挑战,
你要做的第一件事就是对测试失败进行根本原因分析。因此,通过JFrog Artifactory,我们试图成为DevSecOps软件开发、生产、发布、测试生命周期的中心,我们可以利用Flare数据发布关于正在崩溃的不同二进制文件的元数据。所以当你去运行你的测试时,你会看到失败。然后,您可以利用我们提供给Artifactory的元数据来了解实际的崩溃是什么,它是如何崩溃的,为什么会崩溃等等。因此,现在Artifactory不仅能够在您的管道和测试中跟踪您的构建,而且还可以在流程崩溃时为您提供一些数据,了解流程中出现的问题,这将帮助您更有效地利用您的工程时间。所以这很快就会到来,Alkemist: Flare今天可用,但我们还没有JFrog Artifactory集成,但这很快就会到来。这样你就能得到所有这些伟大的功能。很快地,我们会向你们展示作为监控的一部分,哪些信息是可用的。现在我们进入我的开发环境。我们要做一个快速烟雾测试。
这里,我们看着一个包裹,它要崩溃了。我们将在Splunk中看到应用程序崩溃数据。我们再快速播放一遍。我们可以实时看到之前没有数据的地方,我们将实时看到,现在这里有碰撞数据。我们来看看这里的信号事件我们可以看到有一个叫signal test的命令运行,我们可以得到参数的信息。所以如果你有一个动态环境,你的测试有很多不同的参数,你可以利用这个来看看这个特定的崩溃测试。这个特定的测试崩溃,抱歉,这些是传递给它的参数,这些是用于它的环境变量。然后你还可以看到处理器寄存器状态。
通常,如果您在GDB或其他调试器中查看这个,您将看到这些值以文本形式显示。Splunk目前提供的是无符号整数。但是你可以很容易地转换它来查看上下文,指令指针是什么,处理器在做什么。然后你还可以得到主机的信息,主机名,接口等等。然后是信号信息。因此,我们可以看到,当您试图调试测试失败的根本原因时,所有这些信息对于帮助您进行诊断非常有用。因此,我想感谢大家来参加我们的演讲,并花时间了解RunSafe如何利用Artifactory来保护开源解决方案。现在我要把它交给丹什来做最后的评论。
谢恩,谢谢你给我这个机会介绍RunSafe。
这是一个非常有趣的演示和演示。
希望人们已经学到了一些关于如何处理开源安全的新知识。
谢谢你!