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

跟个风,聊一聊这两天很火的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
  如果觉得本文对你有帮助,可以转发关注支持一下

12月29日最新漂亮的早上好图片,温馨的早晨问候祝福语,彼此安康经历了寒冬,才懂得春天的温暖遇上了疫情,明白生命的宝贵。早上好,珍惜每一天,保护好自己,保重!疫情多地反弹,各自多加防范,愿苍天保佑,人间无险,愿时光转换,病毒早散,愿健康常在家人都市丽人柔芯杯家族全面上线,内柔外稳成就温柔理想型我的胸都这么小了,怎么也会下垂?!都市丽人联合中国纺织品商业协会内衣委员会京东服饰前瞻产业研究院3大权威机构共同发布的中国女性内衣白皮书调查发现不少中国女性对于乳房相关的性知识较为绝了!姆巴佩感情被曝光,29岁模特带2娃,球迷神龟,当干爹了冬日生活打卡季姆巴佩从卡塔尔赛场回来后,他要离队的消息不绝于耳,因为现在他开始对荣誉的追求大于个人待遇,所以他让自己的团队为自己只一个合适的下家,此时姆巴佩的个人感情也被记者曝光了毛哥一千四百六十天畅游天下记(621)毛哥回顾历史,大概是世界上最早的历史之一,有人跑了,有人卷土重来了,有人发达了,有人丢了性命,那时无论那个地方,小国林立,权威时带王冠,城破了,美人也就没有了。毛哥好想体验一下那时ampampquot满眼失望的丧系文案ampampquot头条创作挑战赛1。如果没有眼泪那情绪怎么办。2。如果感情可以看到进度条就好了。3。你说过的那些话都败给了时间。4。愿我们的遇见就是一场错误。5。停止联系我们做过最默契的事。6。所有文案最后对的人会站在你的前途里这得有多大的勇气,才能把曾经的伤当笑话谈。你为什么喜欢我?心之所向,情不自禁。你的偏向从来不是我,可是我会因为你的每一次搭理而受伤。最后对的人会站在你的前途里原来我在你的世界中仅仅负债累累的人,与其坐以待毙,还不如放手去搏一搏负债的人,与其等着去送死,还不如放手去一搏。只要你坚定信念,对生活充满信心,说不定下一个逆行的就是你,成功上岸的人就是你。说实话,负债其实不可怕,可怕是负债的人心己死了,天天心存杂每日省思继续看,看到世界的尽头头条创作挑战赛你觉得我这么做好吗?你觉得这可行吗?什么时候开始,我们的人生要由其他人来主宰?有一种人很致命的软肋就是怕丢人不可否认我也是我曾经有事不敢求救,因为那让我觉得我低头,低生命的伤心作者黎荔十二月,某处最后的黄叶,已摇摇落下,回到大地。呼啸的北风清空了多云的天空,在细枝萧瑟间,一只乱蓬蓬的鸟儿在低低叫着。打开手机,放下电话,都没有什么好消息。看看近来新闻,名词大平原(二百九十三)你走进了我的灵魂你走进了我的灵魂文邱杰东你随风而来迈着轻快的脚步带着浅浅的微笑用那双灵巧的小手弹起了悠扬的竖琴那迷人的旋律在热情的召唤叫醒了冬眠的春当那一束月光斜挂在枝头散落在宁静的乡村我等你期盼回首红尘人世总无情,天涯咫尺依稀两处行回首红尘人世总无情,天涯咫尺依稀两处行。红尘一梦莫相忘,人情两渺茫,最是断肠不语泪千行。时节最断肠,念母泪成行,阴阳两隔海角永相忘。泪沾裳,人不双,相忘江湖两界各一方。此生相忘不知
比iPhone14还火爆,苹果秋季发布会最便宜产品卖断货可能很多人都在讲iPhone14系列平均价格又创新高,这一次苹果秋季发布会的产品都不便宜。其实大家忽略了一件产品,它可是本次苹果秋季发布会最便宜的产品。它就是用于AirPodsPriPhone14标准版跑分出炉确认全系6GB内存在iPhone14发布当天,iPhone14Pro的跑分就已经被海外大神曝光,可以看到A16其实就是一款挤牙膏芯片,对比老款提升非常有限。不过,大家一直非常期待iPhone14标准不耗电的空调发现记开启地球的冷库和热库,实现人类的能源自由头图上帝在设计地球的过程中,已经埋入了一个非常的巧妙方案,可以避免地球的温度过高或者过低,保持地球温度的平衡,才可以使得地表的人类具备一个稳定生活环境,这个奇妙的设计,目前,还没有为什么从国际空间站返回地球的航天器不会在大气层中燃烧?地球的大气层保护地球免受太空物体的轰炸一旦进入大气层,不速之客就会开始点燃。由于这种保护,大多数陨石都不会到达地球表面。如果没有燃烧太空旅行者的大气层,我们的星球将经常受到外星物体木星有多可怕?内部环境相当恐怖,仅仅一个风暴就能放下3个地球木星,一个永远都在发生风暴的星球,甚至有的风暴,一刮就是好几百年。如果将这些风暴放到地球上,那可以直接将地球撕碎。太阳系最大的行星木星就拿木星最典型的风暴大红斑来说,它可以装下3个2029年4月13日,阿波菲斯小行星可能会撞击地球,概率多大?众所周知,太空中时常有巨大的岩石路过地球,甚至撞击地球,对我们造成伤害,恐龙就是一个惨痛的教训。如果人类需要文明的持续发展,就必须要有一个针对小行星的防御计划。当然,我们所说的是那早起运动读书存钱,我过上了向往的生活头条创作挑战赛从我第一次通宵加班,因为业绩不达标,连续一周没睡过一个安稳觉。那个时候我就告诉自己,这不是我想要的生活。如今我38岁,没有了固定工资,也无需过多的社交活动,我却爱疯了不想被人当软柿子捏,牢记这几句话有句话是这样说的嘴巴恶毒的人,人尽皆知心眼恶毒的人,无人知晓。由此提醒人们,面对别人明里暗里欺负时,没必要在口舌上争高下,最要紧的是拿出硬招,让对方无计可施。01hr话不说全,留有我们好像什么都不缺,又好像什么都没有我们是怎样的人呢?好像什么都不缺,又好像什么都没有好像什么都明白,又好像什么都不懂好像什么都学会,又好像什么都不会好像什么都想要,又好像什么都不要好像什么都挺好,又好像什么都不好。人到中年,卸下你的累(写的很好)茅盾文学奖得主麦家曾说人的一生,总是在寻找一种平衡。选择忠贞的人,永远会得到忠贞选择勇敢的人,最后也是用勇敢来结束。诚然如此,人生路就像一道选择题,不管正确与否,不会老师给你批改。再见!比赛结束,最像科比的男人宣布退役欧锦赛激烈异常看得人血脉喷张同期举办的美洲杯则少人问津他们的进度比欧锦赛稍快已经来到了半决赛这很少人知道吧美洲杯半决赛美国对阵阿根廷最终结果是阿根廷8273干翻美国成功阻止后者卫冕