起因:
Wed, 28 Dec 2011 22:28:16 GMT apache tomcat公布了一个安全漏洞。
http://mail-archives.apache.org/mod_mbox/www-announce/201112.mbox/%3C4EFB9800.5010106@apache.org%3E
漏洞原理:
在多数web容器的设计中,request都是依靠相应语言的hashtable/hashmap实现,当不同的key存入时如果hash值相等则以链表方式连接。拉链法是解决Hash冲突问题的方法之一,把所有hash值相同的元素链接在同一个单链表中,然后放入到hashtable/hashmap的桶中。这也是jdk中hashmap/hashtable的实现方式。外部拉链法的缺点是:它需要稍微多一些的空间来实现,因为添加任何元素都需要添加指向节点的指针,并且每次探查也要花费稍微多一点的时间,因为它需要间接引用逐一查找匹配,而不是直接访问元素。当大量相同hash值的元素保存时,就会导致链表巨长无比,这时get出对应元素时要在链表里比对key是否相同直到找到对应的元素。
所以此漏洞利用碰撞相同的hash值使得hashtable/hashmap退化为一个长链表,容器从request重新get时,map的计算过程会将时间复杂度巨增,原来一个简单的过程将变成一个很费cpu的过程。
http://www.nruns.com/_downloads/advisory28122011.pdf
http://www.ocert.org/advisories/ocert-2011-003.html
影响到的版本:
Apache Tomcat 5.x
Apache Tomcat 6.x
Apache Tomcat 7.x
解决办法:
tomcat
临时办法:
maxPostSize的默认大小为2097152,当maxPostSize=0时,不限制;maxPostSize=20971520时,为20M,改为一个小于10k的值,所有版本可用
,会影响用户。(在server.xml的Connector中进行配置)
tomcat
持久办法:
升级Apache Tomcat到5.5.35, 6.0.35或7.0.23及以上版本。
这里些版本中,增加了maxParameterCount参数(在server.xml的Connector中进行配置,不配置时默认为10000),maxParameterCount默认值10000。
被扫描出了“Apache Tomcat Web表单哈希冲突拒绝服务漏洞”,需要全面设计线上服务器。升级线上服务器需要注意的地方:
1.备份Tomcat服务器。
2.注意查看server.xml、context.xml。将其中设置的内容更新到新版服务器中。
3.查看Tomcat容器的lib将用户添加的jar拷贝到新的服务器中
4.查看bin目录下的catalina.sh,看看是否跟新版服务器有所不同,尤其是用户可能添加JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=256m"
来设置服务器的可用内存大小等。
分享到:
相关推荐
7 哈希碰撞的本质及解决方式 1
哈希值碰撞工具,通过哈希值,逆向计算出哈希文本,MD5值 。计算机,以及游戏常用的储存数据手段,
哈希碰撞工具Hash.7z
在数字证书领域经常会用到哈希取摘要做签名,有没有可能对不同的信息取摘要的结果是相同的呢?有可能,所以有必要分析一下哈希碰撞的概率问题
最近做了一个小实验,实验要求通过并行...并测试哈希碰撞(把最终的哈希值放到两个RAM中并逐个循环比较),很简单的一个工程,大家可以一起分享学习。 贴两个可以根据输入输出位宽自动生成CRC算法VERILOG代码的网站。 ...
哈希表 用链地址法解决冲突:(哈希函数是按名字第一个大写字母分的) 输入内容:学生的姓名跟成绩 操作:插入、修改、查找、删除学生;以及输出哈希表
hashcat密钥碰撞,无需安装,CMD下执行即可。CMD下执行即可。
输入:待哈希数据序列 功能要求:输出哈希方法和解决冲突的方法(文字输出),输出哈希表
哈希计算器哈希计算器哈希计算器哈希计算器
数据结构算法\哈希表开放地址法解决冲突
利用三个哈希值,和矩阵的旋转解决字符串问题,已给定部分字符串,求其出现概率
远程服务使用SSL证书链,该证书链已使用加密弱哈希算法(例如MD2、MD4、MD5或SHA1)签名。这些签名算法很容易受到碰撞攻击。攻击者可以利用这一点生成另一个具有相同数字签名的证书,从而允许攻击者伪装成受影响的服务...
#tomcat ##概述 tomcat 模块允许您设置和管理独立或多个实例。 ##模块说明 ###兼容性 该模块目前针对 Tomcat 版本 6 和 7 的 RHEL 和 Debian 打包版本。 它仅在 CentOS 6/7 和 Debian 6/7/8 上使用基本操作...
哈希查找: 1、 哈希表类的哈希函数采用...2、 解决哈希冲突的函数采用开放定址法中的线性探察法。 3、 建立一个由10个数据元素组成的集合; 4、 测试哈希表长度m=13和m=11两种情况下的哈希表,并查找其中的几个元素。
哈希表(散列表)和哈希查找方法,解决冲突方法教程
哈希冲突和解决方法.txt哈希冲突和解决方法.txt哈希冲突和解决方法.txt哈希冲突和解决方法.txt
对一批关键字集合采用开放定址哈希表的存储结构来建立相应的哈希表和完成查找过程。 (1) 熟练掌握哈希表的构造方法 (2) 理解哈希表与其他结构表的实质性差别。
最完整的Tomcat安装,支持,init.d脚本,应用程序命名,巨大页面,强化,漂亮的错误页面,sha512哈希密码,JMX配置,多个Tomcat版本,分开的catalina_home和caralina_base。 目录 要求 没有。 安装 ansible-galaxy ...
浙大超牛老师数据结构课件,非常经典!~详细介绍了哈希表的定义,性质,基本哈希函数和哈希冲突的解决办法!
从实践出发,继弱类型变量原理探究后,王帅将继续带大家弄清PHP内核中的一些常用部分,本期则是内核利器哈希表与哈希碰撞攻击。在PHP的Zend Engine(下面简称ZE)中,有一个非常重要的数据结构——哈希表...