OpenPKG Security Advisory - Ralf S. Engelschall from OpenPKG GmbH discovered a Denial of Service (DoS) vulnerability in the CVS/Subversion/Git Version Control System (VCS) frontend CVSTrac, version 2.0.0.
1db2c81b325a11b28837a0856dc30080a87ebbd7a7462ccc43a328ae1aaabdf4
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
____________________________________________________________________________
Publisher Name: OpenPKG GmbH
Publisher Home: http://openpkg.com/
Advisory Id (public): OpenPKG-SA-2007.008
Advisory Type: OpenPKG Security Advisory (SA)
Advisory Directory: http://openpkg.com/go/OpenPKG-SA
Advisory Document: http://openpkg.com/go/OpenPKG-SA-2007.008
Advisory Published: 2007-01-29 14:02 UTC
Issue Id (internal): OpenPKG-SI-20070117.01
Issue First Created: 2007-01-17
Issue Last Modified: 2007-01-29
Issue Revision: 08
____________________________________________________________________________
Subject Name: cvstrac
Subject Summary: VCS web frontend
Subject Home: http://www.cvstrac.org/
Subject Versions: * = 2.0.0
Vulnerability Id: CVE-2007-0347
Vulnerability Scope: global (not OpenPKG specific)
Attack Feasibility: run-time
Attack Vector: remote network
Attack Impact: denial of service
Description:
Ralf S. Engelschall from OpenPKG GmbH discovered a Denial of Service
(DoS) vulnerability in the CVS/Subversion/Git Version Control System
(VCS) frontend CVSTrac [0], version 2.0.0.
The vulnerability is in the Wiki-style text output formatter and is
triggered by special text constructs in commit messages, tickets and
Wiki pages. Only users with check-in permissions and Wiki or ticket
edit permissions can perform an attack. But as the anonymous user
usually is granted Wiki edit and ticket creation permissions, an
attacker remotely and anonymously can cause a partial DoS (depending
on the pages requested) on a CVSTrac installation by opening a new
ticket or editing a Wiki page with an arbitrary text containing for
instance the string "/foo/bar'quux".
The DoS vulnerability exists because the is_eow() function in
"format.c" does NOT just check the FIRST character of the supplied
string for an End-Of-Word terminating character, but instead
iterates over string and this way can skip a single embedded
quotation mark. The is_repository_file() function then in turn
assumes that the filename string can never contain a single
quotation mark and traps into an SQL escaping problem.
An SQL injection via this technique is somewhat limited as is_eow()
bails on whitespace. So while one _can_ do an SQL injection, one is
limited to SQL queries containing only characters which get past the
function isspace(3). This effectively limits attacks to SQL commands
like "VACUUM".
Administrators can quickly workaround by revoking permissions on the
users. Restoring those permissions, obviously, would require keeping
vulnerable permissions on at least one infrequently used account
like "setup" or using the CLI sqlite3(1) to manually add them back
later.
References:
[0] http://www.cvstrac.org/
____________________________________________________________________________
Primary Package Name: cvstrac
Primary Package Home: http://openpkg.org/go/package/cvstrac
Corrected Distribution: Corrected Branch: Corrected Package:
OpenPKG Enterprise E1.0-SOLID cvstrac-2.0.0-E1.0.2
____________________________________________________________________________
For security reasons, this document was digitally signed with the
OpenPGP public key of the OpenPKG GmbH (public key id 61B7AE34)
which you can download from http://openpkg.com/openpkg.com.pgp
or retrieve from the OpenPGP keyserver at hkp://pgp.openpkg.org/.
Follow the instructions at http://openpkg.com/security/signatures/
for more details on how to verify the integrity of this document.
____________________________________________________________________________
-----BEGIN PGP SIGNATURE-----
Comment: OpenPKG GmbH <http://openpkg.com/>
iD8DBQFFvfCEZwQuyWG3rjQRApMLAJ0Q/mkpIIar3VjFoMVay7b70i5DIwCfX8lJ
6ITu0bSW6c3RR9sQ6q6cIpQ=
=kxz6
-----END PGP SIGNATURE-----