zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    python 学习常见问题笔记
    mac os 使用 from scipy.misc import imread ImportError: cannot import name 'imread'
    mac解决安装提示“xxx软件已损坏,打不开,您应该将它移到废纸篓”的提示
    一文搞懂HMM(隐马尔可夫模型)
    docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
    centos 7 安装python3 & pip3
    HTK HResults计算字错率(WER)、句错率(SER)
    sublime text3安装ConvertToUTF8
    intellij idea 解决2019年4月到期延期问题
    Python 3 教程
  • 原文地址:https://www.cnblogs.com/lindows/p/14390585.html
Copyright © 2011-2022 走看看