zoukankan      html  css  js  c++  java
  • java中xxe漏洞修复方法

    java中禁止外部实体引用的设置方法不止一种,这样就导致有些开发者修复的时候采用的错误的方法

    之所以写这篇文章是有原因的!最早是有朋友在群里发了如下一个pdf,

     而当时已经是2019年1月末了,应该不是2018年7月份那个引起较大轰动的alipay java sdk的了,我突然虎躯一震,该不是。。。

    进去看了一下,果然是我前不久在github给WxJava提的一个cve漏洞(CVE-2018-20318),由于当时我知道这个不是阿里的官方团队(虽然项目当时已经在github上有一万多个颗星了),所以没有过多留意后续动态,结果才出了这么个幺蛾子。

    言归正传,我当时发现这个漏洞后,开发人员很快就回复马上修复,于是我没有跟进了,后来才发现开发人员修复的方法有问题,于是有外国佬又提了一个cve。。

    漏洞本身没什么好说的就是除了xml字符串时没有禁止引用外部实体,而开发人员第一次修复用的是这个     dbFactory.setExpandEntityReferences(false)

    要知道当时官方的xxe漏洞修复方法最早也用了这个(当时阿里修改了不止一次),顾名思义上面就是禁止实体扩展引用,那为什么就不行呢?有人专门分析过,写的文章是特别长,反正我是没看很懂,大概意思是他和sun公司沟通了很久,sun说:“这个属性设置不是你们想的那样,你们都理解错了”,不承认是自己的问题也不改,就这样 这个问题就一直遗留了。

    这里将正确的修复方法摆出来:

    而dbFactory.setExpandEntityReferences(false) 没什么卵用!!!!

    还要说下第二种方法中:XMLConstants.FEATURE_SECURE_PROCESSING   ===== "http://xml.org/sax/features/external-general-entites"

    这种修复方法是可用的,而在我之前freebuf发表的文章(https://www.freebuf.com/vuls/176837.html)中,我说这种方法不可行。。。

    我当时确实是测试过了的,猜测应该是eclipse当时抽风了。。。

  • 相关阅读:
    HDU 1114 Piggy-Bank
    HDU 2955 Robberies
    NTOJ 290 动物统计(加强版)
    POJ 3624 Charm Bracelet
    HDU 2602 Bone Collector
    POJ 1523 SPF(无向图割顶)
    HDU 5311 Hidden String
    HDU 1421 搬寝室
    HDU 1058 Humble Numbers
    POJ 3259 Wormholes(spfa判负环)
  • 原文地址:https://www.cnblogs.com/jinqi520/p/10450553.html
Copyright © 2011-2022 走看看