2.8. CVE-2017-12635:Apache CouchDB 远程权限提升

日期:

14.11.2017

受影响版本:

所有版本的 Apache CouchDB

严重程度:

严重

供应商:

Apache 软件基金会

2.8.1. 描述

由于 CouchDB 的基于 Erlang 的 JSON 解析器和基于 JavaScript 的 JSON 解析器之间的差异,可以提交包含重复键的 _users 文档,这些键用于数据库中的访问控制,包括特殊情况 _admin 角色,表示管理员用户。结合 CVE-2017-12636(远程代码执行),这可以用来让非管理员用户以数据库系统用户的身份访问服务器上的任意 shell 命令。

2.8.2. 缓解措施

所有用户应升级到 CouchDB 1.7.12.1.1

从同一系列的先前 1.x 和 2.x 版本升级应该是无缝的。

使用早期版本的用户的或从 1.x 升级到 2.x 的用户应查阅升级说明。

2.8.3. 示例

JSON 解析器差异导致的行为是,如果 JSON 中存在两个 roles 键,则第二个键将用于授权文档写入,但第一个 roles 键将用于随后对新创建用户的授权。根据设计,用户不能给自己分配角色。此漏洞允许非管理员用户给自己赋予管理员权限。

我们通过更新 CouchDB 在 Erlang 中解析 JSON 的方式解决了这个问题,模仿了 JavaScript 在存在重复键时选择最后一个键的行为。

2.8.4. 致谢

此问题由 Max Justicz 发现。