Description
Due to differences in the Erlang-based JSON parser and JavaScript-based JSON parser, it is possible in Apache CouchDB before 1.7.0 and 2.x before 2.1.1 to submit _users documents with duplicate keys for 'roles' used for access control within the database, including the special case '_admin' role, that denotes administrative users. In combination with CVE-2017-12636 (Remote Code Execution), this can be used to give non-admin users access to arbitrary shell commands on the server as the database system user. The JSON parser differences result in behaviour that if two 'roles' keys are available in the JSON, the second one will be used for authorising the document write, but the first 'roles' key is used for subsequent authorization for the newly created user. By design, users can not assign themselves roles. The vulnerability allows non-admin users to give themselves admin privileges.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Apache Software Foundation | Apache CouchDB | 1.2.0 to 1.6.1, 2.0.0 to 2.1.0 | — |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 7 | couchdb | 1.2.0-5+deb7u1 | DLA-1252-1 |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 16.04 LTS | couchdb | No fix yet | — |
Public exploits
Exploit or proof-of-concept code for this vulnerability is publicly available, which lowers the bar for attackers. Treat it as a reason to patch sooner.
Metasploit 2 modules
-
CouchDB Enum Utility
auxiliary/scanner/couchdb/couchdb_enum
-
Apache CouchDB Arbitrary Command Execution
exploit/linux/http/apache_couchdb_cmd_exec
Exploit-DB 2
- Apache CouchDB - Arbitrary Command Execution (Metasploit) EDB-45019 · remote · Jul 13, 2018 · verified
- Apache CouchDB 1.7.0 / 2.x < 2.1.1 - Remote Privilege Escalation EDB-44498 · webapps · Apr 23, 2018
GitHub 5 repositories
-
assalielmehdi/CVE-2017-12635 ★ 10 · Nov 7, 2019
Case study and POC of CVE-2017-12635: Apache CouchDB 1.7.0 / 2.x < 2.1.1 - Remote Privilege Escalation
-
cyberharsh/Apache-couchdb-CVE-2017-12635 ★ 1 · Jun 19, 2020
-
CyberCTF/vulhub-couchdb-cve-2017-12635 ★ 0 · Oct 8, 2026
Vulhub couchdb/CVE-2017-12635: Apache CouchDB Privilege Escalation (CVE-2017-12635), run with Isoloom
-
Darabium/couchdb-exploit ★ 0 · Aug 3, 2026
This tool exploits two critical vulnerabilities in Apache CouchDB: | CVE | Description | Severity | |-----|-------------|----------| | **CVE-2017-12635** | Privilege Escalation via JSON Parsing Bypas…
-
Dungsocool/CVE-2017-12635_36 ★ 0 · May 29, 2026
Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.
Automated scanner template
A ready-made Nuclei template detects this vulnerability automatically. Vulnerabilities with public scanner templates are typically probed across the internet soon after the template appears — exposed systems should be patched first.
- Apache CouchDB 1.7.0 / 2.x < 2.1.1 - Remote Privilege Escalation http/cves/2017/CVE-2017-12635.yaml
Source: projectdiscovery/nuclei-templates (MIT) — updated daily. Only links are listed.
Advisories 1
- DLA-1252-1 couchdb - security update Debian Security (DSA / DLA) · Mar 9, 2026
References
- 44498 exploit
- 45019 exploit
- [dev] 20171114 Apache CouchDB CVE-2017-12635 and CVE-2017-12636 mailing-list
- GLSA-201711-16 vendor-advisory
- [debian-lts-announce] 20180121 [SECURITY] [DLA 1252-1] couchdb security update mailing-list
- 101868 vdb-entry
- https://support.hpe.com/hpsc/doc/public/display?docLocale=en_US&docId=emr_na-hpesbmu03935en_us