angela created OAK-1115:
---------------------------

             Summary: Remove of Subtree after Move is not subjected to 
permission validation
                 Key: OAK-1115
                 URL: https://issues.apache.org/jira/browse/OAK-1115
             Project: Jackrabbit Oak
          Issue Type: Bug
          Components: core
            Reporter: angela
            Priority: Critical


the following test passes in Jackrabbit-Core but fails in OAK:

{code}
@Test
    public void testMoveRemoveSubTree() throws Exception {
        superuser.getNode(childNPath).addNode(nodeName3);
        superuser.save();

        /* allow READ/WRITE privilege for testUser at 'path' */
        givePrivileges(path, privilegesFromNames(new String[] 
{Privilege.JCR_READ, "rep:write"}), Collections.<String, Value>emptyMap());
        /* deny READ/REMOVE property privileges at subtree. */
        withdrawPrivileges(path, privilegesFromNames(new String[] 
{Privilege.JCR_REMOVE_NODE}), Collections.singletonMap("rep:glob", 
superuser.getValueFactory().createValue("*/"+nodeName3)));

        Session testSession = getTestSession();
        assertTrue(testSession.nodeExists(childNPath));
        assertTrue(testSession.hasPermission(childNPath, 
Session.ACTION_REMOVE));
        assertTrue(testSession.hasPermission(childNPath2, 
Session.ACTION_ADD_NODE));

        testSession.move(childNPath, childNPath2 + "/dest");
        Node dest = testSession.getNode(childNPath2 + "/dest");
        dest.getNode(nodeName3).remove();

        try {
            testSession.save();
            fail("Removing child node must be denied.");
        } catch (AccessDeniedException e) {
            // success
        }
    }
{code}

this is a critical security issue as it moving around the parent is sufficient 
in order to be able to remove a node that was otherwise not removable due to 
limited permissions.

Afaik this behavior is caused by a limitation in the Diff process which doesn't 
allow to identify the move and thus makes it impossible to find out if that the 
subtree has been removed.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to