范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

跟个风,聊一聊这两天很火的Log4j核弹级漏洞

  相信大家这两天应该被这么一条新闻刷屏了吧:
  这个漏洞到底是怎么回事?
  核弹级,真的有那么厉害吗?
  怎么利用这个漏洞呢?
  我看了很多技术分析文章,都太过专业,很多非Java技术栈或者不搞安全的人只能看个一知半解,导致大家只能看个热闹,对这个漏洞的成因、原理、利用方式、影响面理解的不到位。
  这篇文章,我尝试让所有技术相关的朋友都能看懂: 这个注定会载入网络安全史册上的漏洞,到底是怎么一回事!  log4j2
  不管是什么编程语言,不管是前端后端还是客户端,对 打日志 都不会陌生。
  通过日志,可以帮助我们了解程序的运行情况,排查程序运行中出现的问题。
  在Java技术栈中,用的比较多的日志输出框架主要是 log4j2 和logback 。
  今天讨论的主角就是log4j2。
  我们经常会在日志中输出一些变量,比如:  logger.info("client ip: {}", clientIp)
  现在思考一个问题:
  假如现在想要通过日志输出一个Java对象,但这个对象不在程序中,而是在其他地方,比如可能在某个文件中,甚至可能在网络上的某个地方,这种时候怎么办呢?
  log4j2的强大之处在于,除了可以输出程序中的变量,它还提供了一个叫 Lookup 的东西,可以用来输出更多内容:
  lookup,顾名思义就是查找、搜索的意思,那在log4j2中,就是允许在输出日志的时候,通过某种方式去查找要输出的内容。
  lookup相当于是一个接口,具体去哪里查找,怎么查找,就需要编写具体的模块去实现了,类似于面向对象编程中多态那意思。
  好在,log4j2已经帮我们把常见的查找途径都进行实现了:
  具体每一个字的意思,这里就不详述了,这不是本文的重点。  JNDI
  主要来看其中那个叫JNDI的东西:
  JNDI即  Java Naming and Directory Interface  (JAVA命名和目录接口),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。
  看不懂?看不懂就对了!
  简单粗暴理解:有一个类似于字典的数据源,你可以通过JNDI接口,传一个name进去,就能获取到对象了。
  那不同的数据源肯定有不同的查找方式,所以JNDI也只是一个上层封装,在它下面也支持很多种具体的数据源。
  LDAP
  继续把目光聚焦,咱们只看这个叫 LDAP 的东西。
  LDAP即  Lightweight Directory Access Protocol (轻量级目录访问协议),目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读写性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好像它的名字一样。
  看不懂?看不懂就对了!
  这个东西用在统一身份认证领域比较多,但今天也不是这篇文章的重点。你只需要简单粗暴理解:有一个类似于字典的数据源,你可以通过LDAP协议,传一个name进去,就能获取到数据。  漏洞原理
  好了,有了以上的基础,再来理解这个漏洞就很容易了。
  假如某一个Java程序中,将浏览器的类型记录到了日志中:  String userAgent = request.getHeader("User-Agent"); logger.info(userAgent);
  网络安全中有一个准则: 不要信任用户输入的任何信息 。
  这其中, User-Agent 就属于外界输入的信息,而不是自己程序里定义出来的。只要是外界输入的,就有可能存在恶意的内容。
  假如有人发来了一个HTTP请求,他的 User-Agent 是这样一个字符串:
  ${jndi:ldap://127.0.0.1/exploit}
  接下来,log4j2将会对这行要输出的字符串进行解析。
  首先,它发现了字符串中有  ${} ,知道这个里面包裹的内容是要单独处理的。
  进一步解析,发现是JNDI扩展内容。
  再进一步解析,发现了是LDAP协议,LDAP服务器在127.0.0.1,要查找的key是exploit。
  最后,调用具体负责LDAP的模块去请求对应的数据。
  如果只是请求普通的数据,那也没什么,但问题就出在还可以请求Java对象!
  Java对象一般只存在于内存中,但也可以通过序列化的方式将其存储到文件中,或者通过网络传输。
  如果是自己定义的序列化方式也还好,但更危险的在于:JNDI还支持一个叫命名引用(Naming References)的方式,可以通过远程下载一个class文件,然后下载后加载起来构建对象。
  PS:有时候Java对象比较大,直接通过LDAP这些存储不方便,就整了个类似于二次跳转的意思,不直接返回对象内容,而是告诉你对象在哪个class里,让你去那里找。
  注意,这里就是核心问题了: JNDI可以远程下载class文件来构建对象!!! 。
  危险在哪里?
  如果远程下载的URL指向的是一个黑客的服务器,并且下载的class文件里面藏有恶意代码,那不就完犊子了吗?
  还没看懂?没关系,我画了一张图:
  这就是鼎鼎大名的JNDI注入攻击!
  其实除了LDAP,还有RMI的方式,有兴趣的可以了解下。  JNDI 注入
  其实这种攻击手法不是这一次出现了,早在2016的blackhat大会上,就有大佬披露了这种攻击方式。
  回过头来看,问题的核心在于:
  Java允许通过JNDI远程去下载一个class文件来加载对象,如果这个远程地址是自己的服务器,那还好说,如果是可以被外界来指定的地址,那就要出大问题!
  前面的例子中,一直用的127.0.0.1来代替LDAP服务器地址,那如果输入的User-Agent字符串中不是这个地址,而是一个恶意服务器地址呢?  影响规模
  这一次漏洞的影响面之所以如此之大,主要还是log4j2的使用面实在是太广了。
  一方面现在Java技术栈在Web、后端开发、大数据等领域应用非常广泛,国内除了阿里巴巴、京东、美团等一大片以Java为主要技术栈的公司外,还有多如牛毛的中小企业选择Java。
  另一方面,还有好多像kafka、elasticsearch、flink这样的大量中间件都是用Java语言开发的。
  在上面这些开发过程中,大量使用了log4j2作为日志输出。只要一个不留神,输出的日志有外部输入混进来,那直接就是远程代码执行RCE,灭顶之灾!  修复
  新版的log4j2已经修复了这个问题,大家赶紧升级。
  下面是log4j2官网中关于JNDI lookup的说明:
  我通过搜索引擎找到了缓存的12月10号前的快照,大家对比一下,比起下面这个缓存,上面那一版多了哪些东西?
  答案是:修复后的log4j2在JNDI lookup中增加了很多的限制:  默认不再支持二次跳转(也就是命名引用)的方式获取对象
  只有在log4j2.allowedLdapClasses列表中指定的class才能获取。
  只有远程地址是本地地址或者在log4j2.allowedLdapHosts列表中指定的地址才能获取
  以上几道限制,算是彻底封锁了通过打印日志去远程加载class的这条路了。
  最后,手机前的各位Java小伙伴儿们,你们写的程序中有用到log4j2吗,有没有某个地方的输出,有外部的参数混进来呢?
  赶紧检查检查哦!
  大家弄懂这个漏洞了吗?
  如果觉得写得还不错,欢迎分享转发,点个赞,感谢大家的阅读。  原文链接:https://mp.weixin.qq.com/s/4MnOQGg7LBYCUE7BuuGfEQ
  作者:轩辕之风O
  如果觉得本文对你有帮助,可以转发关注支持一下

程序员2021。8。310网曝阿里开除10名员工,因对外泄露性侵指控内网文章据彭博社报道,因涉及讨论内部事务要求匿名的知情人士透露,阿里巴巴上周对内宣布,针对周姓员工在内网发帖控诉遭前公司经理侵犯的文章被iQOO9放大招,5000mAh120W144Hz,4nm强芯坐镇vivo是一家专注于研发与设计的智能手机品牌,自创立至今给行业带来了很多惊艳作品,随着5G时代的到来以及技术不断成熟,vivo发展速度也日新月异,实力也在不断壮大。在今年全球第二季小米用不用华为鸿蒙,谷歌说的算?鸿蒙发布已经快三个月了,虽然国内各大家厂商都在积极和华为合作,但是鸿蒙的下载量仍然不太乐观,即便是国内三大运营商也在为华为专门定制手机,想突破3。6亿下载量仍困难重重。很多网友高呼当手机出现这几种情况时,就可以换新机了当下流行的智能手机中,除了低端机器,中高端手机已经步入性能过剩时代了,在日常生活使用手机中,如果手机出现以下几种情况时,建议大家可以直接换一部新手机了。一手机厂商不再更新手机系统时小米12Ultra概念机曝光6250mAh大电池60W快充Tech分析狮8月28日消息,大家都应该知道,现如今市场上的小米11Ultra旗舰手机,其销量虽然并不如华为Mate系列那么火爆,但对比其他安卓旗舰机来说,也算是非常不错的了。现在小米工程师聊MIUI12。5增强版背后的故事,内含第二批升级名单8月27日消息据小米社区MIUI公告君官方账号,今日小米社区请来了两位工程师,向大家讲解MIUI12。5增强版的背后的故事。其中,一位是2015年加入小米的张楠,手机部系统软件部系别买骁龙888手机了!小米12系列已备案,或首发骁龙898?今年搭载骁龙888芯片的智能手机均出现了不同程度的翻车,但由于绝大部分厂商在自家的旗舰手机上只能选择高通骁龙8系列芯片,所以即便是翻车也得继续使用骁龙888是首款采用X1超大核设计试驾大众ID。4一台不玩噱头的电动车,消费者会接受吗?特斯拉小鹏蔚来以及理想等新势力车型,无疑是大部分消费者购买新能源车型的首要考虑对象。而传统品牌在新能源领域的存在感相对较低,这其中的原因,除了品牌给人固有的印象外,最主要的还是选择科技三分钟阿里味儿?阿里将开除泄露性侵指控帖子的员工1。阿里巴巴将开除10名泄露性侵指控帖子的员工8月30日消息,阿里巴巴将开除对外泄露控诉前公司经理性侵内网文章的10名员工。知情人士称,这些员工将内网控诉文章的截图除去个人水印后对IPFS是什么?IPFS值得投资吗?没接触过这个行业可以说是很陌生了,对于同时通过区块链接触数字货币的人群来说,大概率听说过,因为它在区块链行业中是大热。正式的解释是这样的,我们来看一下IPFS的全名是InterPl高防ip高防服务器防御ddos攻击和CC攻击最近不少来咨询的客户都问小蚁君,高防IP是什么原理,客户接入这个高防IP的话需要做些什么准备,今天小蚁云安全团队就给大家科普一下什么是高防IP,他的原理是什么,客户接入需要做些什么
看齐QQ,微信再次上线奇葩功能前段时间,我们跟大家聊过QQ更新内置虚幻引擎的事。QQ终于大更新,网友微信彻底输了!更新后安装包容量高达879MB,我想很多16G内存的机子是装不下了不过QQ功能复杂是大家的共识,跌超99又拉涨11562!币圈茅台闪崩后起死回生?一场恐怖的断崖式崩盘,让虚拟货币市场掀起大风暴。这次事件的主角是曾经头顶币圈茅台财富光环的LUNA币。在其辉煌时,LUNA币曾位列虚拟货币市值排行榜第十位。然而,5月9日5月11日比特币跌上热搜币圈茅台快跌没了虚拟币炒作一地鸡毛背后北京时间5月12日,比特币经历一轮大跌,由前一日约3。2万美元枚的高点一路狂泄,交易价格跌破2。7万美元,创2020年12月以来新低,以太坊跌破1800美元,刷2021年7月以来的快手电商的2022背靠信任,发力品牌21世纪经济报道记者白杨北京报道5月13日,快手电商在2022引力大会上宣布,2022年的业务战略将升级为大搞信任电商大搞快品牌大搞品牌大搞服务商。2021年7月,快手首次提出三个小米推出十三香,5500mAh台积电6nm,超越iPhone13ProMax感动人心,价格厚道是小米做手机的初衷,即便走高端路线,仍然推出子品牌Redmi主打极致性价比,比较热门的是K系列和Note系列,这也是该品牌主打的两个系列,K系列是旗舰系列,推出的小米众筹剃须刀崛起,高质低价不输飞利浦,14天卖出28万台导语小米众筹剃须刀崛起,高质低价不输飞利浦,14天卖出28万台在10年前,国内的剃须刀行业只有飞科能够跟飞利浦分庭抗礼,大部分的市场份额都被这两家占据。而现在出现的新兴品牌越来越多618省钱作业包括松下小米等高端家电,功效鲜明且性价比高不出意料,距离618还有一个月,微信群的朋友已经开始讨论起了省钱攻略。有的朋友还开始安利起了李佳琪的直播带货安排。作为一名家电销售员,很多朋友也开始问我一些关于选购家电的意见。像冰荣事达也学小米模式,20大贴心设计,79元舒缓解压提升幸福感科技的进步,就是给人们带来便捷,我相信这句话大家都一定不会反驳,但是随着家电产品的种类繁多,琳琅满目,让人们经常在选择中无所适从,盲目跟风。这几年,新兴的一种电器产品,智能足浴桶逐做一个像微软一样的文档平台,开源文档工具docfx无论是团队开发还是个人开发,一个漂亮的技术文档是至关重要的。docfx是微软官方支持的一个dotnet平台的API文档生成工具,功能及其强大,自定义程度极高,微软自己的MSDN构建没有最省事只有粤省事粤省事APP重磅上线5月13日,全国用户量最大服务集成度最高活跃度最热的省级移动政务服务平台粤省事,正式发布APP版本,这是广东数字政府改革进入2。0建设阶段的标志性成果,也是广东省贯彻落实以人民为中孝敬爸妈送健康,云米AI油烟机Flash2烟灶套装是首选还有一个多月就要过春节了,想着给爸妈买点年货,思来想去,犹豫不决。想着父母为了我们操劳一生,为他们准备年货自然以健康实用为主,正值大年三十晚上要准备年夜饭,爸妈都会在厨房一直准备,