
<!DOCTYPE html>
<html>
    <head>
        <title>CVE-2017-3157</title>
        <style type="text/css"></style>
    </head>

    <body>
    <!-- These were previously defined as XHTML pages.  The current
         wrapping for the site introduces HTML5 headers and formats.
         This version is modified to match the wrapping that is done as part
         of publishing this page and not rely on any particular styling
         beyond <p>.
         -->
        <p>
            <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3157">CVE-2017-3157</a>
        </p>
        <p>
            <a href="https://www.openoffice.org/security/cves/CVE-2017-3157.html">Apache OpenOffice Advisory</a>
        </p>

        <p style="text-align:center; font-size:largest"><strong>CVE-2017-3157:
        Arbitrary file disclosure in Calc and Writer</strong></p>

        <p style="text-align:center; font-size:larger"><strong>Fixed in Apache OpenOffice 4.1.4</strong></p>

        <p>
          <strong>Description</strong>
        </p>

        <p>By exploiting the way OpenOffice renders embedded objects, an attacker could craft a document
           that allows reading in a file from the user's filesystem. Information could be retrieved by the
           attacker by, e.g., using hidden sections to store the information, tricking the user into
           saving the document and convincing the user to sent the document back to the attacker.</p>

        <p>The vulnerability is mitigated by the need for the attacker to know the precise file path
           in the target system, and the need to trick the user into saving the document and sending it
           back.</p>

        <p><strong>Severity: Medium</strong></p>

        <p>There are no known exploits of this vulnerability.<br />
          A proof-of-concept demonstration exists.
        </p>

        <p>Thanks to Ben Hayak for reporting this issue.</p>

        <p>
          <strong>Vendor: The Apache Software Foundation</strong>
        </p>

        <p>
          <strong>Versions Affected</strong>
        </p>

        <p>
          All Apache OpenOffice versions 4.1.3 and older are affected.<br />
          OpenOffice.org versions are also affected.
        </p>

        <p>
          <strong>Mitigation</strong>
        </p>

        <p>
          Install Apache OpenOffice 4.1.4 for the latest maintenance and
          cumulative security fixes.  Use the Apache OpenOffice 
          <a href="https://www.openoffice.org/download/">download page</a>.
        </p>

            <strong>Further Information</strong>
        </p>
        <p>For additional information and assistance, consult the
           <a href="https://forum.openoffice.org/">Apache OpenOffice Community Forums</a>
           or make requests to the
           <a href="mailto:users@openoffice.apache.org">users@openoffice.apache.org</a>
           public mailing list.
        </p>
        <p>The latest information on Apache OpenOffice security bulletins
        can be found at the <a href="https://www.openoffice.org/security/bulletin.html">Bulletin
        Archive page</a>.</p>


        <hr />

        <p>
            <a href="http://security.openoffice.org">Security Home</a>
    -&gt; <a href="http://security.openoffice.org/bulletin.html">Bulletin</a>
    -&gt; <a href="https://www.openoffice.org/security/cves/CVE-2017-3157.html">CVE-2017-3157</a>
        </p>
    </body>
</html>
