Subversion: Remote heap overflow — GLSA 200406-07

Subversion is vulnerable to a remote Denial of Service that may be exploitable to execute arbitrary code on the server running svnserve.

Affected packages

dev-util/subversion on all architectures
Affected versions <= 1.0.4
Unaffected versions >= 1.0.4-r1

Background

Subversion is a revision control system that aims to be a "compelling replacement for CVS". It enjoys wide use in the open source community. svnserve allows access to Subversion repositories using URIs with the svn://, svn+ssh://, and other tunelled svn+*:// protocols.

Description

The svn protocol parser trusts the indicated length of a URI string sent by a client. This allows a client to specify a very long string, thereby causing svnserve to allocate enough memory to hold that string. This may cause a Denial of Service. Alternately, given a string that causes an integer overflow in the variable holding the string length, the server might allocate less memory than required, allowing a heap overflow. This heap overflow may then be exploitable, allowing remote code execution. The attacker does not need read or write access to the Subversion repository being served, since even un-authenticated users can send svn protocol requests.

Impact

Ranges from remote Denial of Service to potential arbitrary code execution with privileges of the svnserve process.

Workaround

Servers without svnserve running are not vulnerable. Disable svnserve and use DAV for access instead.

Resolution

All users should upgrade to the latest version of Subversion.

 # emerge sync

 # emerge -pv ">=dev-util/subversion-1.0.4-r1"
 # emerge ">=dev-util/subversion-1.0.4-r1"

References

Release date
June 10, 2004

Latest revision
June 10, 2004: 01

Severity
high

Exploitable
remote

Bugzilla entries