DevSecOps:老的安全漏洞仍在施展新的伎俩

2019年3月27日出版
作者:Pieter Danhieux
案例研究

DevSecOps:老的安全漏洞仍在施展新的伎俩

2019年3月27日出版
作者:Pieter Danhieux
查看资源
查看资源

原文发表于 DevOps.com.

在网络安全领域,我们经常像猎人一样。我们的眼睛紧紧盯着地平线,扫描下一个爆发性的漏洞(以及正确的设计工具、技术和战术来阻止它)。然而,这种前瞻性的关注可能会产生令人惊讶的效果,抑制我们的整体安全意识,使我们对周围存在的深层次危险视而不见,而攻击者也非常乐意利用这些危险。

我经常把现代网络安全比作一套凯夫拉护甲。凯夫拉纤维看似空灵的特性可以阻挡高速子弹和各种现代强大的武器装备。它甚至可能使穿戴者感到有些无敌。然而,相对古老的弓箭武器系统,即公元前1000年左右首次制作的武器,往往可以穿透这种保护。一把锋利的刀,可能是世界上仅次于岩石的第二古老的武器,可以直接切开凯夫拉纤维,就像切碎一件棉质运动衫一样容易。然后还有一个小问题,就是凯夫拉纤维无法保护人体的每一毫米。如果攻击者能找到任何缝隙进行破坏性打击,他们就会 "很像软件中的小的、可利用的区域。

在网络安全方面,许多组织同样容易受到已有8年或10年历史的系统缺陷的影响,用现代计算机术语来说,这使他们有资格获得金表和退休金。但是,如果你认为这些老系统上的缺陷是无害的,那么你的未来可能会有一两个蓝屏的死亡。

一个老兵的弱点

jQuery是最古老和最常用的JavaScript库之一,它是一种开源资源,有助于从事件处理到DOM树的遍历和操作,再到生成动画的一切。它是一个相当重要的工具,并且已经使用了很多年了。人们认为,由于该库在这一点上已经非常成熟,所以它一定是经过了完全的审查,并消除了任何漏洞。

可悲的是,情况并非如此。默认情况下,大多数依赖jQuery的应用程序使用内部库的指示进行验证。例如,对于Apache服务器,这意味着检查.htaccess文件。很少有开发者在设计使用Apache的程序时,可能会想到要检查以确保Apache服务器的更新包括.htaccess。毕竟,Apache为什么要删除这个多年来一直是安全基石的关键组件?

虽然看起来很奇怪,但这正是Apache在2.3.9版本中的做法。显然,每次有程序需要运行时,都要检查.htaccess配置文件,这使事情变得太慢了。删除它可以提高Apache的整体性能,但也产生了一个大多数人不知道的漏洞。如果开发人员懒得检查他们的应用程序是否仍然可以到达.htaccess文件,大多数请求将被简单地接受,而无需审查。

最近,专家们发现了这个漏洞,并指出使用它将允许未经授权的用户在所谓的安全系统上上传和运行外壳或几乎任何类型的代码。这导致在10月份建立了一个被命名为CVE-2018-9206的漏洞警报。但是,安全研究人员很容易发现这个漏洞,这意味着专业的黑客,其唯一的目的是寻找像这样的漏洞,可能已经发现了它。毕竟,尽管事后进行了宣传、打补丁和修复,但几周后就发生了类似的高影响攻击,在每周有数百万人下载的流行的NPM lib上释放了比特币欺骗性的恶意软件

管家做到了

像jQuery一样,Jenkins是一个开源产品,也是同类产品中最受欢迎的一个。由于它有一个类似仆人的有用的名字,Jenkins被许多行业的开发团队用作自动化服务器是有道理的。当Jenkins运行正常时,它是一个非常有用的工具。然而,新发现的缺陷,以及最近发现的一个真正大规模的加密货币开采行动,表明Jenkins也在为坏人做大量工作。

最危险的Jenkins漏洞之一被称为Java反序列化,它被指定为CVE-2017-1000353。这是一个复杂的攻击,但也是一个已经存在了一段时间的攻击。攻击者必须提交两个请求。第一个开始一个双向的下载通道,最初被服务器拒绝。然而,第二个请求增加了一个上传通道,其中包含攻击者想要的任何命令的有效载荷,并利用了payload.jar脚本。一旦发送第二个请求,在未打补丁的Jenkins服务器上允许通信。

即使在打过补丁的服务器上,也存在漏洞。例如,当在Windows环境中运行Jenkins时,默认情况下它使用NT AUTHORITY/SYSTEM账户来授权用户。这很危险,因为SYSTEM在Windows服务器上被授予全部权限。开发人员可以改变授权账户,但往往不这样做。他们不这样做的逻辑是基于这样一个事实,即Jenkins已经存在了很长时间,所以人们认为任何漏洞在很久以前就已经被修补了。

最近,一名黑客利用这些老化的Jenkins漏洞入侵了几个服务器。其目的是在他们能找到的每一个有漏洞的Jenkins实例上添加一个加密货币矿工程序。这些矿工在不断寻找加密货币的过程中占用了宝贵的计算资源。到目前为止,他们已经找到了大约10800个Monero加密货币,价值近350万美元。

旧的东西又是新的

在这两个例子中,漏洞被投机取巧的攻击者在许多人认为是安全的平台上利用了。在防御方面,由于缺乏安全意识的开发,使得这些黑客能够为旧的伎俩注入新的活力。尽管新一轮的成功利用了老化的漏洞,但许多组织并没有制定计划来阻止这种恶性循环。

东西是旧的并不意味着它是无害的。常见的库和资源已经存在多年,但并不意味着它们是完全安全的(例如,目前OWASP排名前十的第9条是专门用来处理使用已知漏洞的组件的)。只有通过勤奋和持续的安全培训,我们才能保护自己不仅不受匍匐在地平线上的危险威胁的影响,而且还能保护那些已经隐蔽地进入我们自己后院的威胁。

查看资源
查看资源

作者

皮特-丹休

Pieter Danhieux是全球公认的安全专家,拥有超过12年的安全顾问经验,并在SANS担任首席讲师8年,教授如何针对和评估组织、系统和个人的安全弱点的攻击性技术。2016年,他被评为澳大利亚最酷的科技人士之一(Business Insider),被授予年度网络安全专业人士(AISA - 澳大利亚信息安全协会),并持有GSE、CISSP、GCIH、GCFA、GSEC、GPEN、GWAPT、GCIA认证。

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

DevSecOps:老的安全漏洞仍在施展新的伎俩

2019年3月27日出版
作者:Pieter Danhieux

原文发表于 DevOps.com.

在网络安全领域,我们经常像猎人一样。我们的眼睛紧紧盯着地平线,扫描下一个爆发性的漏洞(以及正确的设计工具、技术和战术来阻止它)。然而,这种前瞻性的关注可能会产生令人惊讶的效果,抑制我们的整体安全意识,使我们对周围存在的深层次危险视而不见,而攻击者也非常乐意利用这些危险。

我经常把现代网络安全比作一套凯夫拉护甲。凯夫拉纤维看似空灵的特性可以阻挡高速子弹和各种现代强大的武器装备。它甚至可能使穿戴者感到有些无敌。然而,相对古老的弓箭武器系统,即公元前1000年左右首次制作的武器,往往可以穿透这种保护。一把锋利的刀,可能是世界上仅次于岩石的第二古老的武器,可以直接切开凯夫拉纤维,就像切碎一件棉质运动衫一样容易。然后还有一个小问题,就是凯夫拉纤维无法保护人体的每一毫米。如果攻击者能找到任何缝隙进行破坏性打击,他们就会 "很像软件中的小的、可利用的区域。

在网络安全方面,许多组织同样容易受到已有8年或10年历史的系统缺陷的影响,用现代计算机术语来说,这使他们有资格获得金表和退休金。但是,如果你认为这些老系统上的缺陷是无害的,那么你的未来可能会有一两个蓝屏的死亡。

一个老兵的弱点

jQuery是最古老和最常用的JavaScript库之一,它是一种开源资源,有助于从事件处理到DOM树的遍历和操作,再到生成动画的一切。它是一个相当重要的工具,并且已经使用了很多年了。人们认为,由于该库在这一点上已经非常成熟,所以它一定是经过了完全的审查,并消除了任何漏洞。

可悲的是,情况并非如此。默认情况下,大多数依赖jQuery的应用程序使用内部库的指示进行验证。例如,对于Apache服务器,这意味着检查.htaccess文件。很少有开发者在设计使用Apache的程序时,可能会想到要检查以确保Apache服务器的更新包括.htaccess。毕竟,Apache为什么要删除这个多年来一直是安全基石的关键组件?

虽然看起来很奇怪,但这正是Apache在2.3.9版本中的做法。显然,每次有程序需要运行时,都要检查.htaccess配置文件,这使事情变得太慢了。删除它可以提高Apache的整体性能,但也产生了一个大多数人不知道的漏洞。如果开发人员懒得检查他们的应用程序是否仍然可以到达.htaccess文件,大多数请求将被简单地接受,而无需审查。

最近,专家们发现了这个漏洞,并指出使用它将允许未经授权的用户在所谓的安全系统上上传和运行外壳或几乎任何类型的代码。这导致在10月份建立了一个被命名为CVE-2018-9206的漏洞警报。但是,安全研究人员很容易发现这个漏洞,这意味着专业的黑客,其唯一的目的是寻找像这样的漏洞,可能已经发现了它。毕竟,尽管事后进行了宣传、打补丁和修复,但几周后就发生了类似的高影响攻击,在每周有数百万人下载的流行的NPM lib上释放了比特币欺骗性的恶意软件

管家做到了

像jQuery一样,Jenkins是一个开源产品,也是同类产品中最受欢迎的一个。由于它有一个类似仆人的有用的名字,Jenkins被许多行业的开发团队用作自动化服务器是有道理的。当Jenkins运行正常时,它是一个非常有用的工具。然而,新发现的缺陷,以及最近发现的一个真正大规模的加密货币开采行动,表明Jenkins也在为坏人做大量工作。

最危险的Jenkins漏洞之一被称为Java反序列化,它被指定为CVE-2017-1000353。这是一个复杂的攻击,但也是一个已经存在了一段时间的攻击。攻击者必须提交两个请求。第一个开始一个双向的下载通道,最初被服务器拒绝。然而,第二个请求增加了一个上传通道,其中包含攻击者想要的任何命令的有效载荷,并利用了payload.jar脚本。一旦发送第二个请求,在未打补丁的Jenkins服务器上允许通信。

即使在打过补丁的服务器上,也存在漏洞。例如,当在Windows环境中运行Jenkins时,默认情况下它使用NT AUTHORITY/SYSTEM账户来授权用户。这很危险,因为SYSTEM在Windows服务器上被授予全部权限。开发人员可以改变授权账户,但往往不这样做。他们不这样做的逻辑是基于这样一个事实,即Jenkins已经存在了很长时间,所以人们认为任何漏洞在很久以前就已经被修补了。

最近,一名黑客利用这些老化的Jenkins漏洞入侵了几个服务器。其目的是在他们能找到的每一个有漏洞的Jenkins实例上添加一个加密货币矿工程序。这些矿工在不断寻找加密货币的过程中占用了宝贵的计算资源。到目前为止,他们已经找到了大约10800个Monero加密货币,价值近350万美元。

旧的东西又是新的

在这两个例子中,漏洞被投机取巧的攻击者在许多人认为是安全的平台上利用了。在防御方面,由于缺乏安全意识的开发,使得这些黑客能够为旧的伎俩注入新的活力。尽管新一轮的成功利用了老化的漏洞,但许多组织并没有制定计划来阻止这种恶性循环。

东西是旧的并不意味着它是无害的。常见的库和资源已经存在多年,但并不意味着它们是完全安全的(例如,目前OWASP排名前十的第9条是专门用来处理使用已知漏洞的组件的)。只有通过勤奋和持续的安全培训,我们才能保护自己不仅不受匍匐在地平线上的危险威胁的影响,而且还能保护那些已经隐蔽地进入我们自己后院的威胁。

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。