Vulnerability Note VU#192038

CVS contains a heap overflow in the handling of flag insertion

Original Release date: 19 May 2004 | Last revised: 13 Jul 2004

Overview

A heap overflow vulnerability in the Concurrent Versions System (CVS) could allow a remote attacker to execute arbitrary code on a vulnerable system.

Description

CVS is a source code maintenance system that is widely used by open-source software development projects. There is a heap memory overflow vulnerability in the way CVS handles the insertion of modified and unchanged flags within entry lines. When processing an entry line, an additional byte of memory is allocated to flag the entry as modified or unchanged. There is a failure to check if a byte has been previously allocated for the flag, which creates an off-by-one buffer overflow. By calling a vulnerable function several times and inserting specific characters into the entry lines, a remote attacker could overwrite multiple blocks of memory. The CVS server process is commonly started by the Internet services daemon (inetd) and run with root privileges.

According to the e-matters security advisory, the following versions are affected:

    CVS feature release <= 1.12.7
    CVS stable release <= 1.11.15

Impact

An attacker could exploit this vulnerability to execute arbitrary code, execute commands, read sensitive information, or cause a denial of service. Any client with the ability to create entry lines could exploit this vulnerability. It is possible for an anonymous user with read-only access to exploit this vulnerability against a vulnerable server. In addition to compromising the system running CVS, there is a significant secondary impact in that source code maintained in CVS repositories could be modified to include trojan horses, backdoors, or other malicious code.

Solution

Apply a patch or upgrade
Apply the appropriate patch or upgrade as specified by your vendor. This issue has been resolved in Stable CVS Version 1.11.16 and CVS Feature Version 1.12.8.


Disable the CVS server

Until patches are available and can be applied, consider disabling the CVS server.

Block or restrict access

Block or restrict access to the CVS server from untrusted hosts and networks. The CVS server typically listens on 2401/tcp, but it may use another port or protocol.

Limit the CVS server privileges

  • Configure CVS server to run in a restricted (chroot) environment.
  • Run CVS servers with the minimum set of privileges required on the host file system.
  • Provide separate systems for development (write) and public/anonymous (read-only) CVS access.
  • Host public/anonymous CVS servers on single-purpose, secured systems.
Note that some of these workarounds will only limit the scope and impact of possible attacks.

Systems Affected (Learn More)

VendorStatusDate NotifiedDate Updated
CVS HomeAffected-19 May 2004
DebianAffected-26 May 2004
FreeBSDAffected-26 May 2004
GentooAffected-26 May 2004
MandrakeSoftAffected-26 May 2004
OpenBSDAffected-26 May 2004
OpenPKGAffected-26 May 2004
Red Hat Inc.Affected-26 May 2004
SlackwareAffected-26 May 2004
SuSE Inc.Affected-26 May 2004
If you are a vendor and your product is affected, let us know.

CVSS Metrics (Learn More)

Group Score Vector
Base N/A N/A
Temporal N/A N/A
Environmental N/A N/A

References

Credit

This vulnerability was reported by Stefan Esser of e-matters.

This document was written by Damon Morda and Jason A Rafail, and is based on information contained in the e-matters security advisory.

Other Information

  • CVE IDs: CAN-2004-0396
  • Date Public: 19 May 2004
  • Date First Published: 19 May 2004
  • Date Last Updated: 13 Jul 2004
  • Severity Metric: 37.13
  • Document Revision: 33

Feedback

If you have feedback, comments, or additional information about this vulnerability, please send us email.