[ 
https://issues.apache.org/jira/browse/SENTRY-1034?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Kolbasov updated SENTRY-1034:
---------------------------------------
    Description: 
A possible info leak in the way how beeline connects to databases and uses the 
ACLs to prevent seeing unauthorised databases and tables.

It turns out that one can connect to a database that one should not see, but 
listing it afterwards gives no tables. This is still somewhat a security breach 
as an attacker can gain insight what databases exist.

The way the problem got identified:
 root@prod-vm-cdh-mgr-01 ~]# kinit -kt ~test_mval.keytab test_mval 
 [root@prod-vm-cdh-mgr-01 ~]# beeline 
 Beeline version 1.1.0-cdh5.4.8 by Apache Hive 
 beeline> !connect jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD
 scan complete in 6ms 
 Connecting to jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD 
 Enter username for jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD: 
 Enter password for jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD: 
 Connected to: Apache Hive (version 1.1.0-cdh5.4.8) 
 Driver: Hive JDBC (version 1.1.0-cdh5.4.8) 
 Transaction isolation: TRANSACTION_REPEATABLE_READ 
 0: jdbc:hive2://host:10000/testdb> show databases; 
 -----------------+
 database_name
 -----------------+
 test_mvaldb
 default
 -----------------+ 
 2 rows selected (0.726 seconds) 
 0: jdbc:hive2://host:10000/testdb> show tables; 
 -----------+
 tab_name
 -----------+ 
 -----------+ 
 No rows selected (1.033 seconds) 
 0: jdbc:hive2://host:10000/testdb> !quit 
 Closing: 0: jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD
 [root@foo ~]# beeline 
 Beeline version 1.1.0-cdh5.4.8 by Apache Hive 
 beeline> !connect 
jdbc:hive2://host:10000/asdasdasdasd;principal=hive/_HOST@ABCD 
 scan complete in 2ms 
 Connecting to jdbc:hive2://host:10000/asdasdasdasd;principal=hive/_HOST@ABCD
 Enter username for 
jdbc:hive2://host:10000/asdasdasdasd;principal=hive/_HOST@ABCD: 
 Enter password for 
jdbc:hive2://host:10000/asdasdasdasd;principal=hive/_HOST@ABCD: 
 Connected to: Apache Hive (version 1.1.0-cdh5.4.8) 
 Driver: Hive JDBC (version 1.1.0-cdh5.4.8) 
 Transaction isolation: TRANSACTION_REPEATABLE_READ 
 0: jdbc:hive2://host:10000/asdas> show tables; 
 Error: Error while processing statement: FAILED: Execution Error, return code 
1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database does not exist: 
asdasdasdasd (state=08S01,code=1) 
 0: jdbc:hive2://host:10000/asdas> !connect 
jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD
 Connecting to jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@ABCD
 Enter username for jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD: 
 Enter password for jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD: 
 Connected to: Apache Hive (version 1.1.0-cdh5.4.8) 
 Driver: Hive JDBC (version 1.1.0-cdh5.4.8) 
 Transaction isolation: TRANSACTION_REPEATABLE_READ 
 1: jdbc:hive2://host:10000/testdb> show tables; 
 -----------+
 tab_name
 -----------+ 
 -----------+ 
 No rows selected (1.09 seconds) 
 1: jdbc:hive2://host:10000/testdb> 
 1: jdbc:hive2://host:10000/testdb> 
 1: jdbc:hive2://host:10000/testdb> 
 1: jdbc:hive2://host:10000/testdb> 
 1: jdbc:hive2://host:10000/testdb> 
 1: jdbc:hive2://host:10000/testdb> !quit; 
 Unknown command: quit; 
 1: jdbc:hive2://host:10000/testdb> !quit; 
 Unknown command: quit; 
 1: jdbc:hive2://host:10000/testdb> !quit

  was:
A possible info leak in the way how beeline connects to databases and uses the 
ACLs to prevent seeing unauthorised databases and tables.

It turns out that one can connect to a database that one should not see, but 
listing it afterwards gives no tables. This is still somewhat a security breach 
as an attacker can gain insight what databases exist.

The way the problem got identified:
root@prod-vm-cdh-mgr-01 ~]# kinit -kt ~test_mval.keytab test_mval 
[root@prod-vm-cdh-mgr-01 ~]# beeline 
Beeline version 1.1.0-cdh5.4.8 by Apache Hive 
beeline> !connect 
jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@MITKDC 
scan complete in 6ms 
Connecting to jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@MITKDC 
Enter username for 
jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@MITKDC: 
Enter password for 
jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@MITKDC: 
Connected to: Apache Hive (version 1.1.0-cdh5.4.8) 
Driver: Hive JDBC (version 1.1.0-cdh5.4.8) 
Transaction isolation: TRANSACTION_REPEATABLE_READ 
0: jdbc:hive2://vm-cdh-01:10000/testdb> show databases; 
-----------------+
database_name
-----------------+
test_mvaldb
default
-----------------+ 
2 rows selected (0.726 seconds) 
0: jdbc:hive2://vm-cdh-01:10000/testdb> show tables; 
-----------+
tab_name
-----------+ 
-----------+ 
No rows selected (1.033 seconds) 
0: jdbc:hive2://vm-cdh-01:10000/testdb> !quit 
Closing: 0: jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@MITKDC 
[root@prod-vm-cdh-mgr-01 ~]# beeline 
Beeline version 1.1.0-cdh5.4.8 by Apache Hive 
beeline> !connect 
jdbc:hive2://vm-cdh-01:10000/asdasdasdasd;principal=hive/_HOST@MITKDC 
scan complete in 2ms 
Connecting to 
jdbc:hive2://vm-cdh-01:10000/asdasdasdasd;principal=hive/_HOST@MITKDC 
Enter username for 
jdbc:hive2://vm-cdh-01:10000/asdasdasdasd;principal=hive/_HOST@MITKDC: 
Enter password for 
jdbc:hive2://vm-cdh-01:10000/asdasdasdasd;principal=hive/_HOST@MITKDC: 
Connected to: Apache Hive (version 1.1.0-cdh5.4.8) 
Driver: Hive JDBC (version 1.1.0-cdh5.4.8) 
Transaction isolation: TRANSACTION_REPEATABLE_READ 
0: jdbc:hive2://vm-cdh-01:10000/asdas> show tables; 
Error: Error while processing statement: FAILED: Execution Error, return code 1 
from org.apache.hadoop.hive.ql.exec.DDLTask. Database does not exist: 
asdasdasdasd (state=08S01,code=1) 
0: jdbc:hive2://vm-cdh-01:10000/asdas> !connect 
jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@MITKDC 
Connecting to jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@MITKDC 
Enter username for 
jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@MITKDC: 
Enter password for 
jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@MITKDC: 
Connected to: Apache Hive (version 1.1.0-cdh5.4.8) 
Driver: Hive JDBC (version 1.1.0-cdh5.4.8) 
Transaction isolation: TRANSACTION_REPEATABLE_READ 
1: jdbc:hive2://vm-cdh-01:10000/testdb> show tables; 
-----------+
tab_name
-----------+ 
-----------+ 
No rows selected (1.09 seconds) 
1: jdbc:hive2://vm-cdh-01:10000/testdb> 
1: jdbc:hive2://vm-cdh-01:10000/testdb> 
1: jdbc:hive2://vm-cdh-01:10000/testdb> 
1: jdbc:hive2://vm-cdh-01:10000/testdb> 
1: jdbc:hive2://vm-cdh-01:10000/testdb> 
1: jdbc:hive2://vm-cdh-01:10000/testdb> !quit; 
Unknown command: quit; 
1: jdbc:hive2://vm-cdh-01:10000/testdb> !quit; 
Unknown command: quit; 
1: jdbc:hive2://vm-cdh-01:10000/testdb> !quit


> Fix beeline connecting to db
> ----------------------------
>
>                 Key: SENTRY-1034
>                 URL: https://issues.apache.org/jira/browse/SENTRY-1034
>             Project: Sentry
>          Issue Type: Bug
>          Components: Core
>            Reporter: Istvan Vajnorak
>            Priority: Major
>
> A possible info leak in the way how beeline connects to databases and uses 
> the ACLs to prevent seeing unauthorised databases and tables.
> It turns out that one can connect to a database that one should not see, but 
> listing it afterwards gives no tables. This is still somewhat a security 
> breach as an attacker can gain insight what databases exist.
> The way the problem got identified:
>  root@prod-vm-cdh-mgr-01 ~]# kinit -kt ~test_mval.keytab test_mval 
>  [root@prod-vm-cdh-mgr-01 ~]# beeline 
>  Beeline version 1.1.0-cdh5.4.8 by Apache Hive 
>  beeline> !connect jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD
>  scan complete in 6ms 
>  Connecting to jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD 
>  Enter username for jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD: 
>  Enter password for jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD: 
>  Connected to: Apache Hive (version 1.1.0-cdh5.4.8) 
>  Driver: Hive JDBC (version 1.1.0-cdh5.4.8) 
>  Transaction isolation: TRANSACTION_REPEATABLE_READ 
>  0: jdbc:hive2://host:10000/testdb> show databases; 
>  -----------------+
>  database_name
>  -----------------+
>  test_mvaldb
>  default
>  -----------------+ 
>  2 rows selected (0.726 seconds) 
>  0: jdbc:hive2://host:10000/testdb> show tables; 
>  -----------+
>  tab_name
>  -----------+ 
>  -----------+ 
>  No rows selected (1.033 seconds) 
>  0: jdbc:hive2://host:10000/testdb> !quit 
>  Closing: 0: jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD
>  [root@foo ~]# beeline 
>  Beeline version 1.1.0-cdh5.4.8 by Apache Hive 
>  beeline> !connect 
> jdbc:hive2://host:10000/asdasdasdasd;principal=hive/_HOST@ABCD 
>  scan complete in 2ms 
>  Connecting to jdbc:hive2://host:10000/asdasdasdasd;principal=hive/_HOST@ABCD
>  Enter username for 
> jdbc:hive2://host:10000/asdasdasdasd;principal=hive/_HOST@ABCD: 
>  Enter password for 
> jdbc:hive2://host:10000/asdasdasdasd;principal=hive/_HOST@ABCD: 
>  Connected to: Apache Hive (version 1.1.0-cdh5.4.8) 
>  Driver: Hive JDBC (version 1.1.0-cdh5.4.8) 
>  Transaction isolation: TRANSACTION_REPEATABLE_READ 
>  0: jdbc:hive2://host:10000/asdas> show tables; 
>  Error: Error while processing statement: FAILED: Execution Error, return 
> code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database does not exist: 
> asdasdasdasd (state=08S01,code=1) 
>  0: jdbc:hive2://host:10000/asdas> !connect 
> jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD
>  Connecting to jdbc:hive2://vm-cdh-01:10000/testdb;principal=hive/_HOST@ABCD
>  Enter username for jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD: 
>  Enter password for jdbc:hive2://host:10000/testdb;principal=hive/_HOST@ABCD: 
>  Connected to: Apache Hive (version 1.1.0-cdh5.4.8) 
>  Driver: Hive JDBC (version 1.1.0-cdh5.4.8) 
>  Transaction isolation: TRANSACTION_REPEATABLE_READ 
>  1: jdbc:hive2://host:10000/testdb> show tables; 
>  -----------+
>  tab_name
>  -----------+ 
>  -----------+ 
>  No rows selected (1.09 seconds) 
>  1: jdbc:hive2://host:10000/testdb> 
>  1: jdbc:hive2://host:10000/testdb> 
>  1: jdbc:hive2://host:10000/testdb> 
>  1: jdbc:hive2://host:10000/testdb> 
>  1: jdbc:hive2://host:10000/testdb> 
>  1: jdbc:hive2://host:10000/testdb> !quit; 
>  Unknown command: quit; 
>  1: jdbc:hive2://host:10000/testdb> !quit; 
>  Unknown command: quit; 
>  1: jdbc:hive2://host:10000/testdb> !quit



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to