1.java.util.logging类摘要
2.log4j 远程命令执行漏洞原理及修复方案
3.java.lang.OutOfMemoryError: PermGen space
java.util.logging类摘要
Java.util.logging 是源码 Java 中用于日志记录的一组核心类。它提供了多种处理日志的源码组件,如:ConsoleHandler: 这个 Handler 将日志记录输出到标准错误输出(System.err),源码用于显示即时的源码错误信息。
ErrorManager: 它能够附加到 Handler,源码当 Handler 处理日志过程中遇到错误时,源码文库网站系统源码ErrorManager 会负责处理这些异常。源码
FileHandler: 专门用于简单文件日志记录,源码将日志信息保存到指定的源码文件中。
Formatter 类用于格式化 LogRecords,源码为日志信息提供清晰的源码呈现方式,如:Formatter: 提供了基本的源码日志记录格式化功能。
MemoryHandler: 在内存中使用循环缓冲区,源码摆渡攻击源码用于暂存日志请求,源码以便后续处理。源码
SimpleFormatter: 以易于阅读的格式输出 LogRecord 的简洁摘要。
日志记录的控制和管理主要通过以下类完成:Handler: 是 Logger 与实际日志输出之间的桥梁,负责接收和处理 Logger 传递的日志信息。
Level: 定义了一组标准的日志级别,如 FINE、INFO、WARNING 等,用于控制日志的输出级别。
Logger: 用于记录特定系统或应用组件的日志消息,是源码筛选asp日志记录的核心对象。
在安全性方面,LoggingPermission类允许在 SecurityManager 的监控下,确保只有经过授权的代码才能调用日志控制方法,如设置 Logger 的级别。 最后,LogManager是一个全局的单例对象,它维护了 Logger 和日志服务的共享状态,确保日志系统的协调运作。 网络日志记录可以通过 SocketHandler实现,而 StreamHandler则是基于流的日志处理方式,支持实时输出。对于 XML 格式,电脑耗材源码有 XMLFormatter提供转换功能,将 LogRecord 格式化为标准的 XML。log4j 远程命令执行漏洞原理及修复方案
年月9日,一场震惊全球的信息安全事件——log4j远程命令执行漏洞爆发,无数系统陷入了危机之中。作为一款广泛应用于开发的日志管理工具,log4j原本是为了方便地记录动态内容,如通过${ sys:user.dir}获取系统变量,却因一个微妙的漏洞成为攻击者的武器。漏洞根源在于jndi解析器,它本应安全地从外部获取Java对象,却不幸被恶意利用,zxingjar源码解析允许攻击者通过控制日志内容,引导目标服务器执行来自恶意URL的代码。
漏洞利用方式看似简单,只需在web服务的日志中插入如${ jndi:ldap://}这样的攻击字符串,最初,攻击者只需在搜索引擎输入或在URL中添加此类代码即可得逞。幸运的是,随着安全意识的提高和快速响应,目前大部分网站已成功修复。
要检测是否存在漏洞,可以借助DNSLog.cn提供的工具,通过自动生成的子域名进行测试。如果服务器被感染,它会尝试连接并解析xxx.dnslog.cn,检测结果会在网站上显示。然而,由于服务器的缓存机制,初次成功后可能需要一段时间才能再次进行检测。
此次漏洞影响了log4j 2.0-2..1版本,但幸运的是,log4j 2..0-RC2版本已经修复了这个问题。漏洞的核心是攻击者通过构造恶意代码在服务器上执行shell命令。验证漏洞的常见方法是搭建Maven项目和web服务,然后在URL中附带攻击字符串进行探测。
面对漏洞,企业需要采取紧急措施以降低风险。首先,强烈建议升级到最新版本log4j 2..0.RC2。其次,企业可以配置Web应用防火墙(WAF),通过正则表达式等技术阻止恶意输入。同时,考虑禁用lookup功能(log4j2.formatMsgNoLookups = true),尽管这可能对低于2.的版本带来影响,且需注意MESSAGEPATTERNDISABLE_LOOKUPS的正确配置。
另外,一种可行的解决方案是禁用JndiLookup类,以阻止jndi解析器的活动。这可以通过删除log4j-core.jar中的JndiLookup.class,需要研发团队的配合,或者利用Java Instrument技术,修改JVM启动时的javaagent,强制JndiLookup.lookup()返回空,这种方法成本较低,适用于所有log4j版本和框架。
一个更安全的选择是转向log4j-to-slf4j,通过引入相关jar包,自动将log4j的日志转换为SLF4J格式,从而避免漏洞。在log4j的LogManager加载SLF4JProvider时,如果未引入logback,日志将无法显示。一旦引入logback,便可以放心使用它来记录日志。
尽管存在反射修改Interpolator的strLookupMap以移除JndiLookup实例的尝试,但这种方法因log4j版本差异而可能增加修复难度,因此并不推荐。对于更详细的实施步骤和示例,可以参考luckzj/log4j-agent和log4j-to-slf4j的官方文档。
在这个危机时刻,快速响应和正确的安全措施是关键,让我们共同努力,确保系统的安全,防止类似的攻击再次发生。
java.lang.OutOfMemoryError: PermGen space
å å溢åºã
å¦æä½ çåºç¨ä¸æå¾å¤CLASSçè¯,å°±å¾å¯è½åºç°PermGen spaceé误,
è¿ç§é误常è§å¨webæå¡å¨å¯¹JSPè¿è¡pre compileçæ¶åãå¦æä½ çWEB APPä¸ä½¿ç¨äºå¤§éç第ä¸æ¹jar, å ¶å¤§å°è¶ è¿äºjvmé»è®¤ç大å°(4M)
é£ä¹å°±ä¼äº§çæ¤é误信æ¯äºã
解å³æ¹æ³ï¼ æå¨è®¾ç½®MaxPermSize大å°
ä¿®æ¹TOMCAT_HOME/bin/catalina.sh
å¨âecho "Using CATALINA_BASE: $CATALINA_BASE"âä¸é¢å å ¥ä»¥ä¸è¡ï¼
JAVA_OPTS="-server -XX:PermSize=M -XX:MaxPermSize=m
建议ï¼å°ç¸åç第ä¸æ¹jaræ件移置å°tomcat/shared/libç®å½ä¸ï¼è¿æ ·å¯ä»¥è¾¾å°åå°jar ææ¡£éå¤å ç¨å åçç®çã