|
Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com |
From: Ben Laurie (ben
algroup.co.uk)Date: Fri Jun 21 2002 - 04:15:09 CDT
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
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]