You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by Andrew Purtell <ap...@apache.org> on 2015/05/25 18:32:54 UTC

CVE-2015-1836: Apache HBase remote denial of service, information integrity, and information disclosure vulnerability

CVE-2015-1836: Apache HBase remote denial of service, information
integrity, and information disclosure vulnerability.

Severity: Important

Vendor: The Apache Software Foundation

Versions Affected:

HBase 0.98.0 - 0.98.12
HBase 1.0.0 - 1.0.1
HBase 1.1.0

The unsupported HBase 0.96 versions are also affected.

Description:

A logic error caused HBase in most secure configuration deployments to
handle its coordination state in ZooKeeper via insecure ACLs. Anyone with
remote unauthenticated network access to the ZooKeeper quorum, which by
definition includes all HBase clients, can make use of this opening to
degrade or completely stop availability. Any user with the authentication
credentials needed to connect to the HBase cluster as a normal user can, in
some configurations, read newly written HBase data that they are not
authorized to see. We believe it is possible for any user with
authentication credentials for the underlying HDFS cluster to write
arbitrary HBase data. Work to confirm this last attack vector is ongoing
and this announcement will be updated when we have more information.


Mitigation:

HBase users should update to the latest hotfix release of their respective
version (e.g. 0.98.12.1, 1.0.1.1, 1.1.0.1) to ensure newly written
coordination information has the correct ACLs. Any of these hotfix upgrades
can be done via a zero downtime rolling upgrade[1]. Because this logic bug
can mask some configuration errors, users are encouraged to verify their
deployments prior to starting the upgrade process[2].

Once on an appropriate version, users *must* run through the following
sequence of ZooKeeper commands via the ZooKeeper cli as the hbase service
account. For more information on using the ZooKeeper cli in a secure set
up, refer to the ZooKeeper documentation[3].

    setAcl /hbase world:anyone:r,sasl:hbase:cdrwa
    setAcl /hbase/backup-masters sasl:hbase:cdrwa
    setAcl /hbase/draining sasl:hbase:cdrwa
    setAcl /hbase/flush-table-proc sasl:hbase:cdrwa
    setAcl /hbase/hbaseid world:anyone:r,sasl:hbase:cdrwa
    setAcl /hbase/master world:anyone:r,sasl:hbase:cdrwa
    setAcl /hbase/meta-region-server world:anyone:r,sasl:hbase:cdrwa
    setAcl /hbase/namespace sasl:hbase:cdrwa
    setAcl /hbase/online-snapshot sasl:hbase:cdrwa
    setAcl /hbase/region-in-transition sasl:hbase:cdrwa
    setAcl /hbase/recovering-regions sasl:hbase:cdrwa
    setAcl /hbase/replication sasl:hbase:cdrwa
    setAcl /hbase/rs sasl:hbase:cdrwa
    setAcl /hbase/running sasl:hbase:cdrwa
    setAcl /hbase/splitWAL sasl:hbase:cdrwa
    setAcl /hbase/table sasl:hbase:cdrwa
    setAcl /hbase/table-lock sasl:hbase:cdrwa
    setAcl /hbase/tokenauth sasl:hbase:cdrwa


Credit:

This issue was discovered by Paul Codding and Enis Söztutar.


References:

1: http://hbase.apache.org/book.html#hbase.rolling.upgrade
2: http://hbase.apache.org/book.html#_external_zookeeper_configuration
3: http://s.apache.org/Rgo