You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "angela (JIRA)" <ji...@apache.org> on 2016/08/03 18:45:20 UTC

[jira] [Comment Edited] (OAK-4301) Missing protection for system-maintained rep:externalId

    [ https://issues.apache.org/jira/browse/OAK-4301?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15406132#comment-15406132 ] 

angela edited comment on OAK-4301 at 8/3/16 6:44 PM:
-----------------------------------------------------

Proposed patch including tests and documentation update.

[~tripod], maybe you want to take a closer look at this? the fix includes a configuration option that turns on protection of rep:externalId by default. as stated above using a dedicated mixin type was not feasible without major rewrite of the whole module and i decided to just impose the protection using the {{ExternalIdentityValidatorProvider}}.

With this enabled:
- writing {{rep:externalId}} is limited to the system session with 1 single exception (i.e. adding user/group + external id) to keep the xml-import of external users working. [~tripod] if you have the impression that this was not needed, we could prevent writing altogether.
- {{rep:externalId}} must be of type STRING and single valued
- {{rep:externalId}} must be unique
- the restrictions imposed by {{rep:externalPrincipalNames}} remains unchanged


was (Author: anchela):
Proposed patch including tests and documentation update.

[~tripod], maybe you want to take a closer look at this? the fix includes a configuration option that turns on protection of rep:externalId by default. as stated above using a dedicated mixin type was not feasible without major rewrite of the whole module and i decided to just impose the protection using the {{ExternalIdentityValidatorProvider}}.

With this enabled:
- writing {{rep:externalId}} is limited to the system session with 1 single exception (i.e. adding user/group + external id) to keep the xml-import of external users working. [~tripod] if you have the impression that this was not needed, we could prevent writing altogether.
- {{rep:externalId}} must be of type STRING and single valued
- the restrictions imposed by {{rep:externalPrincipalNames}} remains unchanged

> Missing protection for system-maintained rep:externalId 
> --------------------------------------------------------
>
>                 Key: OAK-4301
>                 URL: https://issues.apache.org/jira/browse/OAK-4301
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: auth-external
>            Reporter: angela
>            Assignee: angela
>            Priority: Critical
>              Labels: security
>             Fix For: 1.5.8
>
>         Attachments: OAK-4301.patch
>
>
> while working on OAK-4101 i noticed that the current implementation doesn't provide any protection for the system maintained property {{rep:externalId}}, which is intended to be an identifier for a given synchronized user/group within an external IDP.
> in other words:
> - the system doesn't assert the uniqueness of a given external-id
> - the external-id properties can be changed using regular JCR API 
> up to now i didn't manage to exploit the missing protection with the current default implementation but i found that minor (legitimate) changes have the potential to turn this into a critical vulnerability.
> therefore I would strongly recommend to change the default implementation such that the rep:externalId really becomes system-maintained and prevent any unintentional or malicious modification outside of the scope of the sync-operations. furthermore uniqueness of this property should be asserted.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)