Igor Delac created ZOOKEEPER-4727:
-------------------------------------
Summary: zNode deleted despite not having access rights (zNode
with ACL)
Key: ZOOKEEPER-4727
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4727
Project: ZooKeeper
Issue Type: Bug
Components: java client, server
Affects Versions: 3.8.1
Reporter: Igor Delac
Hello,
I've found a problem with Zookeeper, allowing any client to delete a zNode
regardless of the ACL set for the zNode.
I'm not sure if this issue is for the ordinary JIRA ticket, or the issue is a
vulnerability problem.
Here are steps I used, to reproduce the problem:
1) Create zNode /users.
2) Create zNode /users/john.
[zk: localhost:2181(CONNECTED) 1] create /users
Created /users
[zk: localhost:2181(CONNECTED) 2] create /users/john
3) Set auth.scheme digest, with password 'john123' on the zNode /users/john.
3.1) Generate digest for the user john and password john123.
root@dev-id-client:/opt/zookeeper-3.8.2# java -classpath 'lib/*'
org.apache.zookeeper.server.auth.DigestAuthenticationProvider john:john123
16:02:56.377 [main] INFO
org.apache.zookeeper.server.auth.DigestAuthenticationProvider - ACL digest
algorithm is: SHA1
john:john123->john:SNEZzLxGQHaYcjRvU8KnG1WX9rU=
root@dev-id-client:/opt/zookeeper-3.8.2#
3.2) Assign ACL for the zNode /users/john.
[zk: localhost:2181(CONNECTED) 6] setAcl /users/john
digest:john:SNEZzLxGQHaYcjRvU8KnG1WX9rU=:cdrwa
[zk: localhost:2181(CONNECTED) 7]
4) Test the access to the zNode /users/john. Try to read the ACL.
[zk: localhost:2181(CONNECTED) 7] getAcl /users/john
Insufficient permission : /users/john
[zk: localhost:2181(CONNECTED) 8]
Here the response makes sense. Because of the zNode ACL set, access is denied.
5) Try to delete the zNode /users/john.
[zk: localhost:2181(CONNECTED) 8] delete /users/john
[zk: localhost:2181(CONNECTED) 9]
I'd expect here to see *Insufficient permission* message.
6) Verify that zNode was successfully deleted.
[zk: localhost:2181(CONNECTED) 9] stat /users/john
Node does not exist: /users/john
[zk: localhost:2181(CONNECTED) 10]
7) whoami command shows the following.
[zk: localhost:2181(CONNECTED) 10] whoami
Auth scheme: User
ip: 127.0.0.1
[zk: localhost:2181(CONNECTED) 11]
In my opinion, delete operation should not be possible if the zNode access was
rejected, eg. *getAcl* fails with {*}Insufficient permission : /users/john{*}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)