城市直播房产教育博客汽车
快传网
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

由log4j远程执行漏洞说起

6月14日 无镇楼投稿
  这几天让IT从业人员忙的不可开交的头等大事便是Log4j的远程执行漏洞了,我们先看一个简单的PoC:importorg。apache。logging。log4j。LogMimportorg。apache。logging。log4j。LpublicclassMain{privatestaticLoggerloggerLogManager。getLogger();publicstaticvoidmain(String〔〕args){logger。error(命令行参数:{},args〔0〕);或logger。error(args〔0〕)}}
  先前往dnslog网站,申请一个子域名,假如是subdomain。dnslog。cn。
  然后执行javaMain{jndi:ldap:subdomain。dnslog。cnany},我们在dnslog网站上刷新请求记录,便会看到申请的子域名被访问了。
  如果你是一个开发者,你会知道我们的代码里面毫无疑问充斥着大量这种用法。如果你是一个安全人员,自然知道当恶意访问人员输入时可不只是访问个域名就完事,很有可能把主机密码就传到指定网站了。
  那解决的办法在各大厂、安全公司等也已经公布了,无非以下几种:升级log4j版本替换成logback移除log4jjar包里有关jndi的类PatternLayout的配置使用m{nolookups}代替m在log4j2。component。properies配置文件添加配置log4j2。formatMsgNoLookupstrue在启动命令添加Dlog4j2。formatMsgNoLookupstrue系统环境变量中将FORMATMESSAGESPATTERNDISABLELOOKUPS设置为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)
  需求是实现了,那还有吗?
  如果是一个资深的研发人员就会问了,有预计的使用频率吗,如果使用频率非常高,性能就需要注意不能拖后腿;这个特性如果出现问题,需要关闭,最好能动态关闭;这个特性实际使用了多少次,耗时多少,报错多少;这个是否会在多线程环境下执行,这段代码是否线程安全;用户的输入能否对服务器产生破坏,保存后对其他用户是否产生安全问题。
  在一个成熟的企业中,需要考虑诸如此类的问题。当然,很多东西可以模板化,减少开发人员心智,比如CICD实践中的自动化测试和DevSecOps。最后探讨技术选型。
  为什么这次的影响这么大,因为它是基础库,比如dubbo、kafka、flink等很多框架和中间件都用到了它。同时,这从侧面说明log4j2是一个比较值得选取的日志库。
  那回到技术选型,以日志为例,我们需要考虑哪些方面呢?
  功能。功能是否契合企业需求,缺失功能是否在未来计划,或者扩展实现难度。如果功能都不满足,那自然pass。log4j、logback、log4j2都提供了将日志输出的功能,功能上都能满足,细节根据各企业自身情况而定了。
  性能。性能自然是非常重要的,生产是没法debug的,只能通过日志来跟踪某一个事务的情况,如果日志耗时太多,TPS自然受影响,用户体验变差,还可能导致硬件成本上升。log4j2的性能就比logback要出色,logback比log4j要出色。
  群众基础和易用性。如果没人会用,使用起来也困难,大概率很难被接受,也很难流行。文档是否介绍了架构设计,也有使用文档,文档是否支持多种语言(本土语言)。log4j2的配置就比较多,特别是想要较高性能时,配置更是复杂。
  稳定性与活跃度。生产上使用,肯定要求稳,不可能三五天做一次修复升级。如果功能还未按计划完全实现,那么迭代升级过程中会碰到诸多问题,需要有较多的人提前使用反馈意见做改进,出现问题时,能够通过搜索引擎或其他社群解决。
  开源协议。如果不开源,那么使用时心中便会有诸多不安,万一哪个地方有雷都不知道,出了问题,自己能解决的概率也极低。比如MySQL的双协议,要求要么交费,要么开源改动,不如ApacheLicence等宽松,导致很多公司开始选择PostgreSQL。
  生态。与企业的整套框架是否有冲突,开发流程上是否需要做额外的事情。比如很多框架用了log4j2,贸然引进logback,势必多出工作量来排除log4j2的依赖。比如开发流程工具只支持logback(当然这种场景基本没有),那么使用log4j2就需要再仔细想想了。
  架构设计与代码质量。如果代码的架构设计较差,扩展性没设计好,那么企业内部做扩展(二次开发)时,只能修改代码,与源头分叉,后续几乎没法合并,无法反哺开源社区,企业内部后续升级也十分困难。如果代码质量太差,一步一坑,大家直接用脚投票的。
  前瞻性。架构设计要有一定的前瞻性,以应对未来的变化。功能建设上也要有一定的前瞻性,实现、验证、上线三者之间还是需要一定时间的。比起等待,大部分人都是想我现在要。
投诉 评论 转载

触控屏显温不烫嘴12块9到手奥克斯AUX温控屏保温杯上手简评Tony哥的廉价国货晒单20220308。2天气暖和了,不锈钢保温杯也可以放个假,换成方便泡茶的玻璃保温杯了,车站12块9的奥克斯AUX触控屏保温杯到手,开箱给车友们验个……由log4j远程执行漏洞说起这几天让IT从业人员忙的不可开交的头等大事便是Log4j的远程执行漏洞了,我们先看一个简单的PoC:importorg。apache。logging。log4j。LogMana……2022年度山西省中央引导地方科技发展资金项目开始申报为更好地发挥中央引导地方科技发展资金对我省创新发展的支撑和引领作用,日前,我市依照省科技厅相关精神,面向全市征集既符合中央专项资金使用要求,又符合我省转型和高质量发展要求的项目……鸿蒙HarmonyOSArkUI(eTS)组件通信方式总结之鸿蒙HarmonyOSArkUI(eTS)组件间通信涉及组件属性与显示、父子组件间通信、祖孙组件间通信、不相干组件间通信等,而组件两两间通信也有单向与双向之分。通过学习HDC2……法治时评整治超时加班就得动真格赵志疆据媒体报道,最近一段时间,北京、山东、安徽、河南、广西等多地人社部门宣布,集中排查整治超时加班问题,检查对象主要是互联网(平台)企业等超时加班问题易发多发的重点行业……为什么MySQL8要无情地抛弃查询缓存?这里面到底发生了什么MySQL的查询缓存,很多朋友应该听说或者使用过,因为以前流行的一句话:现在查询这么慢,你可以开启查询缓存试试,曾经作为MySQL性能提升的一个重要特征,查询缓存为什么会被My……手机APP广告乱象何时休?超级烦人的App开屏广告终于被整治了,68家企业被要求迅速整改,但也有部分个例依然不听话,想保住用户口碑,就要倾听用户心声!进入移动互联时代以来,各种APP成为我们工作、学习、……你从出生到死去所发生的一切早已注定决定论是成立的吗?一个人从生到死所发生的一切都是有每个人的剧本,是冥冥中注定的。因为我在23岁时梦见和两个女伴一起坐火车去另一个城市不回来,并辞去了家乡国企的工作,这个梦当时告诉了两个室友,她们……iPhone的抬起唤醒功能有用吗?嗯,有用,我的iPhone7,我已经习惯了这个功能了。因为有时候看时间,不太需要专门按一下,或是打开手机,这些时候,让人觉得还是很方便的。我买了锤子坚果Pro2,现在也有……比特早报数字人民币试点再增11城,天数智芯发布通用GPU天垓2022年4月4日消息,昨夜今晨,科技圈都发生了哪些大事?行业大咖抛出了哪些新的观点?比特网为您带来值得关注的科技资讯:数字人民币试点地区再增11城日前,人民银行召……央企国资云是什么?以后电信会掌控全局?而大家看个图哈中国电信作为以后的央企国资云,是唯一的全业务综合业务运营商,可以这样理解。以后的数据保护都要经过中国央企国资云的审核和备份,增加安全性,构建安全防护体系。……余承东18点突然发文,华为给开学新生,准备好了教育福利今年,虽然iPhone12系列热销,苹果营收同比大涨,小米新机一款接着一款出现,并成功站稳高端市场,就连vivo子品牌iQOO和OPPO矩阵品牌realme,也有长足进步。但是……
谷歌吊扇真的这么牛?竟然还是智能的?数字人民币会不会干死支付宝和微信支付?超大城市首次放开,自动驾驶又有突破性进展佩戴助听器久了,听力会变差吗?科技冬奥凝聚未来力量新一代游戏利器,4D振感加持下,Reno6Pro竟有这种体验观察丨从两万元的机器狗到逼真的虚拟人,赛博空间来了?14款润唇膏对比检测DHC检出重金属欧缇丽小蜜媞去死皮效果差传分众传媒入局互联网医疗,互联网医疗企业上市潮加速你现在消费有几种支付方式了?手机不停地收到大量验证码短信怎么办?简单设置有效屏蔽轰炸短信这款索尼新机有点不一般!屏幕趋于完美,或明年发布
我想我已经活到了一个尴尬的年龄孩子咳嗽长期不止需警惕鼻后滴漏综合征唐顺宗为什么只做了6个月的皇帝就禅让怎么买演唱会门票(国外演唱会门票在哪里买)款宝宝多钙食谱推举男士爽肤水有什么用男士爽肤水的使用小商家眼中的双11:无处安放的焦虑vivo首款折叠屏手机XFold官宣4月11日发布XNote干货分享祛斑就用祛斑散疗效验证餐饮业成本核算流程图(餐饮业成本核算明细表格)波音欲重启中国市场!美政府希望放波音一条生路,自己却笑里藏刀现代人为什么比古代人笨

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁