Re: Apache Exploit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Stefan Esser wrote:
> Hi,
> 
> i heard several people looking at the gobbles exploit and believing it
> can only be fake:
> 
> here is my little explanation how bsd memcpy can be exploited:
> 
> first a snipset of the bsd memcpy code:
> 
> ...
> 1:
> 	addl	%ecx,%edi	/* copy backwards. */
> 	addl	%ecx,%esi
> 	std
> [1]	andl	$3,%ecx		/* any fractional bytes? */
> 	decl	%edi
> 	decl	%esi
> 	rep
> 	movsb
> [X]	movl	20(%esp),%ecx	/* copy remainder by words */
> 	shrl	$2,%ecx
> 	subl	$3,%esi
> 	subl	$3,%edi
> 	rep
> 	movsl
> ...
> 
> In Apache we trigger exactly this piece of code: bsd thinks the two
> buffers are overlapping and so it wants to copy backward.
> The problem is that you are able to overwrite the call to memcpy
> including the supplied paramters (dst, src, length). With up to
> 3 bytes ([1]) depending on alignment. if you align everything perfectly
> you can set the 3 high bytes of length to zero and so change how many
> dwords memcpy tries to copy in our case 0x000000?? 
> This is only possible because the code reads the length param again from
> stack [X]... This way you can easily survive the call and overwrite 
> the saved instruction pointer before the memcpy call...

I should just point out the slight error in this analysis - in fact, the 
exploit only overwrites two bytes of the length (incidentally, the 
length is also constrained to be its own stack offset, leaving no room 
for manouver at all) - so the length is initially -146 (ffffff6e), and 
after overwriting becomes 0000ff6e, copying just under 64k onto the 
stack, which is plenty for a standard stack-based shellcode exploit.

I've also checked, and FreeBSD is indeed vulnerable in the same way, but 
the glibc implementation I have seen of memcpy is not, so if Linux is 
vulnerable, its by another route. I haven't looked at Solaris.

Cheers,

Ben.

-- 
http://www.apache-ssl.org/ben.html       http://www.thebunker.net/

"There is no limit to what a man can do or how far he can go if he
doesn't mind who gets the credit." - Robert Woodruff


[Index of Archives]     [Linux Security]     [Netfilter]     [PHP]     [Yosemite News]     [Linux Kernel]

  Powered by Linux