1 OpenCA Security Advisory [16 January 2004]
3 Vulnerability in signature validation
4 =====================================
6 A flaw in OpenCA before version 0.9.1.7 could cause OpenCA to accept a
7 signature from a certificate if the certificate's chain is trusted by
8 the chain directory of OpenCA. This means that a certificate from
9 another PKI can authorize operations on the used PKI if the chain of the
10 used signature certifcate can establish a trust relationship to the
13 Alexandru Matei found the bug during a source code verification.
14 Alexandru Matei and Michael Bell of the OpenCA core team fixed the
15 problem for OpenCA 0.9.1 and the CVS HEAD.
20 OpenCA has a library for common crypto operations - crypto-utils.lib.
21 This library includes a function to check a signature
22 (libCheckSignature). The function load the used signature certificate
23 from OpenCA's database and finally ensures that the used signature
24 certificate is identical with the certificate in the database.
26 The comparison of the certificate in the database and the certificate
27 of the signer was only performed on base of the serial of the
28 certificate. The design of the function can cause the acceptance
29 of a signature if the chain of the signature can create a
30 trustrelationship to the chain directory of OpenCA and a certificate
31 with a matching serial exists in the used PKI.
36 All version of OpenCA including 0.9.1.6. A security risk is present for
37 people who are using digital signatures to secure approved requests
38 or role based access control (RBAC).
43 Upgrade to 0.9.1.7 and use newer snapshots than
44 openca-SNAP-20040114.tar.gz. You can fix the problem by yourself too
45 with the included patch. The original file which we used to create
46 the diff is from OpenCA 0.9.1.6.
49 --- src/common/lib/functions/crypto-utils.lib 2004-01-15 12:10:45.000000000 +0100
50 +++ src/common/lib/functions/crypto-utils.lib.new 2004-01-15 12:10:06.000000000 +0100
52 "__ERRVAL__", $OpenCA::X509::errval);
55 - last if ( $tmpCert->getSerial() eq $sigCert->getSerial() );
56 + last if ( $tmpCert->getPEM() eq $sigCert->getPEM() );
65 The Common Vulnerabilities and Exposures project (cve.mitre.org) has
66 assigned the name CAN-2004-0004 to this issue.
68 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0004
70 URL for this Security Advisory:
71 http://www.openca.org/news/CAN-2004-0004.txt