Affects: OpenOffice 2.3.0 and 2.2.0 and possibly older versions


I. Background


OpenOffice is a opensource suite containing several programs to 

handle Office documents like text documents or spreadsheets. 

The latest version uses an XML based document format (ODF). 

OpenOffice allows documents to be digitally signed by authors 

using certified keys, allowing viewers to verify the integrity

and the origin based on the author's public key. 

The author's public-key certificate, which can come from 

a trusted third party, is embedded in the signed document.



II. Problem Description


The digital signature and the certificates are stored in the 

ODF ZIP container in the file META-INF\documentsignatures.xml. 

OpenOffice does store the public-key certificate in X509 format 

in the XML file under META-INF\documentsignatures.xml.


Additionally OpenOffice replicates all the information contained 

in the X509 formatted certificate in additional XML structures.

For example the issuer's name is stored under

document-signatures/Signature/KeyInfo/X509Data/_

X509IssuerSerial/X509IssuerName.


This replicated data is not covered by the issuer's signature 

(of course), and it is also not covered by the document's 

digital signature. As a consequence, it can be changed without 

violating the integrity of the signed ODF document.


The real problem arises from the fact that the replicated, 

unprotected data is used to build the first information 

dialog that a user gets after a double-clicking on the

icon in the statusbar that indicates a valid signature or 

after choosing "File->Digital Signatures" from the menu.


Only when he opens the certificate's details the correct and

protected information is decoded and thus certified 

information is shown.


Users are informed by a small symbol in the statusbar about 

a valid digital signature, and the first dialog box already 

informs them about the following:

- name of signer

- signer's certificate issuer (which induces the trust)

- date of signature

There is little incentive for an average user to go beyond 

this dialog and request more details, but the above mentioned 

"certificate details" are shown one dialog "deeper" than this.



III. Impact


An attacker can trick the user into believing that he got a 

certificate issued by a party that he did not receive the real

certificate from. For example he could choose to pretend to 

be part of a more trusted organization. So an attacker can

lead the user into believing that the signed document's 

contents are more trusted.


III.1. Proof of Concept


An attack works as follows: 

The attacker chooses a key for which he gets a certificate 

that can be automatically verified by the user

(due to a chain to a trusted root). 

Then change the issuer's names that will be displayed in the 

first dialog to an arbitrary value.


Take a signed ODT document, use a ZIP tool to get access to 

the ODT internal structure. Find the "CN=" entry in the 

XML element named "<X509IssuerName>" in the file 

META-INF\documentsignatures.xml.

Substitute it with "FooBar". Save the xml file, close the ZIP

container and reopen the ODT document. 

The issuer's name will display "FooBar" in the first dialog, 

and the signature remains valid.



IV. Workaround


Always use the view certificate button to view the information 

that was actually signed and store in the certificate.



V. Solution


No none solution.


VI. Correction details


OpenOffice's signature information dialog shall not use the 

replicated information. Or even better OpenOffice shall not 

replicate and store this information in the XML at all.



VII. Time line


2007-10-24: Vendor contacted

2007-11-24: Deadline reached

2007-12-12: No response received until today




Yours,

Henrich C. Poehls, Dong Tran, Finn Petersen, Frederic Pscheid

SVS - Dept. of Informatics - University of Hamburg


Reply via email to