阅读更多
Apache Tomcat团队近日发布了一个安全公告,提示用户注意一个Java哈希表(HashTable)中的拒绝服务漏洞。


这一漏洞名为Denial of Service through hash table multi-collisions(通过对哈希表使用多碰撞技术实现拒绝服务),已由安全研究公司N.runs发布。目前,包括Java在内的众多语言,如PHP5、Asp.Net以及v8 JavaScript引擎等都存在该漏洞;PHP4、Python及Ruby则因版本不同或可能受影响,取决于服务器代码运行于32位或64位机器。Perl及CRuby 1.9不受其影响。

Apache Tomcat表示,由于Tomcat中使用了哈希表来存储HTTP请求参数,因此将受该漏洞影响。鉴于Oracle表态不会在JRE中对该漏洞进行修复(但将提供一个新的GlassFish服务器版本),因此Apache提供了一个变通方案。

Apache的方案是在Tomcat中增加一个新的选项maxParameterCount,用来限制单个请求中的最大参数量。参数默认值设为10000,确保既不会对应用程序造成影响(对多数应用来说已经足够),也足以减轻DoS攻击的压力。

目前,这一解决方法在Tomcat 7.0.236.0.35版本中业已实现;即将发布的5.5.35中也会应用这一方案。另外,Tomcat表示,若使用早期版本的Tomcat,可以通过限制maxPostSize大小为10KB左右来解决此问题。

关于此漏洞的详细信息:http://www.nruns.com/_downloads/advisory28122011.pdf

15
2
评论 共 20 条 请登录后发表评论
20 楼 RememberTheMilk 2012-01-18 21:54
forcer521 写道
Oracle 越来越不可理喻了,和 Google 一个德行。。

怎讲?
19 楼 xwx7712 2012-01-12 10:13
函数采用DJBX33A,只不过常数因子改为了31. 这样的函数有个特点,即如果字符串X, Y的hash值相同,那么X,Y都添加任意相同的前缀或后缀的以后的hash值也都相同.比如: "rQ"与 "qp"的hash值相同, 则"rQrQ", "rQqp", "qprQ", "qpqp" 这四个也相同,继续这个模式就可以很容易构造出 2^n 个 2*n长度的不同字
引用
[img][/img][url][/url][flash=200,200][/flash]
[b][/b][i][/i][u][/u][/color][color=yellow][size=x-small][/size][align=center][/align]
18 楼 forcer521 2012-01-11 18:35
Oracle 越来越不可理喻了,和 Google 一个德行。。
17 楼 luiang1018 2012-01-10 18:01
mpqi 写道
引用
除Java外,PHP5、Asp.Net以及Java v8引擎中都存在该漏洞;


这句话够歧义的啊。

不好意思,这句已经改了~
16 楼 mpqi 2012-01-10 17:40
leexiaodong2009 写道
Oracle很强硬么???

破解版和付费版,是不同的。
不过。。。作为个没研究过的人没发言权,我飘过哈。
15 楼 leexiaodong2009 2012-01-09 15:40
Oracle很强硬么???
14 楼 mpqi 2012-01-09 10:36
引用
除Java外,PHP5、Asp.Net以及Java v8引擎中都存在该漏洞;


这句话够歧义的啊。
13 楼 yangxinxyx 2012-01-06 16:54
http://dreamforce.me/archives/343

看这里吧,很详细的解释
12 楼 yangxinxyx 2012-01-06 16:54
http://dreamforce.me/archives/343
11 楼 waiting 2012-01-06 13:31
引用
除Java外,PHP5、Asp.Net以及Java v8引擎中都存在该漏洞;PHP4、Python及Ruby则因版本不同或可能受影响,取决于服务器代码运行于32位或64位机器。Perl及CRuby 1.9不受其影响。


应该是  “包括Java在内,PHP5、Asp.Net以及Java v8引擎中都存在该漏洞;” 吧?
10 楼 coffeecat10 2011-12-31 00:27
cxh116 写道
能说一下这个漏洞的拒绝服务原因吗?

估计看pdf的人不多, 简述一下大概意思为:
常见的服务器会将用户post的数据保存在hashmap中. 而向hashmap中插入n对元素的时间复杂度大约是O(n), 但如果精心构造key使得每个key的hash值相同(也就是产生了碰撞),则时间复杂度会恶化到O(n^2),导致消耗大量的CPU时间.
经测试,在tomcat6服务器上, 总大小2MByte的数据就需要消耗一个i7CPU core44分钟,也就是6kbit/s就可以让这个CPU core一直忙碌. 所以只要一个G兆网络就能让100000个i7CPU core一直忙.

再说下相同hash值key的构造:
在java中,字符串的hash函数采用DJBX33A,只不过常数因子改为了31. 这样的函数有个特点,即如果字符串X, Y的hash值相同,那么X,Y都添加任意相同的前缀或后缀的以后的hash值也都相同.比如: "rQ"与 "qp"的hash值相同, 则"rQrQ", "rQqp", "qprQ", "qpqp" 这四个也相同,继续这个模式就可以很容易构造出 2^n 个 2*n长度的不同字符串

9 楼 yoyo837 2011-12-30 08:31
syx278250658 写道
引用
这一解决方法在Tomcat 7.0.23和6.0.35版本中业已实现;即将发布的5.5.35中也会应用这一方案。

是不是穿越了!?

tomcat同时维护5.x , 6.x  ,7.x ...你不知道?
8 楼 cxh116 2011-12-29 17:19
能说一下这个漏洞的拒绝服务原因吗?
7 楼 wang9907 2011-12-29 15:41
syx278250658 写道
引用
这一解决方法在Tomcat 7.0.23和6.0.35版本中业已实现;即将发布的5.5.35中也会应用这一方案。

是不是穿越了!?

tomcat有好几个版本分歧的。
6 楼 luiang1018 2011-12-29 13:48
syx278250658 写道
引用
这一解决方法在Tomcat 7.0.23和6.0.35版本中业已实现;即将发布的5.5.35中也会应用这一方案。

是不是穿越了!?

?公告中的官方说法
The work-around is available in:
trunk
7.0.23 onwards
6.0.35 onwards

The work-around will also be available in 5.5.35 once released.
5 楼 wiki_more 2011-12-29 13:37
m1a0 写道
Oracle表态不会在JRE中对该漏洞进行修复(但将提供一个新的GlassFish服务器版本)

4 楼 syx278250658 2011-12-29 13:27
引用
这一解决方法在Tomcat 7.0.23和6.0.35版本中业已实现;即将发布的5.5.35中也会应用这一方案。

是不是穿越了!?
3 楼 忍者战神 2011-12-29 12:46
没亲爹的孩子没人疼啊
2 楼 m1a0 2011-12-29 12:29
Oracle表态不会在JRE中对该漏洞进行修复(但将提供一个新的GlassFish服务器版本)
1 楼 奥义之舞 2011-12-29 12:03

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 浅析Windows命名管道Named Pipe

    管道 讲命令管道之前先来讲下管道。管道并不是什么新鲜事物,它是一项古老的技术,可以在很多操作系统(Unix、Linux、Windows 等)中找到,其本质是是用于进程间通信的共享内存区域,确切的说应该是线程间的通信方法(IPC)。 管道是一个有两端的对象。一个进程向管道写入信息,而另外一个进程从管道读取信息。进程可以从这个对象的一个端口写数据,从另一个端口读数据。创建管道的进程称为管道服务器(Pipe Server),而连接到这个管道的进程称为管道客户端(Pipe Clien...

  • win10无法打开匿名级安全令牌_Printer Spoofer:在Windows 10及Server 2019上滥用Impersonation权限...

    0x00 前言过去几年中诞生了不少工具,如RottenPotato、RottenPotatoNG或者Juicy Potato等,这些工具能够利用Windows系统中的模拟(Impersonation)权限,因此广受攻击者欢迎。然而Windows操作系统最近进行了不少改动,有意或者无意地降低了这些技术在Windows 10及Server 2016/2019上的威力。在本文中,我想与大家分享一款新工具...

  • windows命名管道

    一.windows管道简介 管道(Pipe)的定义: A pipe is a section of shared memory that processes use for communication. The process that creates a pipe is the pipe server. A process that connects to a pipe is a pipe

  • Potato家族本地提权细节

    本文结合POC源码,研究Potato家族本地提权细节 Feature or vulnerability 该提权手法的前提是拥有SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege权限,以下用户拥有SeImpersonatePrivilege权限(而只有更高权限的账户比如SYSTEM才有SeAssignPrimaryTokenPrivilege权限): 本地管理员账户(不包括管理员组普通账户)和本地服务帐户 由SCM启动的服务 P.s. 本机测试时即使在

  • session winstaion impersonate

    session winstaion impersonate

  • 一个命名管道可以被多个客户端访问吗_利用命名管道进行权限提升

    声明由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。No.1前言命名管道是Windows 比较经典的一个概念并且Linux也有,但是...

  • windows named pipe 客户端 服务器

    可以实现多客户端对一服务端,服务端为客户端提供服务。 其实一服务端对应每一个client pipe都新建立了一个pipe。windows允许建立多个同名pipe 效果: 服务端代码: #define BUFSIZE 2048 unsigned __stdcall MsgProcessThread ( void * pParam) { HANDLE hPipe ...

  • PrintSpoofer:滥用Windows 10和Server 2019上的模拟特权

    概述 在过去的几年中,类似于RottenPotato、RottenPotatoNG或Juicy Potato这样的一些Windows特权模拟工具,已经在攻防安全社区中非常流行。但是,随着操作系统不断的升级,其中也有意或无意地降低了在Windows 10和Windows Service 2016/2019上使用这些工具的效果。而我们本次分析的是一个全新的工具,将有助于渗透测试人员再次轻松地利用这些特权。 需要请大家注意的是,在这里我们介绍的是一种新的工具,而不是新的技术。实际上,我将配合该工具,讨论两种可

  • 什么是Named Pipes

    Named Pipe(命名管道)是一种有名字的, 建立在pipe server和一个(或多个)pipe client之间的单向或双向的通信管道. 一个命名管道的所有实例都会共享一个相同的pipe name, 但是每个实例都有他自己的缓冲区和句柄(handle), 并且为客户端/服务器的通讯提供一个单独的导管. 这种对实例的使用使得多个pipe client同时地使用相同的named pipe成为可...

  • Potato家族本地提权分析

    0x00 前言 在实际渗透中,我们用到最多的就是Potato家族的提权。本文着重研究Potato家族的提权原理以及本地提权细节 0x01 原理讲解 1.利用Potato提权的是前提是拥有SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege权限,以下用户拥有SeImpersonatePrivilege权限(而只有更高权限的账户比如SYSTEM才有SeAssignPrimaryTokenPrivilege权限): 本地管理员账户(不包括管理员组普通账户)和本地

  • Enterprise Admins ,Domain Admins,Administrators

    Enterprise Admins group is a group that appears only in the forest root domain controller and members of this group have full administrative control on all domains that are in your forest.D...

  • named pipes

    轉載自https://www.linuxjournal.com/content/using-named-pipes-fifos-bash It's hard to write a bash script of much import without using a pipe or two. Named pipes, on the other hand, are much rarer. Like...

  • 模拟实现进程的创建与撤销_PrintSpoofer:滥用Windows 10和Server 2019上的模拟特权

    概述在过去的几年中,类似于RottenPotato、RottenPotatoNG或Juicy Potato这样的一些Windows特权模拟工具,已经在攻防安全社区中非常流行。但是,随着操作系统不断的升级,其中也有意或无意地降低了在Windows 10和Windows Service 2016/2019上使用这些工具的效果。而我们本次分析的是一个全新的工具,将有助于渗透测试人员再次轻松地...

  • metasploit学习之路(四)记一次实战--永恒之蓝(MS017-010)

    本次为绝对的实战,并不是本人自己构造环境实验的,而且本来也没想到是有永恒之蓝的漏洞。 永恒之蓝这个漏洞我没有复现过,但是这一次偶然的机会玩了一把。 大佬在讲台上面传授经验,用的是windows server 2003,于是我偷偷玩了一把,下面说下流程。 1、首先nmap扫描: msf5 > nmap -sS -sV -A -O -v 10.1.2.217 [*] exec: nmap -sS...

  • WMI

    Windows slaves fail to start via DCOM     Skip to end of metadata Added by Kohsuke Kawaguchi, last edited by Mark Corsillo on Nov 23, 2016  (view change) show comment Go to start ...

  • 命名管道学习笔记

    “命名管道”或“命名管线”(Named Pipes )是一种简单的进程间通信( I P C)机制.命名管道可在同一台计算机的不同进程之间,或在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。命令管道是围绕Wi n d o w s文件系统设计的一种机制,采用“命名管道文件系统”(N a m e dPipe File System, NPFS)接口。因此,客户机和服务器应用可

  • windows printf 行缓冲_Windows 命名管道研究初探

    Industrial frame with yellow pipelines and other objects against the white brick wall background. Vector illustration隶属于 360 公司信息安全中心,我们深谙“未知攻,焉知防”,团队成员专注于各类漏洞利用研究,在红蓝对抗、区块链安全、代码审计拥有多年资深经验。author...

  • SQL Server中的命名管道(named pipe)及其使用

    1. 什么是命名管道? 与TCP/IP协议一样(TCP/IP协议即),命名管道是一种通讯协议。 命令管道协议一般用于局域网中,因为它要求客户端必须具有访问服务器资源的权限。 根据微软官方的资料所述: 若要连接到 SQL Server 数据库引擎,必须通过网络协议。 SQL Server服务器可以同时使用多种协议处理来自于客户端的“各种请求”。 每一个客户端只使用一种协议连接

  • 管道系统

    关于管道 在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为:   · 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不象文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这种情况

Global site tag (gtag.js) - Google Analytics