.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
.. use this file except in compliance with the License. You may obtain a copy of
.. the License at
..
..   http://www.apache.org/licenses/LICENSE-2.0
..
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
.. License for the specific language governing permissions and limitations under
.. the License.

.. lint: ignore errors for the next 5 lines

.. _cve/2012-5641:

==================================================================================
CVE-2012-5641: Information disclosure via unescaped backslashes in URLs on Windows
==================================================================================

:Date: 14.01.2013

:Affected: All Windows-based releases of Apache CouchDB, up to and including
           1.0.3, 1.1.1, and 1.2.0 are vulnerable.

:Severity: Moderate

:Vendor: The Apache Software Foundation

Description
===========

A specially crafted request could be used to access content directly that
would otherwise be protected by inbuilt CouchDB security mechanisms. This
request could retrieve in binary form any CouchDB database, including the
`_users` or `_replication` databases, or any other file that the user account
used to run CouchDB might have read access to on the local filesystem. This
exploit is due to a vulnerability in the included MochiWeb HTTP library.

Mitigation
==========

Upgrade to a supported CouchDB release that includes this fix, such as:

- :ref:`1.0.4 <release/1.0.4>`
- :ref:`1.1.2 <release/1.1.2>`
- :ref:`1.2.1 <release/1.2.1>`
- :ref:`1.3.x <release/1.3.x>`

All listed releases have included a specific fix for the MochiWeb component.

Work-Around
===========

Users may simply exclude any file-based web serving components directly
within their configuration file, typically in `local.ini`. On a default
CouchDB installation, this requires amending the
:config:option:`httpd_global_handlers/favicon.ico` and
:config:option:`httpd_global_handlers/_utils` lines within
:config:section:`httpd_global_handlers`::

    [httpd_global_handlers]
    favicon.ico = {couch_httpd_misc_handlers, handle_welcome_req, <<"Forbidden">>}
    _utils = {couch_httpd_misc_handlers, handle_welcome_req, <<"Forbidden">>}

If additional handlers have been added, such as to support Adobe's Flash
`crossdomain.xml` files, these would also need to be excluded.

Acknowledgement
===============

The issue was found and reported by Sriram Melkote to the upstream MochiWeb
project.

References
==========

- https://github.com/melkote/mochiweb/commit/ac2bf
