Subversion versions up to and including 1.0.4 have a potential
Denial of Service and Heap Overflow issue related to the parsing of
strings in the 'svn://' family of access protocols.

This affects only sites running svnserve.  It does not affect
'http://' access -- repositories served only by Apache/mod_dav_svn
do not have this vulnerability.

Details:
========

The svn protocol sends strings as a length followed by the string.  The
parser would trust that the sender was providing an accurate length of
the string and would allocate sufficent memory to store the entire
string.  This would allow the sender of a string to Denial of Service
the other side by suggesting that the string is very large.
Additionally, if the size given is large enough it may cause the integer
holding the size to wrap, thus allocating less memory than the string
length and resulting in a heap overflow.

The parsing code with the flaw is shared by both the svnserve server and
clients using the svn://, svn+ssh:// and other tunneled svn+*://
methods.

Severity:
=========

Severity ranges from "Denial of Service" to, potentially, "Arbitrary
Code Execution", depending upon how skilled the attacker is and the
ABI specifics of your platform.

Since the error is in the parsing of the protocol, including the parsing
of authentication, the server vulnerabilities can be triggered without
read or write access to the repository.  So any svnserve process that an
attacker can connect to is vulnerable even if they do not have read or
write access.

The Denial of Service attack is reasonably easy to carry out, while
exploiting the heap overflow is more difficult.  There are no known
exploits in the wild at the time of this advisory.

Workarounds:
============

Disable svnserve and use DAV (http://) instead.

Recommendations:
================

We recommend all users upgrade to 1.0.5.

References:
===========

CAN-2004-0413: Subversion svn:// protocol string parsing error.
