framework log4j / logback / slf4j

s

Java安全之log4j反序列化漏洞分析

https://www.cnblogs.com/nice0e3/p/14531327.html

http://blog.nsfocus.net/apache-log4j-deserialization-vulnerability/

北京时间18日清晨,Apache Log4j 被曝出存在一个反序列化漏洞(CVE-2017-5645)。攻击者可以通过发送一个特别制作的2进制payload,在组件将字节反序列化为对象时,触发并执行构造的payload代码。

该漏洞主要是由于在处理ObjectInputStream时,接收器对于不可靠来源的input没有过滤。可以通过给TcpSocketServer和UdpSocketServer添加可配置的过滤功能以及一些相关设置,可以有效的解决该漏洞。目前Log4j官方已经发布新版本修复了该漏洞。

【漏洞分析】
Apache Log4j-2是美国阿帕奇(Apache)公司的基于Apache Log4j框架进行重构和升级,引入了大量丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组件等,并通过定义每一条日志信息的级别,使其能更加细致地控制日志的生成过程。Apache Log4j2日志框架被大量用于业务系统开发,用来记录日志信息。当系统日志配置使用带有Context lookups的非默认Pattern Layout时,攻击者可构造包含递归查找的恶意输入数据,成功利用此漏洞将触发无限循环,最终导致系统崩溃。

相关地址:

http://cve.mitre.org/cgi-bin/cvename.cgi?name=%09CVE-2017-5645

https://issues.apache.org/jira/browse/LOG4J2-1863

http://seclists.org/oss-sec/2017/q2/78

受影响的版本

所有Apache Log4j 2.*系列版本:

  • Apache Log4j 2.0-alpha1 – Apache Log4j 2.8.1

不受影响的版本

  • Apache Log4j 2.8.2

规避方案

  • 使用Java 7+的用户应立即升级至2.8.2版本或者避免使用socket server的相关类。

参考链接:

https://issues.apache.org/jira/browse/LOG4J2/fixforversion/12339750/?selectedTab=com.atlassian.jira.jira-projects-plugin:version-summary-panel

  • 使用Java 6的用户应该避免使用TCP或者UDP 的socket server相关类,用户也可以手动添加2.8.2版本更新的相关代码来解决该漏洞。

参考链接:

https://git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;h=5dcc192

 

MAVEN 引用方式:
        <dependency>
              <groupId>org.apache.logging.log4j</groupId>
              <artifactId>log4j-core</artifactId>
              <version>2.17.0</version>
        </dependency>
        <dependency>
              <groupId>org.apache.logging.log4j</groupId>
              <artifactId>log4j-api</artifactId>
              <version>2.17.0</version>
        </dependency>
              <artifactId>log4j-core</artifactId>
              <version>2.17.0</version>
        </dependency>
        <dependency>
              <groupId>org.apache.logging.log4j</groupId>
              <artifactId>log4j-api</artifactId>
              <version>2.17.0</version>
        </dependency>

 

 

Log4j 1.x版 引发线程blocked死锁问题 / 使用apache log解决高并发下log4j引起大量线程block问题

http://www.aiprograming.com/b/pengpeng/23

http://zl378837964.iteye.com/blog/2373591

http://m.blog.csdn.net/article/details?id=52401328

Apache Log4j是一个基于Java的日志记录工具,用起来非常方便,但是Log4j 1.x如果使用不慎,会引起死锁问题,进行导致整个网站的宕机

 

 

WebLog Expert V5.6 Beta 3

http://wt.duote.com/soft/6057.html

http://70.duote.com.cn/wlexpert.exe

WebLog Expert 能够分析网站的流量记录,将原始的流量记录分析出Activity statistics、Access statistics、Information about visitors、Referrers、Information about errors等基本而重要的流量信息,帮助你了解网友对于你的网站的使用状况。

 

webloger digger ?

 

 

http://guoqinhua1986-126-com.iteye.com/blog/231244

 

********************LOG4J配置文件 log4j.properties*********** 
# Configure logging for testing: optionally with log file 
log4j.rootLogger=WARN, stdout 
# log4j.rootLogger=WARN, stdout, logfile 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n 
log4j.appender.logfile=org.apache.log4j.FileAppender 
log4j.appender.logfile.File=target/spring.log 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

 

package com.idemfactor.crm.dao;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.idemfactor.crm.model.Role;

/**
 * Data access object (DAO) for domain model class Role.
 * 
 * @see com.idemfactor.crm.model.Role
 * @author MyEclipse Persistence Tools
 */

public class RoleDAO extends HibernateDaoSupport {
    private static final Log log = LogFactory.getLog(RoleDAO.class);
    // property constants
    public static final String ROLE_NAME = "roleName";

    protected void initDao() {
	// do nothing
    }

    public void save(Role transientInstance) {
	log.debug("saving Role instance");
	getHibernateTemplate().save(transientInstance);
	log.debug("save successful");
    }

    public void delete(Role persistentInstance) {
	log.debug("deleting Role instance");
	getHibernateTemplate().delete(persistentInstance);
	log.debug("delete successful");
    }

    public Role findById(java.lang.Integer id) {
	log.debug("getting Role instance with id: " + id);
	Role instance = (Role) getHibernateTemplate().get(
		"com.idemfactor.crm.model.Role", id);
	return instance;
    }

    public List<Role> findByExample(Role instance) {
	log.debug("finding Role instance by example");
	List<Role> results = getHibernateTemplate().findByExample(instance);
	log.debug("find by example successful, result size: " + results.size());
	return results;
    }

    public List<Role> findByProperty(String propertyName, Object value) {
	log.debug("finding Role instance with property: " + propertyName
		+ ", value: " + value);
	String queryString = "from Role as model where model." + propertyName
		+ "= ?";
	return getHibernateTemplate().find(queryString, value);
    }

    public List<Role> findAll() {
	log.debug("finding all Role instances");
	String queryString = "from Role";
	return getHibernateTemplate().find(queryString);
    }

    public Role merge(Role detachedInstance) {
	log.debug("merging Role instance");
	Role result = (Role) getHibernateTemplate().merge(detachedInstance);
	log.debug("merge successful");
	return result;
    }

    public void attachDirty(Role instance) {
	log.debug("attaching dirty Role instance");
	getHibernateTemplate().saveOrUpdate(instance);
	log.debug("attach successful");
    }

    public void attachClean(Role instance) {
	log.debug("attaching clean Role instance");
	getHibernateTemplate().lock(instance, LockMode.NONE);
	log.debug("attach successful");
    }
}

 

  log4j.properties

 

log4j.rootLogger=info, stdout
log4j.logger.com.idemfactor=debug

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{ISO8601}] %5p [%t] (%c{1}:%L) - %m%n

#log4j.appender.R=org.apache.log4j.RollingFileAppender
#log4j.appender.R.layout=org.apache.log4j.PatternLayout
#log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}] %5p [%t] (%c{1}:%L) - %m%n
#log4j.appender.R.File=/tmp/fs.log
#log4j.appender.R.MaxFileSize=1000KB
#log4j.appender.R.MaxBackupIndex=7


# Need this to show all exception details in struts
log4j.logger.org.apache.struts.action.ExceptionHandler=debug

 

end

posted @ 2008-09-12 17:44  siemens800  阅读(40)  评论(0编辑  收藏  举报